ATMOS_FERA · v1 · Installation Architecture

Atmos_Fera

Planetary atmosphere as light, color, and duration in space
PSG Templates→ Spectral Extraction→ CIE/XYZ → sRGB→ Temporal Interpolation→ GLSL Shaders→ HAP Export→ MadMapper · Modul8→ HoloGauze + Fog→ KIKUNO Spatial Sound
STAGE 01⚛

Scientific Source Layer — PSG

NASA / Radiative Transfer
ATMOS_FERA begins at NASA's Planetary Spectrum Generator (PSG) — the scientific engine that provides atmospheric composition, light scattering, and solar geometry for each planet. This data is not illustrative. It is physically computed. Every color in the installation is derived from real radiative transfer.
SCIpsg.enginePlanetary Spectrum Generator▶
NASA's online radiative-transfer engine. Takes a configuration file describing a planet's atmosphere, geometry, and observation conditions; returns spectral radiance tables as text output. Core of the entire pipeline.
Inputs
→ Planet config file (.txt)
→ Atmospheric composition
→ Geometry + solar position
→ Viewing conditions
Outputs
← Spectral radiance (.rad)
← Atmosphere radiance
← Transmittance tables
← Scattering components
PSG spectral outputs (rad file): # wavelength total_rad atm_rad surface scatter trans 380.0nm 2.341e-3 1.820e-3 5.21e-4 1.23e-3 0.734 450.0nm 4.102e-3 3.281e-3 8.21e-4 2.67e-3 0.812 550.0nm 5.741e-3 4.122e-3 1.62e-3 2.91e-3 0.851
SCIpsg.geometryGeometry Modes▶
PSG offers multiple viewing geometries that determine how the atmosphere is sampled. Each geometry produces a different perceptual regime — from surface-level atmospheric halos to far-field disc observations.
Available Modes
→ Looking up (surface observer)
→ Dome view (hemisphere)
→ Far-field disc (orbital)
→ Beam / column geometry
Per-planet selection
← Different geometry per planet
← Artistic + scientific rationale
← Determines visual regime
STAGE 02⚙

Query / Config Layer — Templates

Forward Modeling
The workflow is not live telescope data. It is forward modeling from PSG templates. Each planet begins from a PSG configuration file, then geometry and parameters are tuned per planet and per perceptual goal — while staying within the scientific logic of that atmosphere.
CFGconfig.planetPlanet Template Selection▶
Each act begins with a planetary PSG configuration template. The template encodes the atmosphere's chemical composition, pressure profile, particle sizes, and solar distance.
Inputs
→ Planet selection
→ Reference PSG config
Outputs
← Base config .txt file
← Atmospheric constraints
CFGconfig.paramsArtistic Parameter Tuning▶
Within each planet's scientific constraints, geometry and parameters are modified toward the perceptual goal. This is the first artistic layer — the hinge point where science becomes compositional instrument.
Parameters Modified
→ Geometry mode
→ Beam / viewing setup
→ Solar angle / season
→ Scattering depth
Constraint
← Stays near scientific logic
← Tuned for affect
← Planet-specific
STAGE 03〰

Spectral Extraction Layer — Parsing

Custom Code / Data Tables
PSG outputs are text tables of spectral and geometric values. A custom parsing layer extracts the specific channels needed for the render pipeline. This is where ATMOS_FERA stops being scientific visualization and starts being a compositional instrument.
DATextract.spectralSpectral Value Extraction▶
Reads PSG .rad output files and extracts the channels relevant to visual rendering. Each channel corresponds to a physical phenomenon — total radiance, atmospheric scattering, surface contribution, and emissivity all carry different visual weight.
Values Extracted
→ Wavelength (nm)
→ Total radiance
→ Atmospheric spectral radiance
→ Single scattering contribution
→ Emissivity
Outputs
← Per-wavelength value arrays
← Scattering parameter tables
← Geometry lookup values
# PSG config → spectral extraction PSG config → PSG API → .rad tables ↓ parse: wavelength, total_radiance, atm_radiance single_scattering, emissivity, geometry_output ↓ structured arrays → color translation layer
DATextract.geometryGeometry + Scattering Tables▶
Geometry-derived outputs encode the angular relationship between sun, atmosphere, and observer. Scattering tables encode how particles interact with each wavelength — the physics behind why Jupiter's limb glows or Venus hazes orange.
Geometry Data
→ Solar elevation angle
→ Path length through atmosphere
→ Viewing direction
Scattering Data
← Extinction per wavelength
← Single-scattering albedo ω
← Phase function asymmetry g
STAGE 04◈

