browser inverse rendering workbench

Inverse Render Lab

WebGPU checking Checking WebAssembly availability

From image fitting to scene understanding

What does an image actually reveal?

A convincing render can hide the wrong geometry, material, or light. These three investigations make the difference visible: fit a scene, change the evidence, and inspect what remains uncertain.

Explore supporting work8 experiments · 3 guides

Smaller experiments

Executable studies that isolate one question from the main investigations.

Illustrated guides & reference

Build intuition and connect the methods. These views do not run an inverse solve.

Controlled synthetic experiments. Targets are known for evaluation; each panel states what its solver receives and what its display illustrates.

Target synthetic gem
Reconstruction analytic gradient
Residual loss 0.0000

Loss race

0 iterations

Gradient anatomy

norm 0.000

01 / Representation

Shape, material, and light reconstruction

A silhouette can match while the unseen shape is wrong. Fit an implicit 3D scene to calibrated images, then challenge it with a different view, a topology change, or missing fine detail. The residual shows where the current fit disagrees with the evidence.

Current shape loss 0.0000
Goal shape sphere
Inspection RGB residual audit pending 0 iterations

Volumetric inverse transport

32 samples per camera ray
Density model extinction pending
Forward transport emission-absorption integration
Image objective multi-view radiance residual

Explicit surface extraction

18^3 field samples queued
Optimized field 0 fit iterations / shape mix pending
Marching tetrahedra 18^3 grid / active cells pending
Triangle buffer explicit surface pending

Representation

implicit zero level set
Extraction grid

The default view ray-marches the fitted signed-distance field directly, preserving smooth topology changes during optimization.

Resolution

worker pending
Display
Working

Inspect camera

yaw 0, pitch 0

Motion

0 fps
Visual target
Step burst
Search method
Display backend
Searchpending Previewworker cadence
Reproducibility

Every number here is one draw. Fisher information is the usual alternative but is a local Gaussian approximation, and this lab has an exhibit it provably cannot see - the anisotropy branch, where two parameter sets give byte-identical images while the Fisher matrix reports full rank.

Every stochastic decision in this solver draws from one stream. A reported number is one draw from one seed - re-roll and re-run before treating a threshold as a property of the method. The manifest records the seed and a URL that restores this run.

Capture setup

4 calibrated views

Four calibrated views constrain side and rear geometry.

GPU mode

WebGPU initializing
benchmark idle

WebGPU is the preferred renderer and uses the same SDF normals, material model, ray-march budget, and cast shadows as the worker compatibility path.

Procedural latent recovery

six latent coefficients
Fit budget
Field slice + detail spectrumcurrent / target
Object-space color fieldcontrast / frequency
Displacement
pending
Noise frequency
pending
Pigment contrast
pending
Pigment frequency
pending
Extinction
inactive
Density width
inactive

Capture inspection

waiting for capture views

Switch capture setup to inspect the images and camera poses used by the optimizer.

Active next-view audit

waiting for held-out orbit

The planner evaluates held-out cameras and proposes the view with the largest residual-weighted information gain.

Worst held-outpending
Orbit meanpending
Covered sectorspending
Synthetic ground truth lets this demo measure actual novel-view error. A real system would replace that oracle with posterior disagreement or expected information gain.

3D parameter fit

idle

Fitting cube-like SDF parameters toward a smooth sphere target.

Geometry objective shape pending mask pending / depth pending / surface pending
Appearance objective RGB pending object pending / scene pending

Optimization trace

initializing
Estimator Adaptive pattern search, genuinely gradient-free
Update rule Accept the better +/- coordinate probe; shrink on rejection
Evidence optimized multi-view mask/depth + RGB samples
Residual canvas display-only, current inspection view

Fixed validation grid; adaptive search radius; best checkpoint retained.

shared inverse problem

Differential transport estimator workbench

Every lane receives the same filtered transport signal, target, initial shape and albedo, Adam update, and sample budget. Only the gradient backend changes.

auditing estimators
Transport case
Samples per gradient
Controlled variables Same primal + loss + Adam shape and diffuse albedo are optimized together

