Page tree

Versions Compared


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



Miscellaneous Changes

  • Additions to "it", the Image Tool

    • The Image Tool, "It" has a new "Commands > Standard Color Chart" menu to create a standard color rendition chart
    • The "Diff..." command in 'It' can now produce absolute valued difference images

    • Added a new Heat Map command to 'It'. This is useful to colorize float AOVs like sampleCount, difference images or CPUTime.
  • Improved optimizations for large OSL networks that share computations across scatter, opacity, and volume evaluation for bxdf's that correctly categorize their inputs using extended RixSCAccess modes

  • Updated PxrSurface to take advantage of extended RixSCAccess modes

  • New optional iridescenceBumpNormal and glassBumpNormal parameters have been added to PxrSurface
  • Exposed default (Ri) error handlers via RixInterface
  • Restored C compatibility of ndspy.h
  • Reduced overhead of accessing textures via OSL
  • Iridescence now participates in the specularEnergyCompensation (its Fresnel, ie EdgeGain vs EdgeFace, is accounted for in the substrate's compensation, exactly in the same way and at the same level as specular and rough specular)
  • Checkpoint recovery is now more verbose by default. Set /prman/recover/verbosity to 1 in rendermn.ini to return the old level. The new default is 3

  • Added built-in "__faceindex" AOV

  • PxrVolume now supports the user lobe "DiffuseAlbedo"
  • PxrVolume has a new extinctionDistance parameter. It is useful to set a very low density in scene-wide volumes and only works with homogeneous float or color density
  • Oren-Nayar (i.e. diffuse with diffuseRoughness > 0) is now more energy conserving
  • PxrOcclusion now obeys Ri:Matte objects
  • Improved shadow results from PxrShadowDisplayFilter

  • The PxrDirt pattern and the PxrOcclusion and PxrDirectLighting integrators now ignore volumes entirely

  • Displacement bound is applied more strictly producing more obvious and easier-to-debug clipping artifacts when misconfigured


  • Fixed possible crash related to long transformation paths

  • Fixed the NP and Nl values provided to display plugins when using a worldorigin other than "world"

  • Fixed a bug causing artifacts in LPE AOV outputs when rendering with more than one indirect sample in PxrPathTracer, in the presence of volumes mixed with glass or subsurface

  • The built-in variable dPdtime is now correctly computed for transform blurred volumes which do not have velocity wired into their shading network

  • Fixed an issue where many threads calling RiObjectBegin at the same time could lead to non-unique object handles being generated

  • Fixed a bug that could lead to failure of portions of a shading network when using mixed C++ and OSL patterns

  • Fixed a bug where deep images may have the negative values in the last channel in the channel list turned positive

  • PxrUnified's adaptive progressive photon mapping feature, broken in previous 22 releases, now works again

  • Fixed an issue where linear curves with motion blur could appear clipped or disappear completely if option curve:minwidth had a value greater than zero

  • Avoid possible crash with stack allocations
  • Equiangular sampling in PxrVolume is now correctly disabled when using an integrator that does not support volumetric single scattering (like PxrVCM or PxrUnified)

  • Improved interpolation of normals in deforming polygons and pretessellated subdivision surfaces. Dark or inconsistent illumination could be seen on object edges when the deformation had a rotation component

  • When PxrBump()'s surfaceNormalMix parameter is greater than 0.0, the resulting bump normal was not normalized. Now it is -- just like in all the other cases

  • Subsurface objects which overlap volume envelopes now no longer render with artifacts (e.g. dark lines) that follow the edge of the envelope

  • Fixed shading derivative calculation for volumes
  • "it" now launches correctly on OS-X
  • Varying opacity/presence now works on RiCurves
  • Fix possible crash with long AOV names
  • Fix rendering artifact in PxrDirt and PxrOcclusion with large numSamples
  • Matte and Holdout attributes correctly compute alpha now with PxrPathtracer, regardless of BXDF
  • Alpha for holdouts when using VCM integrator are now correct
  • Fixed a bug where autocrop combined with negative crop windows could cause the EXR driver to crash
  • Alembic archives now render with correct smooth normals
  • PxrRoundCube was incorrectly scaling its texture filter size and was also impacted by another low-level bug in the renderer
  • RixShadingContext::Transform was incorrectly returning radius^2 instead of radius

API Changes

  • A RixRNG Generator class API change requires a recompile of Bxdfs and Integrators
  • Added projection fov FOV query from RixRenderState::GetOption as Ri:ProjectionFOV
  • The six RixRNG single-point sample generation functions DrawSample*D() and GenerateSample*D() now have an extra parameter 'i' which is the shading point index. (Same as in RenderMan 21, but with the index as last parameter rather than first.) Most Bxdfs and Integrators use the multi-point versions of these functions, so no change is needed there; nonetheless, this change requires a recompile

  • Fields that are not valid in the RayCtxInfo struct have been removed. The RixRenderState::GetRayCtxInfo method GetRayCtxInfo() method should be considered deprecated and will be removed in a future release

  • The RixIntegratorContext::GetNearestHits() methods have been extended to allow volumes to be ignored. New versions of these methods have been added which simplify the optional parameters; the old versions should be considered deprecated

  • Add RixIntegratorContext::k_MaxRaysPerBatch to API. This defines the maximum limit of numRays that can be passed to GetNearestHits and GetTransmission

Interactive/Live Rendering Limitations

  • Crop window edits are restricted to fall inside the original crop window

RenderMan Pro Server Limitations

  • PxrUnified integrator does not yet support all the standard rendering features
  • PxrMeshlight as a volume will not update all scene lighting effects during IPR with parameter changes in 22.4 , a restart is required. This , this will be resolved in a near future release
  • We do not read point data from OpenVDB files
  • PxrSurface back diffuse color is not output to the albedo color AOV
  • 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
  • Per-Instance baking is not supported, only the reference instance
  • 3d baking: no direct bake-to-ptex support
  • PxrBakePointCloud cannot directly render ptex
  • Sample/Display filter plug-ins do not have access to lighting services for light dependent effects, e.g. lens flare
  • Adding a new mesh light on existing geometry during IPR results in double geometry
  • Motion blurred geometry does not motion blur normals when deformed
  • 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 be used as geometric (mesh) lights
  • 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


    The Centos KDE style "Oxygen" installs a version of Qt and sets the user's environment variable QT_PLUGIN_PATH forcing "it" and LocalQueue to attempt to load an incompatible Qt library. Either avoid installing the Oxygen theme or unset QT_PLUGIN_PATH before running "it" or LocalQueue. Other KDE styles may also install this theme.