Color Translation Layer — CIE/XYZ → sRGB

Colorimetry / Render Prep
The most architecturally critical stage. PSG spectral radiance values are converted into displayable color using CIE color matching functions, then transformed into sRGB. The precise moment at which a number becomes light.
COLcolor.cieCIE Color Matching Functions▶
Spectral radiance values are weighted by the CIE 1931 standard observer color matching functions x̄(λ), ȳ(λ), z̄(λ). The result is a CIE XYZ tristimulus value — perceptually accurate color in a device-independent space.
Inputs
→ Spectral radiance I(λ)
→ CIE 1931 CMFs x̄ ȳ z̄
Outputs
← XYZ tristimulus values
← Perceptually accurate color
# Spectral → XYZ integration X = ∫ I(λ) · x̄(λ) dλ # 380–780nm Y = ∫ I(λ) · ȳ(λ) dλ # luminance Z = ∫ I(λ) · z̄(λ) dλ # XYZ → linear sRGB (D65 white point) [ R ] [ 3.2406 -1.5372 -0.4986 ] [ X ] [ G ] = [ -0.9689 1.8758 0.0415 ] · [ Y ] [ B ] [ 0.0557 -0.2040 1.0570 ] [ Z ]
COLcolor.srGBsRGB Image Values + Render Prep▶
After XYZ conversion, values are gamma-encoded to sRGB and prepared for the render pipeline. HDR radiance values are scaled per planet into color LUT textures that will drive the GLSL shader layer.
Inputs
→ XYZ tristimulus values
→ HDR radiance data
Outputs
← sRGB image values
← Color LUT textures
← Shader-ready buffers
STAGE 05⏱

Temporalization Layer — Interpolation

Scientific Sampling + Cinematic Motion
The visual render is not a single static PSG frame. Atmospheric states are sampled at intervals (~45s) and frames between samples are interpolated. The motion is partly scientifically derived, partly cinematic — a durational structure built from sparse physical measurements.
TIMEtime.sampleAtmospheric State Sampling▶
PSG is queried at intervals across a parameter arc. Each query is a physically computed anchor point. The ~45s interval balances computation time against temporal resolution needed for the installation duration.
Sampling Parameters
→ Sample interval: ~45s
→ Solar elevation arc
→ Atmospheric state series
→ Viewing angle sequence
Outputs
← Sparse key frames
← Scientifically anchored states
# Temporal sampling strategy for each planet_act: for t in range(0, act_duration, ~45s): config.solar_elev = interpolate(arc, t) config.atm_state = sequence[t] query PSG → store key_frame[t]
TIMEtime.interpFrame Interpolation + Camera Motion▶
Between PSG key frames, intermediate frames are computed by interpolation. Camera movement, drift, and compositional motion are added as a separate layer — the cinematic dimension.
Interpolation
→ Key frame array
→ Smooth interpolation curve
→ Frame rate target
Camera Layer
← Drift + orbital motion
← Compositional pacing
← Full rendered sequence
STAGE 06◉

Scene Rendering Layer — GLSL Shaders