A hard shadow edge dominates the geometry signal. Attached replay misses the decisive boundary term.

Estimator samplesPath-space boundary estimator
Shared primal signal target pending / current pending
Derivative supportfull reference versus selected backend

Estimator contract

unbiased
Differentiatesattached paths plus boundaries
Bias statementpending audit
Storage / workpending
Best usepending
Initial biaspending
Gradient noisepending
Current cosinepending
Total work0

Equal-objective optimizer race

photometric loss versus path-equivalent work
Attached term replayable interior paths

BRDF, light, throughput, and replayable path vertices while sampled visibility stays fixed.

Boundary term edge, boundary, or warped-area samples

Silhouettes, shadow boundaries, and occlusion events where path support changes.

Photon term differentiated smooth photon kernels

Differentiate photon positions and smooth density kernels for difficult caustic paths.

03 / Measurement

Corner transport lab

A wall carries light from a scene the camera cannot see directly. Can that light recover a volume, an image, or only an angular profile? Change acquisition mode and follow the chain from the room geometry to sensor data to a measured reconstruction.

initializing Three.js
Forward operatorconfocal three-bounce transient A x
Measured evidence16x16 wall raster x 64 bins
InverseWiener Light Cone Transform
Valid outputnonnegative 3D albedo volume
Confocal wall scan 256 wall spots · 256 transient histograms Each histogram integrates a pulse train; it is not one laser pulse.
Acquisition scene camera + relay wall + hidden S benchmark
front-view MIP0 / 16 rows
Recovered hidden volume capture not started
Acquisition
Hidden object
Aperture

Occlusion adds no measurements; it makes the ones you have linearly independent.

The occluder losing to the edge here is a property of the 1D unknown, not of the occluder. Lifted to a 2D hidden scene it wins 70 usable directions to 16 — measured in the Coded Aperture lab.

Transient playback
bin 0

This is the measured tensor, not a light-transport rendering. Time zero is rectified at the wall: the forward model measures only the wall-object-wall leg, so the sensor-to-wall legs never appear. The expanding front is the hidden object's response, not the outgoing laser pulse.

Hidden surface
Reconstructor
Relay-wall raster
ready
0%
Measurement16x16 confocal raster x 64 bins
Computed inversequadratic resample + 3D Wiener FFT
Measured resultpending measurement
Claim boundaryscaled synthetic transient; ideal SPAD calibration
Physical resolution limitpending measurement

Measured sensor-space evidence

rectified confocal wall-time tensor
Truth isolation geometry is used only by the forward simulator and evaluator Inverse input measurement arrays only Active calibration co-located laser/SPAD, square matte-wall raster, rectified time zero Target response high-albedo retroreflective benchmark

02 / Appearance

Shape, maps, microstructure, and illumination

A highlight might come from shape, roughness, tiny facets, or the light itself. Fit a controlled procedural object from RGB, mask, and depth evidence, then freeze groups of factors to find out which explanation the measurements actually support.

initializing factor graph

Evidence12 calibrated RGB + mask + depth views
Forward modelP-NDF / joint factors
Gradient + updateworker finite differences + Adam
Solve scopejoint shape + material + light
Goal renderisolated forward truth
Current assetdisplay 360x240 / solve 14x14
Image-space residualRGB magnitude
Objectivepending
Iteration0
Geometry fit0%
Material fit0%
Lighting fit0%
Micro fit0%

Joint objective

RGB + silhouette + depth

Recovered parameters

bar: estimate / marker: held-out truth
Mesh profileeval pending
Base coloreval pending
Tangent normaleval pending
Displacementeval pending
Roughness / metaleval pending
Microstructureeval pending

Component ablation

per-group parameter RMSE against the synthetic truth vector; hollow bars are frozen by the active scope
Capture geometryposed orbit + unknown light
Local sensitivityfinite-difference dI/dtheta per channel
Scattering slicetarget / recovered / smooth GGX
Active model Discrete stochastic microfacets

Claim boundary What this executable does not hide

