RadianceLab · Native implementation document

Research extensions and scope

Separate working paths, controlled research experiments and directions that still need an estimator.

Audit date: 2026-09-13. Read alongside the estimator support matrix. This document separates working native code, bounded experiments, and broader research proposals. No whole-renderer correctness or performance claim is inferred from a UI label.

Surface primitives and translation derivatives

Existing foundations

The PP renderer already exposes parameterized ray families, projected Jacobians, a stable analytic sphere-hourglass solver, a triangle BVH for mesh sheets, emitter sampling, and an independent surface caustic photon map. These are useful building blocks, but three similarly named operations must be distinguished:

  1. Ordinary surface shading: surfaceNEE, surfaceBSDF and surfaceSpec in PPIntegrator.cpp.
  2. Surface photon density estimation: ppSurfEmitPhotons, KD-tree storage, and finite-radius disk gathering at receivers.
  3. An angular-sheet surface receiver curve: the additive PP33 route now traces conditional cone/meridian angular samples through real interfaces to a receiver. It is a native, restricted light-tracing experiment. It is not a general analytic curve-intersection solver or full surface-sheet MIS implementation.

For a smooth photon sheet and a smooth receiver, a transverse intersection is generically one-dimensional. The sampling measure is then a curve measure. A valid estimator must account for the two tangent spaces and the relevant coarea Jacobian; merely drawing their geometric intersection does not establish radiometric normalization. Tangent or coincident surfaces need separate treatment. Finite pixel footprints, visibility changes and branch multiplicity also matter.

Native PP33 receiver paths and complementary research workbenches

PPSurfaceCurves.inl adds a separate native strategy33. One emitter origin and one angular chart coordinate define a sheet; the remaining coordinate is stratified to form its receiver curve. Each ruling follows actual geometric-normal mirror/glass branches through the mesh-aware traversal. It stops at the first supported non-delta receiver, evaluates its BSDF, checks the camera connection, and converts flux to the finite camera pixel using a projection Jacobian. This is computed scene transport rather than a decorative line on the image.

The stochastic mode keeps random positions inside its angular strata and has no spatial kernel. A separate midpoint mode uses finite angular quadrature and optional screen blur; this is explicitly approximate. Neighboring rulings share a Fresnel stream, retaining each ruling's branch law while correlating the curve. Current limits include pinhole projection, geometric normals, closed non-overlapping glass, homogeneous extinction and no diffuse continuation after the receiver. The optional context layer shows camera-visible emission/specular paths; it is separate from the receiver splats. PP33 does not add cross-family surface MIS or temporal gating. Scenes107–109 pair it with a receiver atlas, two glass spheres and a four-glass relay; use the final runtime report to judge the actual first images.

The current extension lives in ResearchWorkbench.cpp and OpticsExperiments.h, separate from the ten main render modes. It provides controlled floor/sphere receiver intersections, a collimated quad footprint or finitely thick sheet, projected-flux cosine weighting, and receiver shadow checks. This is an actual computed receiver experiment, not a pasted schematic; its finite support is deliberately explicit.

The derivative study compares an analytic translation-edge response to a central finite difference using the same edge kernel. It tests the mechanism behind the proposed derivative primitive while keeping the illumination, parameter and smoothing assumptions visible. It is not a complete differentiable renderer with arbitrary materials, multiple scattering and changing visibility topology.

A second, additive LightTranslationLab now measures a source displacement in a snapshot of the user's actual scene. It supports a selected plane-backed area source with native emission profile0 or3, or an explicit point light, ordinary analytical receiver/occluder intersections and direct Lambertian reflection. The plane's triangle mesh supplies its area samples; arbitrary mesh-only emitters are not admitted. Identical camera and source random numbers produce central differences at epsilon and epsilon/2. Source geometry, distance, cosines and optional visibility all change in the displaced scenes. Thus it can expose edge changes that an interior-only analytic derivative misses, while retaining finite-epsilon bias and sampling noise. It has inspectable positive/negative images, convergence comparison and export. It is not automatic differentiation of PP33, arbitrary receiver meshes, non-Lambertian materials or multiple scattering.

For a translated footprint with indicator 1_A(x - a e), differentiating with respect to displacement a produces a signed boundary distribution. Against a smooth measurement f, the boundary term has the form

d/da ∫[A(a)] f(x) dx = ∫[∂A(a)] f(x) (e · n) dS

