Page tree


Welcome to RenderMan 21.2!

Welcome to RenderMan 21.2 This release introduces improvements and some fixes to the previous release.

New Features

  • New parameter for PxrSurface: "subsurfaceDiffuseSwitch". When left on, it allows subsurface scattering to be approximated by simple diffuse reflection when the dmfp is shorter than the ray footprint. This gives faster rendering time and less noise -- typically on distant objects where the subsurface scattering is short relative to the size of a pixel. The default is 1 (on), which is also the previous behavior (except for the tri-lobe diffusion model where the previous default was off).

  • Introduced a default darker theme for statistics output to a browser. This should make viewing easier in typical darkened artist environments.


Miscellaneous changes

  • We now avoid writing to AOVs from patterns during opacity queries.

  • PxrVolume now hides Density Float and Density Color if their primvar parameters are set.

  • Ray traced performance of some catmark subdivision improved.
  • When using PxrPathtracer, patterns can expect to get an improved stratified rixrng now.

  • ICE now uses (ascii) strings for channel names instead of single characters. This means that channel names from the EXR format files are preserved. Image.GetChannelPacking() will now return a list of strings and Image.Shuffle() and Image.Interleave() can now receive them. The existing integer-based versions remain.

  • The denoiser will now pass EXR metadata through to the filtered image.

  • Thread scalability improved for some catmark subdivision meshes.
  • The default UV parameterization of a subdivision mesh is now consistent even when the subdivision mesh is pretessellated.

  • OSL has been upgraded from the 1.6.8 release to the 1.7.4 release with all the associated improvements.

  • Improved handling of incorrect or invalid light path expressions (LPE).
  • User lobes now supported by the RixRenderState::GetOption interface.
  • Geometric AOVs output by standard integrators can be entirely disabled by emitting: Option "user" "int disableIntegratorAOVs" [1]
  • The grouping of individual OSL nodes into networks executed/optimized together has improved, which can lead to memory/time improvements in mixed C++/OSL networks.

  • A Bxdf plugin that fails to load now stops the render if using ErrorHandler "abort".

  • Optimized time to first pixel caused by LPE rebuilds.
  • Recovery from checkpoints is now possible with "spiral" and "random" bucket orders.

  • PxrSurface "Burley Normalized" has changed; mainly an overall intensity change.

  • Added '*' and '*=' operators to RtMatrix4x4 for both float and RtMatrix4x4 types
  • Denoiser now recognizes AOVs named emissive*, subsurface*, and transmissive*
  • Per-shader-instance OSL statistics are now only printed with Option "user" "int osl:statisticslevel" set to 5 or higher.

  • The noise in subsurface scattering has been significantly reduced for the following Bxdfs and parameters: 

    • PxrSkin (deprecated), PxrLMSubsurface (deprecated)

    • PxrSurface.

Bug Fixes

  • Fixed a bug resulting in reversed or inside-out normals on curves and the wrong orientation of normals on instanced curves.
  • A bug in the PxrSurface subsurface scattering parameters for the trilobe (multi-dmpf) sss model has been fixed. The subsurface color results will change.

  • Fixed a bug where luminance clamping was applied too early for photon merging in PxrVCM and PxrUPBP integrators.
  • Fixed a runaway memory allocation that could occur when a polygon mesh is affected by a transform motion block with a time sample very close to but not exactly at the shutter open time.

  • Resolved an intermittent crash when baking.
  • Fixed a bug where optional entries in the denoiser layergroups configuration weren't actually optional.

  • Fixed bug that could cause crashes and/or corrupt OpenEXR writes when checkpointing.
  • Fix for compositing transmission when glass bxdfs are completely absorbing.
  • Fixed a crash in the case that a custom integrator passes true for the wantsMisses parameter of GetNearestHits.

  • Fixed several memory leaks resulting in high memory usage when baking.
  • Fixed a bug in PxrVCM where PxrAovLight would yield the wrong results for indirect hits.
  • Fixed a bug where geometric lights using multiple-segment transformation motion blur would yield the wrong intensity.
  • PxrGradeDisplayFilter and PxrGradeSampleFilter incorrectly ignored gamma values above 1.0.
  • In PxrPathTracer, subsurface scattering is no longer counted as a diffuse bounce (w.r.t. maxdiffusedepth). As a result, scenes containing a mix off diffuse reflections and subsurface scattering might be a bit brighter in some places.

  • Time stats page did not correctly break down time by component. Time page has been rewritten as well as the Raytracing page to give a more accurate time breakdown.
  • HairAlbedo is now correctly computed for denoise when using PxrMarschnerHair
  • An issue with wrongly transformed normals on instanced, motion blurred, pretessellated subdivs has been fixed.

  • On Windows the librix.lib stub library was missing from the distribution.

  • Fix possible overlapping volume artifacts.
  • Fixed a crash involving incremental rendering with multiple cameras.

  • Fix LPEs splatting for multiple diffuse/specular lobes.
  • PxrLayerSurface.args: Removed conditionalVis so that Interior is shown.
  • Fixed bug causing potential for artifacts when using clampmotion 0 and transforms with motion samples outside the shutter interval.

  • Fixed a bug where a completely empty World would render to maxsamples instead of minsamples.

  • Bug fix for volume traversal where numerical precision issues could cause portions of a volume to be skipped.
  • Grid artifacts encountered when bump mapping on subdivs with watertight dicing have been fixed.


Known Limitations

RenderMan Pro Server

  • The PxrAovLight does not work properly with PxrUPBP
  • Analytical lights placed inside volumes may yield artifacts when made visible to the camera. As a work around, the light camera visibility should be turned off, and a geometry with a similar shape should be used (visible to camera, invisible to transmission and indirect rays), with the proper emissive bxdf.
  • Using the '.' character in the handle for an OSL shader could cause unpredictable results during re-rendering.
  • Instances are not supported for baking.
  • 3d baking: no direct bake-to-ptex support.
  • PxrBakePointCloud cannot directly render ptex.
  • No RixPTC/pointcloud API (so PxrBakePointCloud cannot read ptc files).
  • Sample/Display filter plug-ins do not have access to lighting services for light dependent effects, e.g. lens flare.
  • Adding new mesh light on existing geometry during IPR results in double geometry.
  • Camera visibility changes are not respected during Live Rendering.
  • For PxrUPBP, If the light source is inside a volume, that volume needs to be defined as Volume “box”
  • For PxrUPBP, To get a volume caustic, the object casting the caustic needs to have higher intersectpriority than the volume.
  • For PxrUPBP, Overlapping heterogeneous volumes are not working yet. (However, overlapping homogeneous volumes do work.) This will be resolved in the future.
  • PxrPortal may yield artifacts when generating photons for PxrVCM / PxrUPBP. This will be fixed in a future release.
  • When attempting to access an array primvar, you must first check the size of the array primvar and allocate the appropriate space. Not doing so may lead to a crash.
  • Points and curves cannot have mesh lights attached to them.
  • Deformation motion blurred volumes don't currently work with densityFloatPrimVar or densityColorPrimVar. You will need to use a PxrPrimVar node connected to densityFloat and densityColor instead.