Shape
Scattering family
Factor ablation
Calibrated evidence
Working raster

physical participating media

Cloud density from rendered evidence

Compare calibrated tomography, sparse-view regularization, and a single-view posterior on the same 3D density field. The reconstruction receives rendered measurements only; target voxels are retained solely for the forward simulator and evaluation.

initializing volume kernel
Rendered evidence24 calibrated views / 24^3 voxels
Measurementradiance to optical depth
Inverse kernelworker SIRT kernel
Outputnonnegative 3D extinction field
Goal radianceheld-out angle
Current fieldemission-absorption render
Optical-depth residualheld-out evaluation
Evidence losspending
Iteration0
Input views24 views
Voxel IoU0.000
Density RMSE1.000
Posterior spread0.000

Measurement-space convergence

SIRT backprojection with positivity and smoothness
Camera orbitangles supplied to inverse
Measured image stackradiance to optical depth
3D density slicestruth / current
Differential ratio tracking64 stochastic paths
Transmittance estimatepending
Scale gradient estimatepending
Estimator roleunbiased gradient audit; analytic rays drive SIRT
Hypothesis Acompact depth
Hypothesis Bsplit depth
Hypothesis Cslanted depth
Hypothesis Dextended depth
Novel-view uncertaintyposterior spread
Active regime Calibrated multi-view optical tomography

Claim boundary Data, prior, and evaluator are separated

Evidence regime
Transport display
Voxel grid

measurement design workbench

Capture physics and local identifiability

Run four compact inverse problems with the measurements they actually require. Every lane exposes its progressive shot sequence, recovered quantities, residual, and local Fisher matrix instead of treating all photographs as equivalent RGB input.

ready
From measurements to a visible quantitymodel output

Acquisition sequence 0 / 6 light images
Capture rigOLAT hemisphere
Raw and fitted measurementswaiting for shot 1
Inverse resultunderdetermined

Measurement family

one light at a time

Target response

Matte ceramic

Capture budget

light images

Local observability audit

rank pending
Primary error
pending
Secondary error
pending
Measurement RMSE
pending
Effective rank
0 / 3
Entropy rank
pending
Condition number
infinite
Dominant ambiguity
capture not started
Unconstrained combination
pending
Auxiliary datumCurrent estimateRole
Directly observed surface normal + diffuse albedo
Still ambiguous depth, cast-shadow geometry, and unmodeled gloss
OLAT / photometricNormal field

Linear light stacks constrain normals and diffuse albedo; gloss and shadowing violate the baseline.

Stokes / polarizationReflection orientation

AoP and DoLP survive intensity changes, but normal branches and material class remain coupled.

Transient / ToFMetric range

Arrival time adds depth to radiance; a single sensor pixel still cannot recover lateral shape.

Bracketed / LDRHDR + response

Exposure diversity separates radiance from a compact camera curve until motion or clipping removes evidence.

supporting experiment / geometry + appearance

Surface extraction and reflectance fitting

Turn the fitted SDF into a measured triangle mesh, then explore a separate sparse-BSDF fitting experiment below. The direct-mesh, Gaussian-surface, and UV-atlas views illustrate possible pipelines; they are not additional solvers.

SDF / tet hybrid

The first panel slices the current fitted SDF. Marching tetrahedra turns that same field into the middle mesh. Compare it with the target on the right. Both meshes use neutral shading so material differences cannot disguise geometry.

1. Current fitted fieldcross-section · zero contour
2. Actual extracted trianglessame fitted field · measured mesh
3. Target surfacereference geometry · same camera

Field resolution
Occupancy IoU vs target fieldn/a
Mean SDF deviation (world units)n/a
Normal consistencyn/a
Extracted trianglesn/a

illustrated guide / hidden-object capture

How indirect light encodes a hidden scene

Time of flight encodes range; structured illumination encodes a reciprocal image; a passive edge encodes direction. Compare their measurements on the same hidden target. The last two panels illustrate the expected output of each acquisition regime.

