The cue
Polarization adds information beyond intensity. It helps distinguish surface orientation, material response, and specular effects that can look similar in ordinary rendered images.
European Conference on Computer Vision (ECCV), 2026
1Max Planck Institute for Informatics 2VIA Research Center 3Saarland Informatics Campus 4Google
Project Summary
Differentiable Polarized Path Tracing makes polarized inverse rendering practical. Polarization reveals surface and material cues that intensity images discard, but standard path replay becomes unstable when polarized light transport requires inverting rank-deficient Mueller matrices. DPPT avoids this inversion by caching suffix radiance along each path, enabling stable reverse-mode gradients with much lower memory than conventional automatic differentiation.
Physically based differentiable rendering has proven to be a powerful tool for inverse rendering problems (e.g., 3D reconstruction, reflectance estimation, lighting estimation). However, most existing methods operate solely on radiometric intensity, discarding valuable polarization cues that constrain scene geometry and material properties. While forward simulation of polarized light is well-defined via Mueller-Stokes calculus, extending reverse-mode differentiation to this domain presents significant challenges. The rank-deficient nature of common polarimetric operators, such as linear polarizers and diffuse reflections, violates the invertibility assumptions of standard gradient estimators like path replay backpropagation and results in numerical instability. We address this by proposing a robust, polarization-aware differentiable path tracing method. Our approach estimates unbiased gradients through a combination of path replay and local caching. This formulation enables efficient and stable optimization of material and lighting parameters in complex scenes, broadening the applicability of physically based inverse rendering.
Overview
Intensity images measure how much light reaches the camera. Polarization also captures how light is oriented, revealing cues about surface shape, material response, and specular reflection that are otherwise difficult to separate.
Differentiable Polarized Path Tracing (DPPT) brings these cues into physically based inverse rendering. It extends path replay backpropagation with cached suffix replay, avoiding unstable Mueller-matrix inversions while keeping memory far below conventional automatic differentiation.
Polarization adds information beyond intensity. It helps distinguish surface orientation, material response, and specular effects that can look similar in ordinary rendered images.
In polarized rendering, light transport is represented with Stokes vectors and Mueller matrices. Common interactions such as diffuse reflection and linear polarizers can be rank-deficient, making standard path replay unreliable.
DPPT caches the suffix radiance along each sampled path. During replay, it loads this cached quantity directly instead of recovering it through an unstable matrix inverse.
Challenge
Path replay backpropagation is memory-efficient because it replays the same light path and locally cancels detached path contributions. In scalar rendering, this cancellation is just a division.
In polarized rendering, radiance is no longer a scalar. Light is represented by Stokes vectors, and each scattering event applies a \(4 \times 4\) Mueller matrix. The same replay step therefore becomes a matrix inverse.
This inverse is often not defined. Common polarimetric interactions, such as diffuse reflection or a linear polarizer, discard part of the incident polarization state. Their Mueller matrices are rank-deficient, so a direct polarized extension of PRB becomes unstable or produces incorrect gradients.
DPPT addresses this by avoiding the inverse altogether: instead of recovering the missing suffix radiance through \(\mathbf{M}^{-1}\), it caches the suffix during the primal pass and reuses it during replay.
Method
Standard polarized path replay tries to recover the remaining path contribution by undoing the current Mueller operator. This requires \(\mathbf{M}_i^{-1}\), which is not defined for rank-deficient polarized interactions.
DPPT avoids this recovery step. In the primal pass, it traces the sampled path, stores the local Mueller transport factors, and folds the path backward to build a suffix-radiance cache. During the adjoint replay, the same path is sampled again, but the remaining radiance after vertex \(i\) is loaded directly from the cache as \(L_{i+1}\). The local gradient can then be accumulated using the replayed prefix, the differentiated Mueller operator, and the cached suffix.
This keeps the path-replay structure of PRB, but removes the unstable inversion that makes a direct polarized extension unreliable.
Follow a sampled polarized light path and store the local transport factors.
Accumulate the remaining light contribution after every vertex, producing a suffix cache.
Replay the same path and use the cached suffix directly when computing local gradients.
Instead of recovering the suffix through a Mueller-matrix inverse, DPPT stores it once and reuses it during replay.
PRIMAL PASS
# Trace once and build the suffix cache
path = trace_path(ray)
for vertex in path:
store_emission(vertex)
store_mueller_transport(vertex)
suffix = fold_backward(path)
# suffix[i+1] stores the remaining radiance after vertex i
ADJOINT PASS
# Replay the same path and load cached suffixes
β = identity()
for i, vertex in replay_path(ray):
M = evaluate_mueller_operator(vertex)
# Use the cached suffix directly.
# No inverse of M is required.
grad += backward(β @ M @ suffix[i+1])
β = β @ M / pdf(vertex)
Results
We evaluate DPPT along four axes: gradient correctness, the diversity of polarization-dependent gradients, inverse-rendering reconstruction quality, and runtime/memory behavior for long polarized light paths.
DPPT closely matches conventional AD across reverse- and forward-mode gradient tests, while avoiding the unstable inverse used by direct polarized PRB.
Different polarizer configurations produce different gradient structures, revealing information that intensity-only rendering does not provide.
Polarized optimization improves material, texture, normal-map, and geometry recovery compared with unpolarized baselines.
Cached replay keeps memory far below conventional AD and is faster than the unbiased polarized RB baseline in the long-path benchmark.
We first verify that DPPT computes the right derivatives. Conventional automatic differentiation provides the reference gradients. DPPT closely matches this reference across scene parameters, while the noise-regularized polarized PRB baseline deviates when rank-deficient Mueller operators strongly affect the objective.
How to read the figure: lower relative error means closer agreement with conventional AD. P-PRB is fast but inaccurate in several polarized cases; DPPT matches AD without relying on unstable Mueller-matrix inversion.
Changing the analyzer configuration changes the derivative field. For roughness, specular reflectance, and surface normals, different polarization states reveal different spatial structures. These complementary gradients give inverse rendering additional cues for separating material and shape parameters.
Once the gradients are correct, polarization can be used directly inside inverse rendering. Across material, texture, polarizer-angle, and normal-map optimization tasks, DPPT uses polarized observations to recover parameters that are closer to the reference than an unpolarized PRB baseline. Conventional AD provides correct gradients, but it runs out of memory in several of these larger settings.
DPPT optimizes the polarizer angle and suppresses glare. Unpolarized PRB cannot differentiate this polarization parameter.
Cross/parallel polarized observations help separate diffuse and specular effects, improving texture and roughness recovery.
Polarized observations improve floor-texture reconstruction in the Living Room scene.
Multi-view polarized optimization recovers sharper normal details on the Marble Bust, especially in fine geometric regions.
We also combine polarized light transport with visibility-aware shape gradients. Under the same initialization and optimization schedule, polarized observations recover sharper details and more faithful silhouettes than the unpolarized baseline.
Polarized rendering is expensive because each RGB radiance value becomes a per-channel Mueller representation. DPPT avoids the full memory cost of conventional AD by using local suffix caches. In the long-path benchmark, it keeps memory low up to depth 32, remains far below conventional AD, and is approximately twice as fast as the unbiased polarized RB baseline.
Lower is better for both memory and runtime.
Takeaway: low runtime alone is not sufficient here—P-PRB is efficient but inaccurate. DPPT targets the useful operating point: correct gradients with much lower memory than Conv. AD and lower runtime than P-RB.
Correct gradients, but high memory and OOM in large settings.
Low memory/runtime, but inaccurate gradients for rank-deficient polarized paths.
Unbiased gradients and low memory, but slower runtime in the long-path benchmark.
Correct gradients with much lower memory than AD and faster runtime than P-RB.
Hybrid Extension
Fully cached DPPT is efficient for the path depths used in our main inverse-rendering experiments. For deeper paths, however, storing a suffix at every interaction increases the local cache size. The hybrid extension stores suffixes only at checkpoint intervals and recovers missing suffixes inside each block using a polarization-aware rule.
Here, \(\bar{\beta}\) is the detached block throughput since the last checkpoint, \(L_c\) is the cached suffix at the next checkpoint, \(\gamma\) controls when polarized replay is retained, and \(\epsilon\) prevents unstable inversion of near-singular Mueller matrices.
The depolarization index decides whether polarization still matters inside the block. If the block is effectively depolarizing, scalar PRB is sufficient. If polarization remains important and the block throughput is safely invertible, we recover the suffix by local inversion. Otherwise, we avoid the unstable inverse and recompute the missing suffix recursively.
Sparse checkpointing keeps memory approximately constant at larger path depths. The parameter \(k\) controls memory, while \(\gamma\) controls how often the algorithm stays in the polarized branch. In practice, \(\gamma = 0.9\) remains close to the fully cached method in runtime while preserving the lower-memory behavior.
The benchmark below uses the same long-path stress test as the main paper, but focuses on deeper paths. Larger checkpoint intervals reduce memory, while the depolarization threshold \(\gamma\) controls how often the algorithm stays in the polarized branch.
Hybrid benchmark at large path depths. Sparse checkpointing keeps memory nearly constant for longer paths. Runtime depends on \(\gamma\): when \(\gamma=0\), the polarized branch is selected more often, causing more recursive recomputation; with a practical threshold such as \(\gamma=0.9\), the hybrid method remains closer to the fully cached runtime while preserving the lower-memory behavior.
Lower is better for both memory and runtime.
The hybrid variant preserves the same gradient behavior as the fully cached method, while offering a different memory-runtime tradeoff.
Changing \(k\) and \(\gamma\) controls how much the hybrid method caches and when it recomputes, but the resulting gradients remain consistent with the fully cached method.
Brass Vase Roughness texture




