Contents
Image from Incredibles 2
PxrUnified is initially included in RenderMan as an experimental integrator. Eventually this integrator will become full-featured and ready for reliable production rendering.
Note that PxrUnified does not support the holdout workflow in this version.
PxrUnified is the integrator Pixar relies on for it's own film and animated shorts. It implements both the forward path tracing algorithm and bidirectional choices along with selective "cheap" caustics using the Manifold Next Event Estimation technique called Manifold Walk here. We also include the options for Indirect Guiding that improves indirect lighting by sampling from the better lit or more important areas of the scene.
For direct illumination, the numLightSamples and numBxdfSamples parameters determine the number of light vs. Bxdf (material) direct illumination samples, and the resulting direct illumination contributions are combined using multiple importance sampling.
For indirect illumination, the numIndirectSamples parameter controls the number or rays sent for sampling indirect like paths.
SubSurface Over-sampling is used to help reduce the noise when rendering complex lighting and objects with subsurface shading enabled.
Note that the Max Path Length is the single control used to control global trace depth, PxrUnified ignores the settings for separate specular and diffuse trace depth. The implication is that a simpler control is intuitive but some scenes may take longer to render and appear differently than in other integrators where users have optimized the bounces based on their scene. Setting the control to 0 means only direct lighting and camera visible effects. Increasing the setting allows light to travel further into and off of objects in the scene.
Parameters
Parameter | Description |
---|---|
traceLightPaths | This enables bidirectional path tracing modes. |
maxPathLength | Controls the absolute upper bound on the maximum ray depth. For example, a value of 0 for this parameter will allow direct illumination only, while a value of 4 will permit up to 3 bounces of global illumination. Default value is 8. Ray Depth per diffuse or specular interaction is ignored. |
maxRayDistance | This controls the distance (in scene units) an indirect ray will travel before being terminated. If your scene scale is such that objects far from one another would not visually interact indirectly you can use this to optimize the scene. Note that rays traveling through windows and other objects are indirect rays and may be terminated too early and disappear from glass refraction. (Imagine a render where you view a mountain range through your living room window, be sure these rays reach far enough.) |
catchAllLights | On the last hit, evaluate the lights without shadowing, the default is off (0.0). If you find refraction goes dark, setting this slider to 1.0 adds the full contribution of the light samples. Turning this on may brighten your scene. |
emissionMultiplier | Multiplies all emissive and "glow" properties set on materials and lights. |
accumOpacity | Controls whether or not the path tracer will keep track of accumulated opacity along the path. The default is off. If you plan to render refractive objects and care about alpha values for compositing, you might want to turn this on, car windows for example. |
specularCurvatureFilter | Filter the roughness for specular interactions, setting it to 0.0 is no filtering or "ground truth". |
numLightSamples | Controls the number of light samples for direct illumination per camera hit point. The default is 1. Small numbers may improve performance of interactive and progressive updates. Larger numbers may appear to converge better while being slower to update. |
numBxdfSamples | Controls the number of Bxdf samples for direct illumination per camera hit point. The default is 1. Small numbers may improve performance of interactive and progressive updates. Larger numbers may appear to converge better while being slower to update. |
numIndirectSamples | Controls the number of Bxdf samples for indirect illumination per camera hit point. The default is 1. Small numbers may improve performance of interactive and progressive updates. Larger numbers may appear to converge better while being slower to update. |
sssOversampling | Controls the number of subsurface rays to spawn per camera hit point. The default is 8. |
allowMultilobeIndirect | |
rouletteDepth | Controls the ray depth to begin performing Russian Roulette. Russian Roulette may terminate rays after this depth especially if they contribute little to the result. The default is 1. |
rouletteThreshold | Controls the path throughput threshold below which to perform Russian Roulette. This controls at which point the contribution of the ray is unimportant enough to terminate the ray. The default is 0.2. |
directClamp | Sets the amount where values will be clamped, for direct lighting the default is high to preserve the dynamic range of a scene's lighting. Lowering it will reduce noise like fireflies at the cost of dynamic range. The default is 1000000.0 |
indirectClamp | Sets the amount where values will be clamped, for indirect lighting the default is low, this avoids noise in secondary effects that have already absorbed some energy anyway. Lowering it will reduce noise but also darken indirect effects. The default is 8.0 |
causticClamp | Sets the amount where values will be clamped, for caustics the default is high to preserve the light patterns that result from light focusing off of or through objects. Lowering it will reduce noise like fireflies at the cost of dynamic range. The default is 1000000.0 |
Standard AOVs
On top of regular LPE-based AOVs, this integrator outputs a number of standard AOVs typically used by compositors.
Declaration | Contents | Channels |
---|---|---|
color __Pworld | P in world-space | __Pworld.r : x component __Pworld.g : y component __Pworld.b : z component |
color __Nworld | Nn in world-space | __Nworld.r : x component __Nworld.g : y component __Nworld.b : z component |
color __depth | Multi-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 __st | Texture coords | __st.x : s __st.y : t __st.z : 0.0 |
color __Pref | Reference Position primvar (if available) | __Pref.r : x component __Pref.g : y component __Pref.b : z component |
color __Nref | Reference Normal primvar (if available) | __Nref.r : x component __Nref.g : y component __Nref.b : z component |
color __WPref | Reference World Position primvar (if available) | __WPref.r : x component __WPref.g : y component __WPref.b : z component |
color __WNref | Reference World Normal primvar (if available) | __WNref.r : x component __WNref.g : y component __WNref.b : z component |