active transient
1. Transport setup3-bounce paths
2. Raw measurementtransient histogram
3. Inverse shape · illustrationillustration, not a solve
4. Expected output · illustrationillustration, not a solve
Acquisition
Hidden target
Measurement budget
How to read this illustration

Panels 1 and 2 compute a forward measurement. Panels 3 and 4 draw the known target with mode-dependent blur and offset; they do not invert panel 2. The illustration-quality readout responds to budget and noise sliders, not to measured reconstruction accuracy.

For executable reconstruction, open 3D NLOS Scene: confocal LCT, Hadamard dual photography, and a calibrated edge-penumbra inverse receive measurement arrays, with ground truth kept in the forward simulator and evaluation.

Observablearrival time + photon count
Resolution cueToF range + scan position
Conditioningstrong depth, sparse photons
Primary failuremultipath and Poisson noise

Three ways to turn indirect light into an image

same target, different hardware and observability
Active transient

Pulsed or modulated illumination and time-resolved sensing isolate path length. Hardware is specialized, but range is much better constrained.

Dual photography

A projector emits many structured patterns while a camera records their responses. Helmholtz reciprocity turns the measured transport matrix into a virtual view from the projector.

Passive edge / penumbra

Ambient illumination and an ordinary RGB video use an edge as an angular encoder. Moving targets become a 1D space-time reconstruction; two edges or stronger priors are needed for depth.

representation growth

2D Gaussian splatting, and why splats do not relight

Anisotropic Gaussians composited front to back, fitted by a hand-derived analytic adjoint. The population is not fixed: splats whose centre the loss keeps pulling are cloned if small and split if large, and anything that goes transparent is pruned. That adaptive density control is the part that is actually the contribution of Gaussian splatting — rendering ellipses was never the hard bit.

idle
Targetshaded, with a specular lobe
Recoverycomposite with splat outlines
Residualwhere it will densify next
Loss and populationlog loss over splat count
Truth, relitlight moved after fitting
Recovery, same light requestunchanged, because it cannot
Fit
Splat budget
Populationinitializing Objectivepending

no densify pass yet

Press "Relight the recovery" after fitting. A splat carries a colour and no notion of a light, so whatever shading was present when it was fitted is baked into per-splat colour and the recovery simply does not change.

Scope. This is the two-dimensional case: no 3D covariance, no view-dependent spherical harmonics, no camera. Depth is an ordering key for compositing, not a coordinate, and the adjoint carries no term for it. Gaussians are cut at three sigma, which is a real approximation. The adjoint itself is checked against central differences to a worst relative error of 4e-9 across every parameter type, so the gradient is not the uncertain part.

On whether densification is worth it, measured rather than assumed: against a fixed population of the same final size, adaptive density control reaches a higher loss at equal iteration count. What it buys is cheap early iterations, so it only wins on wall clock — about 2.8x better at an eight-second budget, and a tie by twenty seconds. At this scale, with a simple target, knowing the right splat count in advance is worth more than placing them adaptively. That is not the regime the technique was designed for, and the honest reading is that this lane demonstrates the mechanism rather than vindicating it.

Computational cameras

What can a patterned aperture reveal?

A pattern can encode incoming direction or turn defocus into a distance cue. Explore the mask, follow the measurement, and compare the recovered image or depth with its evidence.

ready
Camera mask

The actual mask · white transmits, black blocks

Each direction shifts the same pattern

A distant point illuminates the sensor through a shifted copy of this mask. Every scene direction contributes its own weighted copy; the sensor records their sum. Reconstruction finds the angular image whose sum explains that exposure.

This view uses the selected mask with periodic boundaries. It recovers directions, not distance. Open Depth from coded blur for a lens-based camera that estimates range.

Ready to capture

1. Rendered target · evaluation only
2. Coded sensor exposure
3. Recovered angular image
4. Residual in sensor space
Frequency responsedark modes carry little evidence

A small residual can hide a poor image

Try the vertical slit: it loses one image axis. A fully open mask records total light. Both can explain the sensor while leaving the scene undetermined.

