Skip to main content

Module render

Module render 

Source
Expand description

The render seam: take an AnalysisFrame, drive the active preset’s system, draw one frame.

The render loop is driven by the frontend at display cadence and is fully decoupled from audio delivery — the ring buffer is the seam (CLAUDE.md). Cycling moves between loaded presets (ADR-0002); each preset names a built-in system and binds its parameters to expressions the renderer evaluates from the analysis frame plus the shared scene clock.

Re-exports§

pub use aux_target::AuxCounts;
pub use aux_target::AuxPresentMode;
pub use capture::CaptureImage;
pub use capture::FrameTap;
pub use context::AdapterChoice;
pub use context::AdapterDescription;
pub use context::RenderContext;
pub use context::RenderError;
pub use context::list_adapters;
pub use scenes::lines::CapOverflow;
pub use text::TextRun;
pub use tier::REFERENCE_PX;
pub use tier::Tier;
pub use tier::TierConfig;
pub use tier::attractor_budget;

Modules§

aux_target
The secondary present target: a second surface on the renderer’s existing device (ADR-0143).
capture
Headless offscreen capture: draw into a texture with no window and read the pixels back as tight RGBA (Plan 0013). Dev/agent tooling over the native Rust API — no dependency, no present.
context
wgpu device/surface ownership. All raw GPU access lives behind this layer (ADR-0001): scene code sees wgpu types, never a backend.
feedback
Reusable ping-pong offscreen field for stateful feedback scenes (ADR-0012).
metrics
Pure image metrics over CaptureImages (Plan 0013): pixel and shape difference plus coverage/spread, shared by the differential visual-QA tests and the shot CLI report.
now_playing
The now-playing banner: a core-owned, transient announcement of the current track (ADR-0110, Plan 0097).
overlay
The diagnostics debug overlay (Plan 0011): a final compositing pass that, when enabled, paints a translucent panel over the scene with a frame-time sparkline, a GPU-footprint bar, a numeric fps / frame-ms / MB readout, and the analysis block (Plan 0049): the four normalized levels and the downbeat estimator’s lock state.
palette
Shared palette system (ADR-0021, Plan 0020): one gradient baked once at load into a 256-entry RGB lookup table (LUT) that every shader-colored scene samples, replacing the per-scene hardcoded iq cosine palette().
preview
The program preview’s intermediate target and its letterbox geometry (ADR-0143).
scenes
Built-in scenes and the thin trait the renderer cycles through.
text
On-canvas text via glyphon (ADR-0009), behind the non-default text feature.
tier
Quality tiers: the engine’s capacity constants, resolved once (ADR-0045).

Structs§

AudioCapture
What one Renderer::capture_audio_after_warmup run produced.
HeadlessOptions
How to build a headless Renderer for capture (Plan 0013).
Renderer
Owns the GPU context, the built-in systems, and the loaded presets; renders one frame per call by evaluating the active preset into the active system.
RendererOptions
Construction-time options for an on-surface Renderer (Plan 0044).

Enums§

ParamError
Why a live parameter override was refused.
PixelOrder
The channel order the four bytes of a pixel arrive in, for a consumer reading frames off a pipe or a buffer (ADR-0187).
SampleBudget
Which of a tier’s two sample ceilings this renderer resolves against (ADR-0140).