Primary Sample Space Metropolis Light Transport (PSSMLT) is a rendering technique developed by Kelemen et al.  which is based on Markov Chain Monte Carlo (MCMC) integration. In contrast to simple methods like path tracing that render images by performing a naïve and memoryless random search for light paths, PSSMLT actively searches for relevant light paths (as is the case for otherMCMC methods). Once such a path is found, the algorithm tries to explore neighboring paths to amortize the cost of the search. This can significantly improve the convergence rate of difficult input. Scenes that were already relatively easy to render usually don’t benefit much from PSSMLT, since the MCMC data management causes additional computational overheads.
An interesting aspect of PSSMLT is that it performs this exploration of light paths by perturbing the “randomnumbers” that were initially used to construct the path. Subsequent regeneration of the path using the perturbed numbers yields a new path in a slightly different configuration, and this process repeats over and over again. The path regeneration step is fairly general and this is what makes the method powerful: in particular, it is possible to use PSSMLT as a layer on top of an existing method to create a new “metropolized” version of the rendering algorithm that is enhanced with a certain degree of adaptiveness as described earlier.
The PSSMLT implementation in Mitsuba can operate on top of either a simple unidirectional volumetric path tracer or a fully-fledged bidirectional path tracer with multiple importance sampling, and this choice is controlled by the bidirectional flag.The unidirectional path tracer is generally much faster, but it produces lower-quality samples. Depending on the input, eithermay be preferable.
Caveats: There are a few general caveats about MLT-type algorithms that are good to know. The first one is that they only render “relative” output images, meaning that there is a missing scale factor that must be applied to obtain proper scene radiance values. The implementation in Mitsuba relies on an additional Monte Carlo estimator to recover this scale factor. By default, it uses 100K samples (controlled by the luminanceSamples parameter), which should be adequate for most applications.
The second caveat is that the amount of computational expense associatedwith a pixel in the output image is roughly proportional to its intensity. This means that when a bright object (e.g. the sun) is visible in a rendering,most resources are committed to rendering the sun disk at the cost of increased variance everywhere else. Since this is usually not desired, the twoStage parameter can be used to enable Two-stage MLT in this case.
In this mode of operation, the renderer first creates a low-resolution version of the output image to determine the approximate distribution of luminance values. The second stage then performs the actual rendering, while using the previously collected information to ensure that the amount of time spent rendering each pixel is uniform.
The third caveat is that, while PSMLT can work with scenes that are extremely difficult for other methods to handle, it is not particularly efficient when rendering simple things such as direct illumination (which ismore easily handled by a brute-force type algorithm). By default, the implementation inMitsuba therefore delegates this to such amethod (with the desired quality being controlled by the directSamples parameter). In very rare cases when direct illumination paths are very difficult to find, it is preferable to disable this separation so that PSSMLT is responsible for everything.This can be accomplished by setting directSamples=-1.
- 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
- 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, this plugin renders the direct illumination component separately using an optimized direct illumination sampling strategy that uses low-discrepancy number sequences for superior performance (in other words, it is not rendered by PSSMLT).This parameter specifies the number of samples allocated to thatmethod. To force PSSMLT to be responsible for the direct illumination component as well, set this parameter to -1. (Default: 16)
- Luminance samples : integer
- 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)
- Large step probabillty : float
- Rate at which the implementation tries to replace the current path with a completely new one. Usually, there is little need to change this. (Default: 0.3)
- Bidirectional : boolean
- PSSMLT works in conjunction with another rendering technique that is endowed with Markov Chain-based sample generation. Two choices are available (Default: true):
- true: Operate on top of a fully-fleged bidirectional path tracer with multiple importance sampling.
- false: Rely on a unidirectional volumetric path tracer (i.e. volpath)
- Two-stage MLT : boolean
- Use two-stage MLT? See below for details. (Default: false)