Fine and coarse coding trade detail against noise. The best mask depends on the scene and measurement budget.

Calibrated periodic-mask camera. The unknown is angular RGB radiance, not metric depth.

experimental — accidental and engineered optics

From defocus to distance

Two focus settings turn blur into a distance cue. Capture a shaded scene, fit its distance using only the two photographs, and inspect the recovered sharp image. The aperture statistics and waterdrop experiments explore other ways optics encode information.

idle

Capturing two focus settings…

1. Hidden sharp scene · evaluation only
2. Photograph · near focus
3. Photograph · far focus
4. Recovered from both photographs
Which distance explains both photographs?measurement-only fit

Two calibrated focus settings; one target-plane distance, not a depth map.

Experiment

layered appearance

A coat over a base is not two lobes

One physical stack — a rough dielectric coat of thickness d and extinction sigma over a base of albedo rho — evaluated three ways. Naive lobe addition is what an inverse solver reaches for by default. Statistical adding-doubling transports energy and directional variance in closed form. The position-free stochastic walk is unbiased under the plane-parallel assumption, so it is the reference the other two are scored against rather than a third opinion.

idle
One stack, three predicted appearancesmodel output

Angular slicethree operators, one stack
Variance additionrun the audit

The stochastic reference costs roughly 60 to 100 times the statistical operator, which is why it generates evidence in a worker rather than driving the solver. Compute the reference once, fit the cheap model to it.

Held-out illumination fitted on near-normal directions, evaluated at grazing
modeltrain RMSEheld-out RMSEgap
Recovered parameters the internal series is per-channel, not a tint
albedobase roughnesscoat roughness

What naive addition omits: internal reflection between the two interfaces, which is a per-channel geometric series rather than a tint; the 1/eta² solid-angle compression on the way in and back out; the roughness convolution that makes apparent base roughness a property of the whole stack; and absorption that depends on the refracted path length. Measured here, an albedo ratio of 4.00 between channels arrives as a response ratio of 6.74, and sweeping the true coat roughness inflates the recovered base roughness by about 1.5x while the true base never moves.

Boundaries. The statistical operator is an approximation: it degrades above coat roughness around 0.3 and over-blurs at grazing angles, which is why the stochastic reference is shown beside it rather than trusted implicitly — its visible scatter is a property of the estimator, not a rendering artifact. Both are plane-parallel: opposing-anisotropy stacks, non-plane-parallel geometry, spatially varying stacks, spectral rendering and polarization are not modelled. The naive baseline here is reciprocal, unlike the Weidlich-Wilkie construction it resembles; its failures are the ones measured above, not a reciprocity violation. And the held-out gap is real but modest at these settings — the literature reports far larger jumps on richer stacks, and the number shown is the one this lab measures.

volume lane

Density, SDF, and mesh proxies

Volumetric inverse rendering fits density, emission, scattering, and lighting. The hard step is converting between a fuzzy density field, a signed-distance surface, and a mesh without losing the view-dependent evidence the photos provided.

Volume target density render
SDF proxy iso-surface projection
Mesh proxy faceted shell
Mismatch proxy residual

Volumetric field

Best for smoke, clouds, translucent objects, and NeRF-style radiance fields. It can explain soft silhouettes that a hard mesh cannot.

Vol to SDF

Extracting an iso-surface gives an editable shape, but the chosen density threshold can erase wisps, translucency, and nested structure.

SDF to mesh

Marching cubes makes a renderable asset. Gradients then need either differentiable rasterization, differentiable path tracing, or a proxy loss.

Photo policy

A perfect setup adds calibrated views until uncertainty drops; imperfect setups test single-view ambiguity, sparse coverage, and camera bias.

research map

What the demo is actually comparing

The scene is deliberately small: a photo-sized target is matched by three differentiable ellipse primitives with color, opacity, position, radius, and rotation. That keeps the math visible while still showing the core inverse-rendering loop: render, compare, differentiate or search, then update the scene.

Autodiff

The tape records scalar operations and backpropagates through a stochastic pixel batch. It is flexible and close to modern differentiable renderers, but tape memory and visibility discontinuities become the hard parts.