KodeLife · Custom Code · GPU
PSG-derived numerical values feed a custom GLSL shader environment in KodeLife, where each planet's atmosphere is spatialized and stylized into luminous moving scenes. Each planet has different scene logic, different perceptual behavior, different chromatic and kinetic character.
GLSLrender.shaderKodeLife GLSL Environment▶
Custom GLSL shaders transform PSG-derived color and scattering values into atmosphere-like visual fields — density gradients, halo geometry, limb brightening, chromatic aberration at the horizon.
Inputs
→ sRGB color buffers from PSG
→ Scattering parameter tables
→ Geometry values
→ Interpolated frame data
Shader Outputs
← Atmospheric density fields
← Halo + aureole geometry
← Limb brightening / darkening
← Auroral motion
// Per-planet atmosphere shader (conceptual) uniform sampler2D u_spectral_lut; // PSG-derived uniform float u_scatter_g; // HG asymmetry uniform vec3 u_solar_dir; // geometry uniform float u_density; // optical depth void main() { vec3 atm_color = texture(u_spectral_lut, uv).rgb; float phase = HG(dot(view, u_solar_dir), u_scatter_g); fragColor = vec4(atm_color * phase * u_density, 1.0); }
GLSLrender.planetPlanet-Specific Scene Logic▶
Each planet has its own shader behavior — its own perceptual regime. The collection of planets forms a dramaturgical arc through distinct atmospheric worlds.
Planet / ActAtmospheric CharacterPrimary Effect
JupiterDense band structure, NH₃ clouds, extreme gas pressureBanded density, limb glow
VenusCO₂ opacity, sulphur haze, diffuse solar diskHalation, deep amber saturation
TitanN₂ / CH₄ haze, orange photochemical smogDiffuse chromatic gradient
NeptuneBlue methane absorption, extreme distanceDeep cold blues, ice scintillation
GLSLrender.artisticArtistic Parameter Layer▶
Artistic parameters added above the scientific layer: waviness, haloing intensity, auroral motion speed, atmospheric density drift, camera parallax. Tuned compositionally — they do not violate the scientific data, they inhabit its range.
Parameters
→ Waviness / turbulence
→ Halo intensity
→ Auroral motion
→ Density gradient
→ Camera drift speed
Constraint
← Within scientific range
← Compositionally determined
← Per-planet tuning
STAGE 07▶

Playback Codec Layer — HAP Export

GPU Codec / Media Server
Rendered scenes are exported as HAP video files — the GPU-accelerated codec required by the visual-effects tools in the live chain. HAP decompresses on the GPU, enabling real-time compositing at installation resolution.
CODECcodec.hapHAP Video Export▶
HAP (and HAP Q, HAP Alpha) is a family of GPU-decodable video codecs designed for real-time performance contexts. The rendered sequences are output as HAP .mov files — one per planet act, plus atmospheric transition sequences.
Inputs
→ Rendered frame sequences
→ Per-planet acts
Outputs
← .mov (HAP / HAP Q)
← GPU-decodable stream
← Ready for media server
# HAP export per act planet_jupiter_act.mov → HAP Q planet_venus_act.mov → HAP Q planet_titan_act.mov → HAP Q planet_neptune_act.mov → HAP Q transition_01→02.mov → HAP Alpha
STAGE 08⇄

Live Routing Stack — Syphon · MadMapper · Modul8

Media Routing / VJ / Performance
HAP files feed into a live performance routing stack: Syphon for GPU-side texture sharing, MadMapper for projection surface calibration to the HoloGauze, and Modul8 for live compositing, act cueing, and timeline control.
ROUTElive.syphonSyphon — GPU Stream Routing▶
Syphon routes rendered frames between applications in real time on the GPU — zero-copy texture sharing on macOS. Allows KodeLife GLSL output to be passed directly into MadMapper or Modul8.
From
→ KodeLife GLSL render
→ HAP player output
To
← MadMapper (mapping)
← Modul8 (compositing)
MAPlive.madmapperMadMapper — Projection Surface Calibration▶
MadMapper handles projection mapping — calibrating the output to the exact geometry of the HoloGauze screen, accounting for curvature, keystone, and the specific distance geometry of the space.
Inputs
→ Syphon stream or HAP playback
→ Screen geometry data
→ Projector throw configuration
Outputs
← Calibrated projector signal
← Warped / fitted projection
VJlive.modul8Modul8 — Live Compositing + Cueing▶
Modul8 functions as the live performance layer — compositing multiple HAP streams, cueing planetary acts, managing transitions, and enabling real-time layering.
Functions
→ HAP stream playback
→ Act cueing + transitions
→ Layer compositing
→ Timeline control
Outputs
← Composited live signal
← → to MadMapper
STAGE 09◎

