RadianceLab · Native implementation document

Record a frontier experiment

Open the native lab, choose a favorable or difficult scene, and preserve the method, settings and raw film alongside a recording.

This pass adds Frontier transport to RadianceLab's Optics & primitive laboratory. It runs native C++ experiments and retains a progressive floating-point film. It is a deliberately restricted research instrument inside the application, not a new universal PPIntegrator strategy or an import path for arbitrary editor scenes.

The existing main renderer remains available independently. None of these launchers overwrites the ordinary prism.json or imgui.ini: each prepares a separate session under build/showcase-sessions/ using the newest build whose CMake source directory is this checkout.

Start a recording

Double-click Frontier-Studies.bat for the rotational atlas, or run these commands in this repository:

.\Frontier-Studies.ps1 -Study rotational
.\Frontier-Studies.ps1 -Study tri-sheets
.\Frontier-Studies.ps1 -Study cache
.\Frontier-Studies.ps1 -Study main-planes
.\Frontier-Studies.ps1 -Study refracted-disk

The first three open the frontier research tab. main-planes opens the existing chromatic light loom (scene 88) in the main PP renderer with strategy 12: UV + UT + VT plane MIS. It is a useful production-implementation companion to the research instrument; it does not silently substitute that first-scatter estimator for the new three-scatter experiment.

The main-planes option opens the main renderer; refracted-disk opens the separate Glass: hourglass + disk research tab. Refracted-Disk.bat is its direct launcher. That experiment compares two charts of the same light → glass → single-scatter chain, with no medium scattering before the glass. Read its native scope and controls before comparing the films.

-PrepareOnly prints the isolated session path without launching a window. Build the current application first with Rebuild-RadianceLab.bat if the launcher reports that no current-checkout binary is available.

Inside an ordinary RadianceLab session, open Optics & primitive laboratory from the application menu, then choose Frontier transport.

The three native studies

Study What the image represents Good first recording Expose the limitation
Rotational atlas A restricted two-medium-scatter transport integral. Cylinder, cone, hyperboloid and distance-distance plane are different coordinate charts of one target. Start with Slit / favorable, Balanced atlas + plane. Show the path colors, let the film settle, then orbit a little and let accumulation restart. Switch to Fine obstruction / adverse or a single chart. Show the noisy or sparse image before returning to the balanced suite. This is not a universal variance advantage.
Three-scatter sheets Three flight distances on a photon-side path. Keep one distance sampled and solve the other two together with camera distance; balance the three choices. Start Slit / favorable, Balanced three sheets. Compare Retain distance 1 / 2 / 3 while keeping the scene and display exposure fixed. Fine occlusion and poorly conditioned connections can reject many samples or produce large weights. Compare against Independent reference, allowing enough accumulation to assess it.
Shadow atlas Conditional visibility over a luminous ruled sheet, with opaque blockers. This is a field study rather than a full radiance solution. Use Clear support or a broad slit, then compare Trace exact visibility, Cache only, and Cache + signed residual. Keep exposure fixed. Record exact-query counters with the image. Choose the fine-obstruction setup and reduce atlas resolution. Cache-only can leak. Signed correction retains negative contributions and can be noisy; fewer exact queries do not automatically mean faster equal-error convergence.

The scene names identify favorable and adverse examples, not guaranteed outcomes for every camera, medium coefficient or sample budget.

The rotational balance uses a fixed positive allocation to the plane chart, not an adaptive switch after a bad sample. The plane is a complementary support chart; the UI therefore says Balanced atlas + plane.

What the subpath colors mean

The path overlay starts enabled:

These are projected representative path topologies, not the particular Monte Carlo sample currently updating a pixel. The retained image comes from independent per-pixel connections. Turn the annotations off for a clean beauty shot only after recording the explanation.

The conditional shadow atlas uses different labels: amber is a sheet support guide, cyan is the visibility query to its fixed endpoint. It does not disguise a conditional endpoint query as a camera subpath.

In these native physical films, pink is an intermediate leg, not an independently sampled third subpath. The browser's tridirectional bridge explicitly has a separately proposed medium subpath. That proposal study and the native three-scatter distance-sheet suite are different constructions. Likewise, the browser's crossed light-plane/camera-plane intersection is not relabeled as the native three-sheet estimator.

Controls that matter on camera

  1. Scene, method and medium: choose the comparison before waiting for the film to settle. Changes reset accumulation, so old contributions never survive a different target.
  2. Camera: drag directly on the image to orbit. Motion resets the film; stopping lets it refine. Home camera restores the intended composition.
  3. Resolution: 240 × 150 starts quickly. Use 160 × 100 to explore; raise to 320 × 200 or 480 × 300 for a static capture. Higher resolution genuinely increases work, rather than adding a smoothing filter and calling it more samples.
  4. Pause accumulation / Resume accumulation: freeze the film while explaining it. Restart film clears it. There is no preset pass-count ceiling.
  5. Display exposure and glow: these change presentation, not the accumulated linear values. Keep the same settings when comparing methods.
  6. Recording view: hides the setup column and enlarges the film while retaining the pause, restart and save controls. Toggle back to change the setup.
  7. Save PNG + linear film: writes beauty.png, signed floating-point linear-signed.pfm, and a complete settings.txt into a timestamped research-exports/frontier-* folder inside the isolated session. PNGs omit UI/path annotations; record the application window if those annotations are part of the explanation.

Hidden research tabs do no sampling. Opening this panel does not change the selected scene integrator, material state or main renderer film.

Cache comparison, without an ambiguous “fixed” toggle

Trace exact visibility is the baseline. Cache only (biased) uses the frozen approximation. Cache + signed residual adds an independent positive-probability exact check and the signed difference divided by its selection probability. The negative terms are retained until tone mapping; clipping them inside the estimator would change the target.

Changing the blocker or atlas resolution rebuilds the cache and starts a new film. This native panel does not deliberately keep stale geometry. The earlier shadow-cache report retains a separate stale-cache failure experiment. Low-resolution silhouette errors already provide a clear adverse case for the interactive panel.

The counters distinguish exact runtime queries from atlas-build queries. Report both for a performance comparison; the image alone is insufficient evidence of a speedup.

Suggested short sequence

Record one attractive settled frame, enable its subpaths and identify their ownership, change one parameter, then show the film recovering. Finish with a deliberately difficult setup. Twenty seconds of this sequence can communicate more than a long tour of every slider.

For the main-renderer companion, launch -Study main-planes: start with the three colored shafts, use the PP strategy controls to compare the three-plane mixture with a single UV/UT/VT plane, and show the main renderer's primitive display separately. This demonstrates that the project contains both a scene-based rendering pipeline and small instruments for testing proposed extensions.

Scope and evidence

The restricted targets, reference algorithms, signed accumulation and geometry invariants are implemented in src/render/FrontierLab.* and checked by tests/test_frontier_lab.cpp. The retained native image, controls and GL upload live in src/research/FrontierRenderLab.*; tests/test_research_receivers_ui.cpp exercises startup tabs at two window widths.

These are bounded experiments with beauty and failure cases. They do not prove a general speedup, support arbitrary heterogeneous editor media, or finish the browser's tridirectional/crossed-sheet proposal families. The earlier physical suite and frontier overview remain useful context, with their own provenance and narrower claims.