Analytic

The same renderer has a hand-written adjoint for every primitive. It is usually faster and cleaner for this parameterization, but each new BRDF, visibility event, or geometry class needs careful derivation.

SPSA

Simultaneous perturbation estimates a useful gradient with two renders, no matter how many parameters exist. It is noisy, but it becomes attractive for black-box renderers and large parameter vectors.

Gradient-free

The evolution-strategy lane samples candidate scenes and keeps elites. It parallelizes beautifully and survives nonsmooth objectives, but spends far more render evaluations as dimensions grow.

How complex can this be right now?

prototype ceiling
Current browser demo

Tens of parameters, small images, soft silhouettes, color and opacity fitting, stochastic batches, and enough math to show why gradients help.

WebGPU next step

Thousands to millions of pixels or splats, batched candidate searches, SDF or Gaussian fields, mipmapped textures, analytic adjoints, and reductions on the GPU.

Research-grade stack

Multi-view calibrated capture, shape plus SVBRDF textures, environment lighting, visibility, shadows, indirect light, priors, and multi-stage coarse-to-fine optimization.

Technique frontier

2024-2026 direction
Family What it recovers Why it matters Possible browser implementation
Differentiable mesh extraction Triangle topology, vertices, normals, sometimes adaptive cells Produces asset-ready meshes while still optimizing through a field SDF or tetra grid first; marching tetrahedra/FlexiCubes later
Neural surface reconstruction Multi-view SDF, radiance, normals, camera poses Recovers detailed zero-level surfaces from RGB images without input depth Hash-grid SDF optimization offline; extracted mesh streamed to the browser
Gaussian surface extraction Surface-aligned 3D/2D splats plus mesh or implicit field Combines fast view synthesis with geometry suitable for export and editing WebGPU splat preview with Poisson, TSDF, or coupled SDF extraction
Mesh-splat joint optimization Connectivity, vertices, Gaussians, texture and normal attributes Keeps the rendering representation and downstream triangle asset consistent Alternating WASM mesh updates and WebGPU splat/raster losses
Feed-forward sparse-view mesh Camera, depth, point maps, mesh and material latents Amortizes reconstruction so a few images can initialize a usable asset quickly External model inference followed by browser-side geometric refinement
Texture-space differentiable rendering High-resolution albedo, roughness, metallic, normal maps Directly optimizes texels instead of only primitive color WebGPU texture arrays plus mip-aware adjoints
Sparse measured-BSDF fitting Analytic lobes, learned residuals, and sampling distributions Turns a few angular measurements into a compact relightable material WGSL evaluation with WASM fitting and physical projections
Gaussian inverse rendering Geometry, view-dependent appearance, material fields Fast capture-like assets with editable relighting targets WGSL splat rasterizer or ray-traced Gaussian kernels
Diffusion/material priors Plausible albedo, normals, depth, roughness, metallicity Breaks ambiguities that pixel loss alone cannot resolve External model call now; distilled tiny model later
Polarized / Stokes inverse rendering AoP, DoLP, normals, dielectric or conductor reflectance factors Adds orientation evidence that is absent from ordinary RGB intensity Rotating-analyzer capture now; neural incident-Stokes fields offline
Response-aware LDR inverse rendering HDR illumination, PBR material, geometry, and camera response Stops unknown tone curves and clipping from being baked into material Bracketed response fit now; joint scene factorization offline
Propagating-light inverse rendering Geometry and reflectance from time-resolved multi-bounce transport Illumination motion reveals paths and occluded structure beyond static images Transient histograms now; time-resolved neural caches offline
Progressive large inverse models Shape, material, and view-dependent radiance from a growing view set Amortized priors turn each added image into a progressively refined asset External inference followed by explicit browser-side audits
Path-space differentiable rendering Materials and lighting consistent with shadows and GI Forward render and gradients agree under global illumination Hybrid WASM optimizer with WebGPU path kernels
Volumetric inverse rendering Density, absorption, scattering, phase functions Handles fog, smoke, translucent media, medical and optical media Ray-marched fields first; differential tracking later
Active transient NLOS Hidden range and reflectance from time-resolved photon arrivals Path length turns indirect light into geometric constraints Confocal transient cube plus Wiener Light Cone Transform
Structured inverse transport Projector-camera transport matrices and reciprocal virtual views Recovers rich indirect appearance without picosecond timing Hadamard patterns, compressed capture, and transport transpose
Passive edge-resolved NLOS Hidden angular structure, motion, and sometimes coarse depth Works with an ordinary camera and uncontrolled illumination Edge-transfer inversion with explicit uncertainty