when the field f itself is fixed. Opposite edges have opposite sign. The finite difference of two translated volumes makes these positive and negative strips visible. In the zero-displacement limit those strips become the boundary term; they do not become an ordinary finite-valued interior field.

For a full renderer, f generally also changes: distance, geometry terms, emission direction, Fresnel/BSDF factors, attenuation, occlusion and pixel filtering may all contribute derivatives. “Translate the volume and draw its edge” captures the moving-support term in the controlled case, not all these terms automatically. This is the same reason differentiating only smooth arithmetic misses visibility-boundary contributions in differentiable ray tracing with edge sampling.

The old DiffRenderer.h declares ForwardAD, reparameterization, edge sampling and finite-difference methods, but no definitions or active calls were found. Its Dual<T> arithmetic works as a helper; the renderer API is a scaffold. The new bounded workbench should be described independently of that unused interface.

Next useful gates

These are bounded, meaningful steps. Wiring the old differential panel to an arbitrary signed image or to an unrelated post filter would not satisfy them.

Mesh hourglass and interactive preview

The sphere hourglass exploits rotational symmetry. Collinear glass spheres keep that symmetry; an off-axis follower changes the sheet family and requires more work. Arbitrary meshes add facet boundaries, normal changes, path-topology splits and multiple intersections, so the closed analytic sphere solver cannot simply be given a monkey mesh.

Mode32 takes a practical numerical route: trace angular rulings through actual triangle interfaces, join compatible neighboring paths into sheets, and gather camera intersections. The implementation includes a mesh BVH, homogeneous-medium attenuation, Snell/Fresnel transmission, internal TIR, chain propagation and selected camera-side specular paths. Adaptive subdivision reduces topology artifacts but unresolved branches are dropped. Finite angular resolution remains a source of bias. See the implementation and scene report.

The additive fast preview projects these sheets into a smaller image with smooth radiance interpolation, blur and an explicit tangency clamp. It sacrifices convergence guarantees for interaction speed and should remain an A/B choice. Its log marks it as a biased screen-space raster preview. The unmodified mesh-sheet gather is the appropriate comparison for that preview; the ordinary GPU tracer skips non-analytical meshes and cannot supply a matched reference here.

The next useful refinement is topology/error control: compare successive ruling counts, track dropped branches and projected energy, and separate build cost from gather cost. External reflected light families, fully spectral propagation and arbitrary multiple scattering are larger follow-ups, not small quality-slider changes.

Heterogeneous transport and high-dimensional emitters

Implemented, with distinct limits

Changing a uniform emitter to a procedural glowing cloud is therefore a real algorithmic change. A useful first extension would evaluate the existing swept-support contribution against a nonuniform emissivity field, with the exact source PDF carried through, then validate constant-density recovery. Sampling only bright voxels without updating selection and conditional PDFs would change the estimator.

For heterogeneous attenuation, introduce one shared medium interface: sigma_s(x), sigma_a(x), a valid majorant, bounded ray intervals, and a transmittance estimator. Use it consistently for light walks, eye walks and connection rays. A delta-tracked surviving walk already accounts for extinction probabilistically; connection rays need their own transmittance estimate. PBRT's volume integrator provides a concrete implementation of that distinction.

Recommended validation order: vacuum → homogeneous absorbing slab → homogeneous scattering slab → two ordered non-overlapping media → constant-valued procedural field → heterogeneous field. Check the same integral before making a speed comparison. A black/dim image due to omitted transport is not an efficient estimator.

The new scalar transport lab supplies a concrete reference

VolumeEstimatorLab implements collision sampling q/sigma, the surviving-track integral, and a ratio-tracked uniform endpoint for the same target integral q(t)T(t) dt. Homogeneous, oscillating and layered profiles have explicit valid majorants and independent reference quadrature. The lab shows actual accepted/null events, accumulated weights, running mean, standard error, cost and reset/pause controls. Its track-length score cancels the collision density only under the stated survival law; it does not claim that arbitrary higher-dimensional integrands become constant. The new PrismVolumeEstimatorTest passed 2,893,032 checks in the combined native test run. See equations and experiments.

Scenes103/104 are matching homogeneous/NoiseLab chambers, while105/106 normalize source flux across size and angular-profile changes. They expose existing backend behavior; the new scalar lab does not silently replace the GPU or UPBP tracking implementations. Those existing issues remain in the support matrix.

