Skip to main content

Line animation rendering

Shared phase textures, effects and immutable paths on GL and native backends

Per-path phases now use unfiltered R32Float textures instead of storage buffers. WebGL2 and native backends use the same effect formulas. Each row holds64 paths, so4096 paths need at most64 rows. Frame updates change phase data and small uniforms without uploading path geometry again. Double-precision time is normalized before upload, preserving fractional speed and long-running playback.

lineAnimation identifies GL rendering; sceneLinePlayback / sceneTracks identify shared controllers and tracks. Matching versions expose all three as true. Check their capabilities separately; see shared line playback and style tracks.

Run the complete Rust rendering example in the matching map-core repository:

cargo run --locked -p sqs-map-render --example line_phase_texture -- gl OUTPUT_GL
cargo run --locked -p sqs-map-render --example line_phase_texture -- vulkan OUTPUT_VULKAN

Actual GL and Vulkan devices, requested with zero storage buffers, each render4096 paths and verify39 pixel samples across3 frames, row boundaries, fractional speed and a long clock. Geometry is built once. Existing composed-effect checks separately cover flow, dash, reveal, arrows, glow, patterns, caps, visibility and ordering. Both actual adapters are software llvmpipe; this does not establish hardware, physical mobile devices or a complete common line script.

The next phase connects layer identity, source revision, scene ownership, controls/completion and atomic material preparation. Applications continue to provide their own UI. Public API and script documentation will update together; rendering support alone does not complete the controller task.

lineAnimation identifies GL rendering; sceneLinePlayback / sceneTracks identify shared controllers and tracks. Matching versions expose all three as true. Check their capabilities separately; see shared line playback and style tracks.