Representation side by side

2D, mesh, fields, Gaussians, volumes

2D primitives

Optimizes silhouettes, colors, curves, strokes, sprites, and layers directly in image space.

Best for
Icons, vector art, masks, fast teaching demos.
Hard part
View changes and lighting are mostly outside the model.

3D mesh

Optimizes vertices, pose, UV textures, normals, BRDF maps, and lights through rasterization or path tracing.

Best for
Editable assets, relighting, simulation, game pipelines.
Hard part
Visibility, topology changes, UV seams, and mesh quality.

SDF / neural field

Optimizes an implicit shape or radiance field sampled by rays, often with neural or grid parameters.

Best for
Smooth topology changes, multi-view reconstruction.
Hard part
Extraction, fine texture, speed, and physical factorization.

Gaussian field

Optimizes splat positions, covariance, opacity, features, and increasingly material attributes.

Best for
Fast capture, novel views, editable relighting research.
Hard part
Baked appearance, shadows, specular paths, and consistency.

Volume

Optimizes density, extinction, scattering, phase, emission, and heterogeneous media fields.

Best for
Smoke, fog, translucent media, tissue, tomography.
Hard part
Multiple scattering, free-flight gradients, and variance.

Research comparison matrix

what changes when the representation changes
Representation Optimized unknowns Gradient route Failure mode Validation signal
2D layers Coverage, transform, color, opacity, texture atlas Analytic raster/SDF derivatives, soft masks, SPSA Looks right only from the input camera Pixel loss, mask IoU, perceptual loss
3D mesh Vertices, pose, UV maps, normals, BRDF, lights Differentiable rasterization plus path-space estimators Topology, occlusion edges, baked lighting in albedo Novel view, relighting, geometry scan error
SDF / neural field Implicit surface, density, radiance, material grids Ray marching, eikonal terms, volumetric rendering Floaters, slow training, weak material disentanglement Novel view, extracted mesh, normal consistency
Gaussian field Means, covariance, opacity, features, normals, BRDF Splat rasterization, ray tracing, path-traced gradients View-dependent baked color masquerading as material Novel view, relighting, editing consistency
Volume Density, absorption, scattering, phase, emission Ray marching, differential tracking, score estimators High variance and ambiguous density/material tradeoffs Multi-angle capture, transmittance, relit transport

Research protocol knobs

the parts papers quietly fight over
Objective stack

Pixel L2 is the baseline. Research systems add mask loss, gradient/edge loss, perceptual loss, multi-scale pyramids, normal consistency, eikonal terms, BRDF priors, and relighting losses.

Data regime

Single image is most ambiguous. Multi-view reduces geometry uncertainty. Multi-light or OLAT capture is the real unlock for separating albedo, roughness, specular response, and illumination.

Estimator choice

Soft rasterization is biased but stable. Edge sampling and reparameterization handle visibility. Path replay and differential tracking make physically based gradients usable for path and volume transport.

Regularization

The inverse problem needs taste: smoothness where physics wants smoothness, sparsity where assets should be simple, priors where the image evidence is underdetermined, and uncertainty where answers are non-unique.

Benchmarking

Good evaluation asks whether the result survives new cameras and new lights. Stanford-ORB, OpenIllumination, controlled lighting datasets, and urban multi-illumination sets are more informative than training-view PSNR alone.

Browser plan