Temporal slicing, TOF, sonar, and wave optics

What the GPU transport path does now

pt_sky.glsl::tofModulationFactor combines light path, optional eye-path prefix, source phase/tilt and per-pixel sensor phase. The shader applies modulation and path-length gates at actual contribution sites. pathTrace.comp accumulates four phase buckets for the auto-shot recovery path. This is an implemented amplitude-modulated path measurement with geometric rays.

This is separate from tofCW.frag, which synthesizes phase images from the depth buffer to study wrapped/unwrapped recovery. Both are useful, but one is a rendered measurement and the other is a known-depth reconstruction experiment.

The subsequent projector-imaging pipeline corrected the four-bucket phase sign and added independently acquired coarse/fine phase measurements for ambiguity resolution. Its six calibrated acquisitions use an owned native GPU renderer; the new depth recovery does not consult known depth. The older postprocess still retains explicitly named GT-guided diagnostics, screen-coordinate approximations and buckets written before later light-tracer splats. Those limitations belong to that older route, not to a claim that the new acquisition is missing. The temporal support audit distinguishes them. Multipath, low modulation and sideband overlap can still prevent the new measurements from recovering first-surface range.

No dedicated acoustic-pressure/impedance sonar solver was found. A time-gated light pulse can illustrate travel-time geometry if units and propagation speed are explicitly remapped. It does not model an acoustic transducer, pressure phase, elastic boundaries or sound-frequency absorption. The “radar / sonar sweep” in UIManagerPanels.cpp is presentation, not evidence of physical sonar transport.

Temporal photon primitives remain a research extension

There is still no transient-kernel or arrival-time gate passed into PPIntegratorConfig, including the new surface33 branch. GPU TOF controls do not make the PP sphere, ball or hourglass time-sliced. The new independent support/time lab computes the geometry below; it must not be presented as a hidden native PP mode.

For a two-segment path from source l through scattering point x to camera c, a fixed total path length satisfies

|x-l| + |x-c| = L.

This is an ellipsoid of revolution when L > |l-c|. Fixing only the light segment instead gives a sphere centered at l. Treating the camera segment as part of the gate changes the level set; subtracting a known camera delay is a coordinate remapping, not removal of the physical flight time.

A temporal window K_epsilon(tau(x)-t0) gives finite thickness. As the window becomes a normalized delta and the level set is regular, the coarea rule introduces 1 / |grad tau|. More generally, one independent smooth time constraint reduces the support dimension by one: a three-dimensional support becomes a two-dimensional level surface; a four-dimensional parameter family becomes three-dimensional. The dimension count alone does not establish a usable intersection solver, unique spatial image or finite variance. Degenerate gradients and multiple branches must still be handled.

SupportIntersectionMath.h and SupportIntersectionLab.cpp now implement the first geometric gate: sphere/light-only and ellipsoid/source-plus-camera views, finite windows, a regular delta-limit surface integral and numerical quadrature. The visible spatial clipping is explicitly separated from the unclipped analytical readouts. Additional views show sphere/plane intersections and bounded spatial overlaps. This gives a computed explanation of dimension reduction and the coarea factor. The next step is to connect a corresponding finite kernel to an actual native PP deposit, then add area/volume emitters and multisegment prefixes. Keep path measure and time measure explicit before combining it with31 or a blur kernel.

Holography has both synthetic and rendered input

The active implementation is EngineVFX2.cpp → HoloDepthV2.cpp / PhaseUnwrap.cpp, not the unused class declarations in spectral/Holography.h.

Phase-modulating geometric radiance is not the same as propagating a coherent optical field. The old waveEquation.frag is a driven 2D screen-space scalar wave effect. It should not be described as arbitrary-scene optical diffraction.

The additive research workbench supplies a separate, real scalar complex-amplitude calculation: angular-spectrum FFT propagation and Fraunhofer diffraction, with physical wavelength/aperture/distance controls and power readouts. The far-field phase includes the output-plane quadratic phase, and the UI reports a Fresnel-number warning when the far-field approximation is inappropriate. It is a useful wave-optics foundation with inspectable numerical output. It does not provide arbitrary-scene coherent multibounce transport, polarization or electromagnetic boundary solving. Its PrismResearchTest target checks FFT against independent DFT, power behavior, complex far-field phase, double-slit phase response and derivative convergence; the final build report records the test result.

Enhanced raster: a practical appearance path with explicit boundaries