Projection Architecture — Membrane + Volume

HoloGauze · Fog · Volumetric Light
The screen is not the endpoint. It is a membrane in a volumetric light ecology. The projector is aimed toward the audience. Screens capture some light and transmit the rest. Fog catches beam paths. The audience receives both image and atmosphere — light in space, not image on surface.
PROJECTOR 2 m 3 m HOLOSCREEN 3×2 m FOG VOLUME AUDIENCE partial transmission partial capture 1 m each side
PROJproj.screenHoloGauze / Semi-transparent Screen▶
The silver-coated semi-transparent screen functions as a membrane — not a surface. Part of the light is captured as a floating image. Part passes through into the fog and toward the audience.
Physical Spec
→ Dimensions: ~3 × 2 m
→ Semi-transparent silver coat
→ HoloGauze / HoloLens type
Geometry
← Projector–screen: 2 m
← Screen–audience: 3 m
← 1 m each side
PROJproj.fogFog Volume + Beam Geometry▶
Smoke machines fill the space between screen and audience. The projector beam becomes a visible light column in the fog. Planetary atmospheres are not just seen on the screen — they are encountered as volumetric halos.
Equipment
→ Smoke machines (multiple)
→ Projector (audience-facing)
Effect
← Beam paths made visible
← Volumetric light halos
← Room-filling atmospheric density
STAGE 10◈

Spatial Sound Layer — KIKUNO

Compositional Infrastructure
Sound is not background. It is compositional infrastructure — a parallel system running alongside the visual chain, sharing the same planetary act structure. KIKUNO is a custom spatial audio configuration developed for ISO's main hall.
AUDIOsound.kikunoKIKUNO Spatial Audio System▶
KIKUNO is a custom spatial audio configuration for the ISO main hall. It distributes sound spatially — as a designed acoustic field that maps to the visual atmospheric structure.
System
→ Custom hall configuration
→ ISO main hall geometry
→ Spatial distribution design
Outputs
← Atmospheric sound field
← Spatially distributed audio
← Per-planet acoustic regime
AUDIOsound.dramaturgyShared Atmospheric Dramaturgy▶
Visual and audio systems share a dramaturgical structure — the planetary act sequence. Sound composition, spatial distribution, and visual pacing are interdependent. AI shapes both visual and spatial sound relationships in response to the same atmospheric state logic.
Shared Control
→ Planetary act structure
→ Atmospheric state
Interdependencies
← Visual density ↔ sound density
← Fog ↔ spatial diffusion
← Act transitions (shared)
OVERVIEW⬡

Complete Signal Flow

PSG TEMPLATES
→
SELECT PLANET / GEOMETRY / BEAM
→
PSG SPECTRAL TABLES
→
CUSTOM PARSING CODE
→
CIE / XYZ COLOR MATCHING
→
sRGB IMAGE VALUES
→
INTERPOLATION + CAMERA MOTION
→
GLSL SHADER / KODELIFE
→
HAP EXPORT (.mov)
→
SYPHON STREAM
→
MADMAPPER · MODUL8
→
PROJECTOR OUTPUT
→
HOLOSCREEN (MEMBRANE)
+
FOG VOLUME
→
LIGHT IN SPACE
PARALLEL ↕   KIKUNO SPATIAL SOUND — planetary act structure / acoustic field