This is RenderMan 21 Documentation you are viewing. The Rmanwiki home page will redirect you to the current documentation.

Page tree


Welcome to RenderMan 21.3!

This release introduces the following improvements, fixes, and miscellaneous changes.

New Features

  • PxrSurface's new Diffuse Exponent (when roughness is 0.0) is a power exponent that controls the diffuse falloff.
  • PxrMarschnerHair now supports Glow and improved controls with the addition of new parameters.
  • PxrSurface's interior scattering introduces a Multiscatter parameter. This is required to be on for use with the PxrVCM and PxrUPBP integrators.
  • LPE system now handles complex sets of LPEs more efficiently.
  • Per lobe LPE has been added to PxrMarschnerHair, these will output results from: HairSpecularR, HairSpecularTT, HairSpecularTRT, HairSpecularGLINTS.
  • New built-in primvars "curvature_u" and "curvature_v" -- the principal surface curvatures in the u and v directions. (As before, the "curvature" primvar is the mean surface curvature, ie. the average of curvature_u and curvature_v.)

Miscellaneous Changes

  • Scenes with frequent use of EnableLightFilter may see a reduction in the amount of memory used.

  • Support for changing light filter topology during IPR.

  • Improved light sampling in volumes.
  • Less noise is visible when using presence values less than 1.
  • Time to first pixel in scenes with millions of lights has been greatly reduced.
  • Added support for writing holdout shadows to the beauty alpha channel
  • Some error messages for RiCurves now contain more info.
  • We now allow layering of subsurface transmit gain in PxrLayer and PxrLayerMixer.
  • PxrOcclusion useAlbedo now requires Bxdfs to return a valid albedo user lobe otherwise black is assumed. This may result in a change the behavior for custom Bxdfs, visible lights, and hair geometry.

  • Denoiser layer groups can now override the main images variance channels using custom settings.
  • Improved selection of lights when rendering anisotropic volumes.

Bug Fixes

  • Fixed a bug that could cause sporadic crashes early in a multi-threaded render.

  • Fixed a bug with UNC Windows file path parameters for "it"
  • Fixed a bug in PxrMarschner that may cause crashes.
  • Spaces in file paths can be passed to "it"
  • Fixed a possible stack overflow when rendering curves.
  • Fixed missing results from baking one-sided geometry.

  • Fixed an error message indicating bad nesting of structs when the problem was actually just incompatible struct connections in shader graphs.

  • The orientation of Nn on a sphere now matches Ngn -- there was an inconsistency for transforms with negative determinant (both for Orientation "rh" and "lh") when Option "quadric" "orientspheretotransform" is 1.

  • Fixed incorrect output space for bake3d normals.
  • Fixed incorrect transmission term for motion blurred volumes.
  • Python RIF's now run in python3.

  • Fixed a bug that could cause OSL shaders to get dropped from objects with long "identifier" attributes.

  • Fixed crash in watertight dicing that could occur with some maxgridsize settings.

  • Fixed single-scatter nested volumes writing direct lighting and emission results to LPE AOVs. The results are now correctly classified and written to the correct AOV.
  • Geometric light patches no longer potentially get disabled when they happen to have a high enough tessellation rate.

  • Matte objects now work correctly in Z-depth AOVs. Toggle off the "respects matte" property of the Z AOV if you wish to emulate the previous behavior.

  • Fixed potential for crashes during direct-linked renderer shutdown at the completion of a render that used OSL.

  • Fixed potential end-of-render crash when using OSL shading nodes.
  • Fixed incorrect derivatives in PxrBumpManifold2D.
  • Fixed out-of-sync PxrLayerSurface.args from PxrSurface.args where diffuse tranmission didn't work with PxrLayerSurface.args.
  • Added missing subsurface transmit gain in PxrLayerSurface.args and PxrLayer so we can now layer subsurface transmit gain as well.
  • Fixed a bug that caused textures made with pattern "single" to return black when used with bilinear and bslpine filters.

  • Fixed a crash that would occur when using holdouts in scenes with no light sources.
  • Fixed a bug accessing the wrong MIP level for non-square textures resulting in spurrious "T10004 {WARNING} Can't find res for xxxx" warnings and random texture read values.
  • Fixed correlation artifacts in PxrDirt


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.
  • PxrPortalLight 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.