The additive EnhancedRasterRenderer combines full-resolution raster geometry with a reduced-resolution vacuum GPU surface guide, a selected PP scattering film, and Beer attenuation on the visible camera leg. It mixes linear images and applies display mapping once. Depth checks keep a mesh omitted by the GPU guide from being replaced by that guide's background. Fast hourglass/mesh-sheet previews disable their separate surface and ordinary-fog companions inside this composite.

This is an opt-in biased preview, not complete hybrid transport. The surface guide lacks medium attenuation along secondary paths and general triangle transport; a single PP family may omit other scattering classes. Procedural media retain the legacy volume display, and overlapping homogeneous volumes have an explicitly approximate summed camera extinction. Independent/shared sampling and actual raster-gather availability are reported separately. The scope and A/B fixtures are the authoritative usage guide. CPU/GPU migration work should preserve these distinctions rather than treating a GPU-displayed CPU film as a GPU estimator.

Choosing a strategy combination before rendering

Geometric dimension and shape names do not define complementarity. The quantities to compare are the induced densities on the same target measure, the regions where each vanishes or becomes numerically unstable, and the cost of generating/evaluating a sample. Disk+sphere is not intrinsically better than sphere+plane for every camera and emitter.

For a one-sample mixture with normalized proportions alpha_i, common-measure densities p_i(x), and integrand f(x), let q(x)=sum_i alpha_i p_i(x). The basic second moment is ∫ f(x)^2/q(x) dx. This identifies the useful question: does a partner add density where the existing mixture is weak and the contribution matters? A lower unweighted Jacobian correlation is only a proxy. It ignores illumination, visibility, support and cost.

Practical preflight diagnostics can use inexpensive geometry samples to report support holes, overlap, quantiles of inverse projected Jacobians, estimated second moments, candidate pixels and source-profile weights. Rank combinations at a fixed time budget, with uncertainty, rather than inventing a universal score. Reuse/projection cost matters particularly for photon spheres whose screen coverage is large.

The implemented strategy31 already provides controlled subset comparisons, including UV+sphere. Its seven kernel-free choices share a measure. Its three curve choices retain finite-radius bias; cross-group choices are an explicitly labeled fixed blend. Full cross-measure MIS requires the matching extended formulation, as in the original UPBP work, not merely treating every displayed weight as dimensionless.

Correlated and uncorrelated schedules can have equal per-pixel expectations but different variance of image-wide statistics, cache/rebuild cost and temporal stability. Correlation does not by itself create a different singularity order. An always-rendered silhouette may cost more because it produces many candidates and repeats the same difficult configurations; an infinite value at a mathematical measure-zero tangent is a different issue from a nonintegrable neighborhood or a finite-precision root error. Use common primitive batches, separate build/gather timing, and sample-tail statistics before assigning causality.

Priority and project framing

Next step Practicality Completion criterion
Paired source/medium/surface presets Implemented catalogue88–109 plus older ring-alt/chain rigs New scene tests pass; runtime capture must show the requested backend/strategy, not only a nonzero image.
Keep mesh32 fast preview additive Bounded performance engineering Preview/gather A/B, explicit approximation controls, camera/scene invalidation and build/gather timing.
Surface33 plus scene translation, volume/support and wave workbenches Implemented bounded research routes Retain restricted path/geometry assumptions, numerical gates and actual image validation; separate from full-renderer correctness claims.
Correct homogeneous survival and mixture PDFs Focused changes with wide consequences Known-answer gates per backend plus representative image regressions. Make legacy/new comparison explicit before changing old results.
General shared heterogeneous medium transport Substantial Correct majorants, event continuation, all connection-ray attenuation, overlapping media and spectral/channel handling.
General surface-sheet MIS / arbitrary-scene derivatives / native transient PP family Research-scale extensions beyond the new bounded routes Derivation of measure, support and branch handling; independent oracle; shrinking/kernel and variance studies.
Full manifold exploration New solver work, not a UI improvement Actual constraint Newton solve, reversible proposals and correct acceptance factors, as distinguished from the present specular-aware mutation prototype. See Jakob and Marschner's algorithm.

The strongest accurate framing is an interactive rendering laboratory with broad implemented routes and unusually inspectable experimental estimators. State which results are measured and which constructions are exploratory. Unpublished follow-ups gain credibility from controlled failures, explicit assumptions and reproducible evidence—not from calling an unfinished generalized solver complete.