Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PxrVCM enforces multiple scattering in volumes; bidirectional path tracing in particular is well suited for multiple scattering in volumes. However, PxrVCM does not currently support volumetric photons; as a result, effects such as volumetric caustics may be slow to converge. For these effects you should use the PxrUPBP integrator with homogeneous volumes (heterogeneous volumes are not currently supported in PxrUPBP).

There are several important differences to note between this integrator and PxrPathTracer:

...

Parameters

ParameterDescription
connectPaths

Controls whether "vertex connection" is employed. The power of bidirectional path tracing over forward path tracing is in the ability to repeatedly reuse indirect contributions down the full combined path by making repeated connections between the eye and light paths, leading to faster convergence for interior scenes with significant indirect illumination. Set this parameter to either 0 (vertex connection off) or 1 (vertex connection on). By default, vertex connection is enabled.

With no vertex merging, but with path connection enabled, VCM acts only as a bidirectional path tracer. 

mergePaths

Controls whether "vertex merging" is employed. Vertex merging enables a variant of progressive photon mapping, which converges faster than path tracing for specular-diffuse-specular (caustic) lighting. Enabling vertex merging is generally recommended but does result in additional time and memory overhead for photons, and may be unnecessary in scenes with little specular-diffuse-specular transport. Set this parameter to either 0 (vertex merging off) or 1 (vertex merging on). By default, vertex merging is enabled. Note that photon generation requires the incremental flag be turned on for the Hider; the photons generated in the current iteration are used as the photon map for the next iteration.

With vertex merging enabled and vertex connection disabled, VCM implements a variant of bidirectional progressive photon mapping; this mode is generally not recommended as it does not make direct connections between the eye vertex and the light, and as a consequence usually has slower convergence for direct lighting than all other modes.

With both vertex merging and vertex connection disabled, VCM acts only as a forward, unidirectional path tracer (no light paths are generated).

 

mergeRadiusSpecifies the radius used in vertex merging. It is measured in screen space pixels (not world space). Increasing this radius will blur the influence of a photon over a wider region, which may be helpful in reducing noisy caustics. However, increasing the radius will also slow down merging and increase the initial bias of progressive photon mapping, requiring more iterations to arrive at a bias-free result. The default value of 5.0 significantly reduces noise at the cost of some initial bias which decreases with more samples. Should these bias artifacts be objectionable when using low numbers of samples, decreasing the mergeRadius will reduce these artifacts at the expense of more noise.
timeRadiusSpecifies the maximum difference in time, measured as a fraction of the shutter interval, over which photons are merged. By default, the timeRadius is 1.0: eye vertices can be merged with photons emitted at any time. This may lead to inaccurate results (i.e. smearing in time) for caustics from moving objects. Setting the timeRadius to a smaller value tightens the search radius in time for mergeable photons, leading to better results for motion blurred caustics, at the cost of static objects requiring more photons in order to resolve caustics.
maxPathLengthControls the maximum length of a combined light and eye path, including the connection rays. For example, a value of 4 will permit up to 3 bounces of global illumination. A value of 1 for this parameter will allow direct illumination only, which means that no light paths will be generated (since eye path vertices are always directly connected to the light source). The default value of this parameter is 10.
numLightSamplesControls the number of light samples for direct illumination per vertex on the eye path. The default is 1. For lowest noise numLightSamples and numBxdfSamples should be set to the same value.
numBxdfSamplesControls the number of Bxdf samples for direct illumination per vertex on the eye path. The default is 1. For lowest noise numLightSamples and numBxdfSamples should be set to the same value.
rouletteDepthControls the path length at which the integrator begins performing Russian roulette in order to reduce overall path length. The default is 4. Note that Russian roulette is applied separately to both the eye and the light paths.
rouletteThresholdControls the path throughput threshold below which to begin performing Russian roulette. The default is 0.2. Increasing the threshold will lead to a reduction in path length, which will lead to an overall increase in speed at the expense of higher noise.
clampDepthIf a value for the clampLuminance parameter is specified, then clampDepth controls the ray depth at which to begin clamping based on the per-ray luminance. For example, setting this parameter to 2 and also specifying a value of 4 for clampLuminance will ensure that the luminance of each ray's contribution is no more than 4 for all indirect illumination, without affecting or clamping the direct illumination. The default is 2.
clampLuminanceBy default the PxrVCM integrator clamps the luminance computed by any technique on any vertex to be at most 10.0. However, it is possible to change this behavior by specifying a different value for the clampLuminance parameter. Specifying a relatively low value for the clampLuminance parameter (for example, between 2 and 20) can greatly speed up convergence. In some cases, indirect illumination lights paths may be noticeably dimmer due to clamping; this may be an acceptable trade-off in certain cases. Setting this parameter to a very large number (such as 1e30) will effectively disable all clamping. The default is 10.0.
photonGuidingSets the probability of using photon guiding during photon emission. A value of 0.0 means no photon guiding. Values between 0.0 and 1.0 cause a combination of photon guiding and standard photon emission. Finally, a value of 1.0 means that all photons are guided – which may result in biased images. The default value is 0.0.

photonGuidingBBoxMin

photonGuidingBBoxMax

These two values can be used to explicitly specify the bounding box (in world-space coordinates) that photons should be emitted toward. I this bounding box is not specified, one will be computed automatically as a slightly (loose) bounding box of the directly visible parts of the scene. The default value for photonGuidingBBoxMin is (1e30, 1e30, 1e30) and for photonGuidingBBoxMax is (-1e30, -1e30, -1e30).

 

Standard AOVs

On top of regular LPE-based AOVs, this integrator outputs a number of standard AOVs typically used by compositors.

DeclarationContentsChannels
color __PworldP in world-space
__Pworld.r : x component
__Pworld.g : y component
__Pworld.b : z component
color __NworldNn in world-space
__Nworld.r : x component
__Nworld.g : y component
__Nworld.b : z component
color __depthMulti-purpose AOV
__depth.r : depth from camera in world-space
__depth.g : height in world-space
__depth.b : geometric facing ratio : abs(Nn.V)
color __stTexture coords
__st.x : s
__st.y : t
__st.z : 0.0
color __PrefReference Position primvar (if available)
__Pref.r : x component
__Pref.g : y component
__Pref.b : z component
color __NrefReference Normal primvar (if available)
__Nref.r : x component
__Nref.g : y component
__Nref.b : z component
color __WPrefReference World Position primvar (if available)
__WPref.r : x component
__WPref.g : y component
__WPref.b : z component
color __WNrefReference World Normal primvar (if available)
__WNref.r : x component
__WNref.g : y component
__WNref.b : z component