Staircase Diffuse texture




RE = relative error to Conv. AD. Lower is better.
Both hybrid columns are the same algorithm with different checkpointing and depolarization settings.
A camera linear polarizer is optimized to suppress glare in the cooking area. This directly tests differentiation with respect to a polarization parameter.
Parallel and cross-polarized observations are used to jointly optimize plate roughness and diffuse texture, helping separate diffuse and specular effects.
The same parallel/cross-polarized setup is used for diffuse floor-texture reconstruction.
A 12-view polarized setup jointly optimizes surface normals and diffuse reflectance to recover a 1K normal map.
num_rays x path_depth buffer. In Dr.Jit, this is implemented with local memory through alloc_local, so memory use is bounded by concurrently active work items rather than by all paths in the image.
@InProceedings{rao2026dppt,
title = {Differentiable Polarized Path Tracing},
author = {Rao, Pramod and Riviere, Jeremy and Zhou, Xilong and Ghosh, Abhijeet and Meka, Abhimitra and Beeler, Thabo and Habermann, Marc and Theobalt, Christian and Vicini, Delio},
booktitle = {European Conference on Computer Vision (ECCV)},
year = {2026}
}
This work was supported by the ERC Consolidator Grant 4DRepLy (770784) and the Saarbrücken Research Center for Visual Computing, Interaction and AI. We thank Peter Kultis for helpful discussions, the anonymous reviewers, in particular Reviewer 3, for their constructive feedback and support, and Shrisha Bharadwaj for insightful discussions, careful proofreading, and invaluable support throughout the project.