The same arrival clock.
The optical length includes refractive index × distance inside the glass. Volume vertices and receiver hits come from the same scene and Snell construction. The Gaussian window moves through both. Camera orbit changes projection; it does not select a different image pose.
The surface textures store linear flux density in receiver coordinates. A hit distributes its energy between two adjacent optical bins; playback weights the stored slices with the selected window. Changing the window does not retrace or rebake.
A bake with an explicit domain.
Scene, glass IOR, source, fog and spatial kernel are fixed. Compact mode uses 128 × 128 × 16 with 32,768 rays. Fine mode uses 256 × 256 × 64 with 131,072 stratified rays and a 3.5 cm spatial kernel. It takes longer to prepare and stores 64 MiB of HDR texels; the finer time samples make a thin moving receiver band much easier to read. Finite texture and time sampling can differ from direct splats, especially for narrow windows. This small atlas is not necessarily smaller in memory; it replaces thousands of receiver draw instances with one texture lookup pass. Only slices inside the current window need texture reads.
Volume sheets, clamped view Jacobians, finite kernels and beauty reconstruction are biased. This is a synchronized source-clock preview, not a converged multiple-scattering or camera-arrival estimator. The source RGB colour is not a spectrum.
What travels with the drawing.
Official Rive draws the projected contour and moving optical ray marks from ordinary vector shapes. WebGL draws the retained medium and textured receiver. Export packages the actual atlas, receiver samples and volume attributes; reopening uses those stored records and makes no new transport solve.
This is a self-contained RIVX Suite, not an ordinary all-in-one .riv, a signed GPU Canvas document or a general native .rivx player. Fixed-view conversion to keyed .riv images or vectors is a separate bake choice.