Keep the visible app interactive: small live demos in WebGPU, heavier benchmark presets as queued WASM/GPU jobs, and exported configs that can be run by Mitsuba, Dr.Jit, redner, or native research code.

Textures are practical now

Old demos often optimized color per vertex or per primitive. Newer pipelines optimize UV-space or surface-attached texture maps for albedo and SVBRDF parameters, usually with regularization and priors so the result relights instead of just matching pixels.

Shape, material, lighting

The hard part is disentanglement: many combinations produce the same image. Modern systems combine multi-view capture, lighting changes, physical constraints, learned priors, and differentiable visibility to separate geometry, BRDF, and illumination.

Gaussian assets

3D and 2D Gaussian approaches make reconstruction fast and detailed, but relighting needs more than baked color. The frontier adds spatially varying material attributes, ray tracing, and indirect illumination.

Volumetric path

Volumes are differentiable-friendly in topology but expensive in transport. Useful targets include density, emission, absorption, scattering, and phase parameters; serious gradients need careful free-flight and path sampling estimators.

WebGPU

Per-pixel rendering, residuals, reductions, candidate batches, raster primitives, SDF fields, and analytic gradient kernels are natural GPU work. Dynamic tape construction is less GPU-friendly unless the graph is compiled ahead of time.

WebAssembly option

WASM is the pragmatic lane for CPU SIMD, image preprocessing, small autodiff tapes, custom solvers, and browsers without WebGPU. It is also easier to share code with native renderers.

Hybrid path

A serious version would keep render and loss kernels on WebGPU, compile analytic or generated adjoints where possible, and use WASM for optimizer orchestration, image IO, and fallback kernels.

Paper trail

SIGGRAPH-heavy starting set
Li et al. 2018, Differentiable Monte Carlo Ray Tracing through Edge Sampling Loubet et al. 2019, Reparameterizing Discontinuous Integrands Nimier-David et al. 2019, Mitsuba 2 redner, differentiable rendering without approximation Laine et al. 2020, nvdiffrast Vicini et al. 2021, Path Replay Backpropagation Zhang et al. 2020, Path-Space Differentiable Rendering Nimier-David et al. 2020, Radiative Backpropagation Jakob et al. 2022, Dr.Jit Zhang et al. 2022, boundary integrals for path space Shen et al. 2021, Deep Marching Tetrahedra Gao et al. 2022, GET3D textured meshes Lin et al. 2023, Magic3D mesh refinement Shen et al. 2023, FlexiCubes mesh extraction Li et al. 2023, Neuralangelo neural surface reconstruction Guedon and Lepetit 2024, SuGaR surface-aligned Gaussians Huang et al. 2024, 2D Gaussian Splatting Guedon et al. 2025, MAtCha chart-based Gaussians Gao et al. 2025, SurfaceSplat Guedon et al. 2025, MILo mesh-in-the-loop Gaussians Chen et al. 2023, Text2Tex auto texturing Chen et al. 2023, Fantasia3D geometry and appearance Wang et al. 2024, Differentiable Rendering of SDFs Liang et al. 2025, DiffusionRenderer Sun et al. 2025, SVG-IR Gu et al. 2025, IRGS Zhu et al. 2026, path-traced Gaussian inverse rendering Kaleta et al. 2026, LumiMotion Nimier-David et al. 2022, inverse volume rendering Matusik et al. 2003, MERL measured BRDF database Liu et al. 2023, Learning to Learn and Sample BRDFs Boss et al. 2021, NeRD relightable textured meshes Sen et al. 2005, Dual Photography Velten et al. 2012, ultrafast ToF shape around a corner O'Toole et al. 2018, confocal NLOS Light Cone Transform Bouman et al. 2017, Turning Corners into Cameras Saunders et al. 2019, Computational Periscopy with an Ordinary Camera Rapp et al. 2020, Edge-Resolved Transient Imaging Cao et al. 2024, two-edge-resolved passive 3D NLOS Kuang et al. 2023, Stanford-ORB benchmark Liu et al. 2023, OpenIllumination Wang et al. 2026, LightCity