Energy Redistribution Path Tracing (ERPT) by Cline et al.  combines Path Tracing with the perturbation strategies of Metropolis Light Transport.
An initial set of seed paths is generated using a standard bidirectional path tracer, and for each one, a MLT-style Markov Chain is subsequently started and executed for some number of steps. This has the effect of redistributing the energy of the individual samples over a larger area, hence the name of this method.
This is often a good choice when a (bidirectional) path tracer producesmostly reasonable results except that it finds certain important types of light paths too rarely. ERPT can then explore all of the neighborhing paths as well, to prevent the original sample from showing up as a “bright pixel” in the output image.
This plugin shares all the perturbation strategies of the mlt plugin, and the same rules for selecting them apply. In contrast to the original paper byCline et al., theMitsuba implementation uses a bidirectional (rather than an unidirectional) bidirectional path tracer to create seed paths. Also, since they add bias to the output, this plugin does not use the image post-processing filters proposed by the authors.
The mechanism for selecting Markov Chain seed paths deserves an explanation: when commencing work on a pixel in the output image, the integrator first creates a pool of seed path candidates. The size of this pool is given by the samplesPerPixel parameter of the sample generator.This should be large enough so that the integrator has a representative set of light paths to work with.
Subsequently, one or more of these candidates are chosen (determined by numChains and maxChains parameter). For each one, a Markov Chain is created that has an initial configuration matching the seed path. It is simulated for chainLength iterations, and each intermediate state is recorded in the output image.
- Max. path depth : integer
- Specifies the longest path depth in the generated output image (where -1 corresponds to ∞). A value of 1 will only render directly visible light sources. 2 will lead to singlebounce (direct-only) illumination, and so on. (Default: -1 -> 24 @ blender)
- Russian roulette starting depth : integer (documentation には書かれていないが blender では表示される)
- Specifies the minimum path depth, after which the implementation will start to use the “russian roulette” path termination criterion. (Default: 5 -> 10 @ blender)
- Direct Samples : integer
- By default, the implementation renders direct illumination component separately using the direct plugin, which uses low-discrepancy number sequences for superior performance (in other words, it is not handled by ERPT).This parameter specifies the number of samples allocated to that method. To force MLT to be responsible for the direct illumination component as well, set this to -1. (Default: 16)
- Luminance samples : integer (documentation には書かれていないが blender では表示される)
- MLT-type algorithms create output images that are only relative.
- The algorithm can e.g. determine that a certain pixel is approximately twice as bright as another one, but the absolute scale is unknown. To recover it, this plugin computes the average luminance arriving at the sensor by generating a number of samples. (Default: 100000 samples)
- Probability factor ? (lambda) : float
- Jump size of the manifold perturbation (Default: 50)
- Bidirectional Mutation : boolean (documentation には書かれていないが blender では表示される)
- Lens perturbation : boolean
- Caustic perturbation : boolean
- Multi-chain perturbation : boolean
- Manifold Perturbation : boolean
These parameters can be used to pick the individual perturbation strategies that will be used to explore path space. By default, the original set by Veach and Guibas is enabled (i.e. everything except the manifold perturbation).
- Average number of chains : float
- On average, how many Markov Chains should be started per pixel? (Default: 1)
- Max. number of chains : float
How many Markov Chains should be started at most (per pixel) (Default: 0, i.e. this feature is not used)
- Mutations per chain ? (chainLength) : integer
- Specifies the number of perturbation steps that are executed per Markov Chain (Default: 1 -> 100 @ blender).