Integrators#

The Eradiate kernel provides volumetric path tracing integrators that extend Mitsuba’s volpath to address Earth observation use cases:

  • piecewise_volpath — handles piecewise-homogeneous plane-parallel atmospheres with a fast regular tracking algorithm.

  • eovolpath — a full-featured Earth observation volumetric path tracer. It extends volpath with EO-specific variance reduction methods and tracking estimators.

    Added in version 0.5.0.

Piecewise volumetric path tracer (volpath)#

Parameter

Type

Description

Flags

max_depth

integer

Specifies the longest path depth in the generated output image (where -1 corresponds to \(\infty\)). A value of 1 will only render directly visible light sources. 2 will lead to single-bounce (direct-only) illumination, and so on. Default: -1

rr_depth

integer

Specifies the minimum path depth, after which the implementation will start to use the russian roulette path termination criterion. Default: 5

hide_emitters

boolean

Hide directly visible emitters. Default: false

This plugin provides a piecewise volumetric path tracer that can be used to compute approximate solutions of the radiative transfer equation for plane parallel geometry. Its implementation makes use of multiple importance sampling to combine BSDF and phase function sampling with direct illumination sampling strategies. On surfaces, it behaves exactly like the standard path tracer.

This integrator only works with piecewise media. It uses assumptions on the medium’s geometry to accelerate the sampling and transmission calculations.

This integrator has special support for index-matched transmission events (i.e. surface scattering events that do not change the direction of light). As a consequence, participating media enclosed by a stencil shape are rendered considerably more efficiently when this shape has a null or thin dielectric BSDF assigned to it (as compared to, say, a dielectric or roughdielectric BSDF).

Note

This integrator does not implement good sampling strategies to render participating media with a spectrally varying extinction coefficient. For these cases, it is better to use the more advanced volumetric path tracer with spectral MIS, which will produce in a significantly less noisy rendered image.

Warning

This integrator does not support forward-mode differentiation.

EO Volumetric path tracer (eovolpath)#

Parameter

Type

Description

Flags

max_depth

integer

Specifies the longest path depth in the generated output image (where -1 corresponds to \(\infty\)). A value of 1 will only render directly visible light sources. 2 will lead to single-bounce (direct-only) illumination, and so on. (Default: -1)

rr_depth

integer

Specifies the minimum path depth, after which the implementation will start to use the russian roulette path termination criterion. (Default: 5)

rr_factor

float

Specifies the maximum probability to keep a path when russian roulette is evaluated. (Default: 0.97)

ddis_enable

boolean

Activate the DDIS variance reduction method. The ddis_threshold used to determine the probability of sampling using the emitter direction is set in the media plugins. (Default: false)

ddis_enable_surface

boolean

Activate ddis for surfaces when ddis_enable is true. (Default: true).

pbs_enable

boolean

Enable prediction-based path splitting (PBS). At each volumetric event, the predicted contribution of the ddis scattered direction is used to determine whether to split the path into multiple independent copies or to perform russian rouletter. Each split path has a proportionally reduced weight. Requires ddis_enable=true. (Default: false)

pbs_min_split_threshold

float

Minimum prediction weight required to trigger a split. Only paths whose predicted weight exceeds this value are split. Must be greater than 1 for splitting to produce more than one copy. (Default: 3.0)

pbs_max_split_count

integer

Maximum number of path copies created at a single splitting event. The actual count is min(pbs_max_split_count, floor(w_spl)), where w_spl is the split prediction weight. (Default: 50)

pbs_crit_rr_threshold

float

Weight threshold below which Russian Roulette is applied to split paths. Split paths whose current prediction weight falls below this value are stochastically terminated to limit the cost of low-weight copies. (Default: 0.33)

pbs_min_rr_threshold

float

Minimum survival probability for split-path Russian Roulette. The survival probability is max(w_spl, pbs_min_rr_threshold), which ensures the kill probability never exceeds 1 - pbs_min_rr_threshold and that surviving paths are not reweighted above their pre-split weight. (Default: 0.2)

nle_enable

boolean

Enable the N-tuple Local Estimate (NLE) variance reduction method. Each primary ray is traced as a mother path. At regular intervals along the mother’s trajectory, a clone path is forked and traced independently to perform additional next-event estimation. Requires ddis_enable=true. (Default: false)

nle_first_clone_depth

integer

Scatter depth at which the mother path creates its first clone. Clone creation then recurs every nle_nee_per_clone scatters thereafter. (Default: 5)

nle_max_clone_depth

integer

Maximum number of scattering events a clone is allowed to trace before it is terminated. Controls the amount of next-event estimation work performed per clone. (Default: 12)

nle_nee_per_clone

integer

Interval, in scattering events, between successive clone creation events along the mother path. A new clone is spawned every nle_nee_per_clone scatters starting from nle_first_clone_depth. (Default: 11)

hide_emitters

boolean

Hide directly visible emitters. (Default: no, i.e. false)

This plugin provides a volumetric path tracer catered towards Earth Observation simulations that can be used to compute approximate solutions of the radiative transfer equation. Its implementation makes use of multiple importance sampling to combine BSDF and phase function sampling with direct illumination sampling strategies. On surfaces, it behaves exactly like the standard path tracer.

This integrator has special support for index-matched transmission events (i.e. surface scattering events that do not change the direction of light). As a consequence, participating media enclosed by a stencil shape are rendered considerably more efficiently when this shape has a null or thin dielectric BSDF assigned to it (as compared to, say, a dielectric or roughdielectric BSDF).

In addition, it implements the VROOM variance reduction methods [BM11] which reduce noise in the presence of strongly peaked phase functions. Note that VROOM makes some strong assumptions: there must be a single directional emitter and the sampler must be independent.

Warning

This integrator does not support forward-mode differentiation.

Stokes-moment integrator (stokes_moment)#

Parameter

Type

Description

Flags

use_stokes

boolean

Enable Stokes vector AOVs. Requires a polarized rendering mode. Default: false.

use_moment

boolean

Enable second-moment AOVs for variance estimation. Default: false.

meridian_align

boolean

When use_stokes is true, align the Stokes vector to the meridian plane instead of the sensor’s x-axis. Default: false.

(Nested plugin)

integrator

Sub-integrator (exactly one must be specified) which will be sampled along the integrator.

This integrator combines the stokes and moment integrators into a single plugin, resolving the issue that stokes cannot be nested inside moment (the sensor pointer would not be set correctly). Enable either or both modes via use_stokes and use_moment.

AOV layout mirrors the behaviour of the integrators it combines. When both modes are active, the layout is (N = child AOV count):

[0..11]                  name.S0.R name.S0.G name.S0.B  name.S1.R ... name.S3.B
[12..12+N-1]             child AOVs
[12+N..12+N+2]           name.X  name.Y  name.Z
[12+N+3..2*(12+N+3)-1]   m2_ mirror of all preceding channels

This plugins departs from the stokes integrator by prepending the nested integrator name to the stokes AOV names.