RenderMan Changelog

What's new in RenderMan 24.4.0

Apr 25, 2022
  • Fixes and Features:
  • Geometry:
  • Volumes:
  • Fixed an issue causing an offset in mipmaps generated using vdbmake.
  • Attribute "volume" "aggregate" now supports strings that contain comma delimited names.
  • The msApprox controls on light sources no longer wrongly affect non-aggregate volumes in the presence of aggregate volumes.
  • Aggregate volumes bound to the interior of geometry via PxrSurface now correctly perform multiscattering through the interior aggregate, instead of reverting to the global aggregate after the first scattering event.
  • You can now override the basis for curves using the -shapeedit flag to the Alembic procedural.
  • Fixed a potential crash seen on extraordinary Catmull-Clark meshes with __faceindex primvar attached.
  • Improved performance for edits to large numbers of geometric mesh lights.
  • The Alembic procedural will now attempt to apply velocity based motion blur for single frame archives.
  • Lighting:
  • An issue that could cause suboptimal convergence of direct lighting from scaled geometry lights has been addressed. This fix may cause existing scenes with low sample counts to change direct lighting if they were converging slowly. If the old incorrect behavior is needed, please use Option "lighting" "geometryscalecorrection" [0]. This option will not be available in future releases.
  • A new Option "lighting" "minimumestimate" has been added. Non-distant lights whose importance estimate falls below the specified value will be culled during direct lighting. Increasing this value can speed up scenes where direct lighting is expensive, i.e. due to participating media, but may lead to noticeable differences in lighting. By default, the threshold is 1e-6.
  • Fixed a bug where attempting to edit an invalid light could lead to a crash.
  • Bxdfs:
  • Clamp the topMix parameter of LamaLayer to a [0:1] range to avoid artifacts.
  • LamaDielectric: Dispersion can be specified using Abbe numbers.
  • An additional refraction roughness control has been added to PxrSurface WalterLobe.
  • A crash when LamaLayer parameter "topMix" isn't specified has been fixed.
  • New mapping applied to the roughness parameters of the lamaHairChiang node allowing for a more perceptually linear response that makes it easier the control by the user, in addition of supporting super rough fur rendering, as now roughness values can live in the full [0,PI] range that the Chiang model accepts.
  • Patterns:
  • PxrSetRange: new pattern to remap signals using SeExpr's compress(), expand() and fit() functions.
  • PxrArithmetic now supports many more functions, mirroring Blender's Math node.
  • PxrPhasorNoise: Added direction flow controls to align waves along the vector direction.
  • PxrVariable: fixing typos.
  • PxrRamp: Added a clamp parameter to keep output between 0 and 1.
  • Fixed typo in the argument to Dx() and Dy() in the non-manifold initTxCoords() OSL function. The typo caused incorrect t derivative in non-manifold OSL bump mapping when "invertT" is 1 (which is the default). The bump direction will change in images with OSL bump mapping and "invertT" 1 (which is the default) and the bump amount driven by a non-manifold input. The bump direction now matches the corresponding old C++ bump code and the manifold version of the same code.
  • Fixed a bug that could cause a crash when using OSL fmod() with differing variable types.
  • It is now possible to compile our patterns without HexTiling functionality by passing the PXR_HEXTILE_DISABLED define to oslc.
  • XPU:
  • There was a bug in the lerping between MIP map levels in XPU texture() lookups when lerping between the finest and second-finest MIP map level present in a texture map. This has been fixed.
  • A problem with missing shadowing of semi-transparent curves (i.e. when using the shadowColor or presence inputs on PxrMarschnerHair) which only affected GPU rendering in XPU has been fixed.
  • fixed incorrect shadows which could be cast by volumetric objects in XPU depending on their transform.
  • Fixed a bug that could cause crashes when writing AOV's from OSL shaders driving volume inputs.
  • Stylized Looks:
  • PxrStylizedHatching:
  • New "Blend White Lightest" feature to give control if brightest value is solid color instead of highest hatching texture.
  • Hatching specular invert texture progression support for triplanar projections.
  • Fixed overbrights mapping: eliminates artifact in Screen & Triplanar projections.
  • New "Signal Energy From" option: "Signal AOV Mono" for whiteshader calculations.
  • PxrStylizedControl:
  • New Feature: "Sections Add" for additional random modification for edge detection in PxrStylizedLines.
  • New Feature: "Sections Quantize" for additional random modification for edge detection in PxrStylizedLines.
  • Updated "Sections Spread Scale" functionality for more space between random colors for edge detection in PxrStylizedLines.
  • Fixed bug where AOV's previously overwritten if also written in other Pattern node (like PxrTee).
  • Live Statistics:
  • Add new "live stats enabled" pref for DCCs.
  • Live stats are now enabled by default.
  • Live stats UI panel will now present an error message in the case of a failed connection.
  • Image Tool:
  • Fixed a bug where deleting images that were being rendered to would crash "it"
  • Fixed stability issues when running live stats to the 'it' HUD.
  • The window could fail to resize (Ctrl-F) correctly with non-square pixels images.
  • XPU renders can now be canceled from the IT UI.
  • The Select Object and Surface Tools now work with XPU renders.
  • The Crop Tool now works with XPU renders.
  • Hydra Renderer Delegate:
  • Fixed a bug where file textures from material x networks would appear vertically flipped in RenderMan renders. The old behavior can be restored via the env var HD_PRMAN_MATERIALX_VERTICAL_FLIP=false.
  • Bail if we see a "multioutput" connection, since these aren't supported yet (Note, studio has added support, but involves a USD change that we're not using yet).
  • Fixed an issue for mtlx image files where the rtx plug-in gets referenced. The heuristic for grabbing the texture node ptr was sometimes failing.
  • Fixed an issue for tex files: resolve the path, because RenderMan doesn't know about usd file relative paths.
  • For mtlx image file nodes without a texcoord connection automatically wire in a mtlx geompropvalue specifying st texture coords.
  • Fixed a bug where toggling visibility of individual instances would lead to a crash.
  • Added support for PRMAN_OSL_BEFORE_RIXPLUGINS environment variable when running the RenderMan hydra delegate.
  • Other:
  • The color manager now recognizes colorspace name embedded in filenames for lights and light filters, in the ACES and Filmic-Blender configs.
  • Presets can now be renamed in the preset browser, after they've been saved.
  • Added support for Maya 2023.

New in RenderMan 24.3.0 (Jan 6, 2022)

  • RIS and XPU:
  • Txmake: Added support to txmake for aborting on input NaN's by using -checknan
  • RIS:
  • OSL: Custom LPE match and throughput values can now be accessed in OSL via getattribute("lpe:match"/"lpe:throughput","<customlpename>"/"<customlpeexpression>",val); This wires the RixCustomLPE API into OSL via a custom getattribute call. This will allow the shading to vary based on the throughput or in paths specified by a custom LPE. For example, a shader can respond and return different values depending on whether it a ray has refracted through a particular object or not.
  • LPEs: Added 'white' LPE flag, allowing the color of shading events to be excluded from light path expressions. This allows other properties of the shaded points to be written to AOVs without the color being multiplied in, extending the set of things which LPEs can be used to express.
  • XPU:
  • Geometry: Added support for matrix primvars
  • Other:
  • We now support Mari 4.5 up to 5.0
  • RIS and XPU:
  • Stats: Stability improvements. When running Live Stats it is no longer necessary to configure a port number. An available port will be chosen automatically by the system
  • Patterns: PxrFractal: Fixed a regression related to the application of the frequency parameter. Added a new parameter for backward compatibility if needed
  • Patterns: PxrFractal: Improved frequency clamping to optimize render times
  • RIS:
  • Integrators: Issues with unpredictable random number generation for photon generation in the PxrVCM and PbsPathTracer/PxrUnified integrators have been fixed
  • Volumes: Issues with incorrect alpha channel results for volumes that are marked matte or holdout have been fixed, including cases where the matte volume holds out an overlapping non-matte volume. One remaining known issue in 24.3 is that matte volumes will not produce the correct alpha channel if accumOpacity is turned on in the PxrPathTracer integrator.
  • Volumes: An issue with artifacts in the shadows of aggregate volumes rendered with numLightSamples > 1 in PxrPathTracer has been addressed
  • Textures: Fixed incorrect derivatives when using mipBias or maxResolution in texture patterns
  • PxrVCM: Fixed a bug in caustics when the light source is a scaled rect light with emission defined by a texture
  • BxDFs: Parameters "iridescenceAnisotropy", iridescenceBumpNormal", "glassAnisotropy" and glassBumpNormal" are added to PxrLayerSurface
  • BxDFs: Lama: LamaDielectric and LamaGeneralizedSchlick now support the binding of interior aggregate volumes via the new parameter "volumeAggregate".
  • BxDFs + Integrators: Fixed an issue with PxrPathTracer when aggregate volumes were bound to the interior of an object via PxrSurface or LamaDielectric. This case now works.
  • Lights: Fixed a flickering issue when lights overlapped with each other
  • Lights: Fixed a case where mesh lights wouldn't properly cast shadows
  • XPU:
  • BxDFs: Fixed XPU PxrSurface specular energy compensation for "specularFresnelMode" 1
  • BxDFs: Fixed a crasher that resulted if subsurface scattering from PxrSurface was used within nested instances
  • Geometry: Fixed an issue where some polygons could render black
  • Memory: Fixed several memory leaks that would manifest during interactive renders
  • Crop Windows: Fix XPU lockup when crop window is very small
  • "it":
  • Stats: Greater stability when interacting with the live stats system
  • HdPrman - the RenderMan Hydra Renderer Delegate
  • RenderMan hydra delegates no longer include a version string in the label
  • Improved support for Cryptomatte in hdPrman

New in RenderMan 24.2.0 (Jan 3, 2022)

  • What's New:
  • RIS and XPU:
  • hdPrman: Consume MaterialX through hdPrman. Pattern networks are compiled to OSL. BxDFs are transcoded to PxrSurface.
  • RIS:
  • Volumes: PxrPathTracer now supports "Aggregate Volumes". Aggregate Volumes is a new technique allowing you to render overlapping volumes more efficiently and lower the time to first pixel. It also allows PxrSurface to use a heterogeneous volume in its interior integrator. See details here: Aggregate Volumes and in the DCC specific documentation sections.
  • Volumes: PxrVolume has a new velocityPrimVar parameter. This is more efficient than reading the velocity via a PxrPrimvar or PxrVariable pattern
  • Volumes: Adding additional new parameters to impl_openvdb: densityScale, densityRolloff, filterWidth, velocityScale
  • Lights: Light shaders now have the ability to opt into multiscattering approximation calculations for the new aggregate volume feature
  • Integrators: Added support for Path Guiding. It can be activated in PxrPathTracer and the PxrUnified integrator via the new risGuiding integer parameter. Path Guiding is currently incompatible with integrator settings with more than one indirect sample, and with PxrPathTracer's 'manual' bxdf sampling mode. Requires light learning to be enabled
  • OSL raytype() is now implemented. The supported ray types are "camera", "shadow", "reflection", "refraction", "diffuse", "glossy", "subsurface", and "displacement"
  • Statistics: More stats are available in the JSON report.
  • XPU:
  • Rendering: Crop Window support is now available on XPU.
  • Rendering: Add support for computing curvature on polymesh/subdiv/curve/point geometry
  • Statistics: More stats from XPU's lighting subsystem are now available in the JSON report.
  • Changes in Stylized Looks:
  • PxrStylizedLines:
  • New feature: Dilate + Sort for signals going off geo
  • Master Line Thickness & Line Thickness Scaling
  • Daisy Chain Comp Modes: Over, Plus, Multiply
  • Overwrite Data AOV option
  • PxrStylizedHatching:
  • New AOV: NPRNtriplanar
  • Support custom surface normal coordinates for blended triplanar (ex: __Nref)
  • Hatching Mask (set in PxrStylizedControl) to mask Hatching ON/OFF per object/shader
  • PxrStylizedControl:
  • Support custom surface normal coordinates for blended triplanar (ex: __Nref)
  • Cam Depth Scale at object/shader level for all features in Lines & Hatching that rely on camera distance
  • Hatching Mask control at object/shader level
  • Triplanar Scale: XYZ scales for triplanar projections at object/shader level
  • Other Bug Fixes:
  • RIS and XPU:
  • Curves: Fixed a crash when a very large amount of curves are present in a scene
  • Statistics: Better robustness during startup of the stats system
  • Textures: Fixed a bug where txmake would fail on images whose largest mip layer is 4Gb or larger
  • RIS:
  • Lighting: Fix equiangular clipping in presence of infinite lights
  • Lighting: Several fixes related to light selection
  • Lighting: Fixed a live render bug where the ramp would render backwards initially if begin > end
  • Integrators: A crash in the Path Guiding feature of PxrUnified has been fixed
  • BxDFs: Added labels for glass parameters to PxrLayerSurface to match PxrSurface: Shading Tangent, Manifold Walk IOR, and Anisotropy
  • BxDFs: Fixed presets in LamaConductor
  • OSL: Silenced a debug message that was slowing down regex_search()
  • OSL: Improved OSL metadata tokenization to correctly handle <primvar:varname>
  • OSL: Fix out-of-bounds vector access when a spline is provided with only a single control point
  • Alembic: Fix for incorrect renders that could show up with polygonal input data with normals
  • Geometry: Fixed a memory leak for the case of general polygons which also occurred for pretessellated subdivision surfaces
  • Volumes: indirect visibility of volumes now correctly takes into account scattering events that occur within the volume. Previously indirect visibility was only checked at volume interfaces, which meant that surfaces within volumes that also enclosed the camera could wrongly reflect indirect invisible volumes
  • Checkpointing: When using the new variance metric, fixed a problem that prevented resuming from a checkpoint
  • Rendering: Fixed an issue that if you edited the shutter value, the framing and sampling unexpectedly changed
  • Rendering: Add support for FloatVectorAttribute when setting metadata for EXR output
  • macOS: Don't crash on Macs with AVX512 instruction set support
  • XPU:
  • Shading: Fixed a known look difference between CPU and GPU portions of XPU
  • BxDFs: Fixed the potential for NaNs when using the fuzz lobe of PxrSurface
  • Textures: Fixed issue with primitive variable substitutions into texture filenames
  • Textures: Fixed artifacts that arise in XPUGPU mode when texture cache size is small
  • Textures: XPU now shares the same minimum ptex and non-ptex texture cache sizes RIS. In the case the user sets a minimum texture cache that is lower than our internal minimum we use it and do not display any warning for both ptex and non-ptex texture caches
  • OSL: Robustly handle the case if memory allocation fails when setting up the color system for OSL
  • Patterns: Fixed a crash that would occur if '-' was used in the name of a pattern
  • Performance: Fixed cases where CPU + GPU would sometimes render slower than the GPU alone
  • Geometry: Fixed a problem that could result in a crash when editing materials on curves
  • Lighting: Correctly initialize default values for light parameters in XPU
  • "it":
  • "it": Fixes for supporting the status HUD when viewing AOVs
  • HdPrman - the RenderMan Hydra Renderer Delegate:
  • Fixes for a case where PxrDisplacement would not work when being passed to XPU
  • Make volumes respond to underlying changes in the field prim
  • Fixed a bug that could sometimes hang hdPrman when processing materials with loops in the node graph
  • Updated calculation of primvar calculations in curves to match RenderMan
  • Fixed a camera framing issue
  • Support array inputs within hdPrman's material parser
  • New warning when a renderer delegate cannot be created
  • Fixed issues with the fallback shader
  • Add support for UsdPreviewSurface's opacityThreshold param in HdPrman
  • Metallic materials should have an F0 equal to their base color in UsdPreviewSurface
  • Support .args and .oso files embedded in .usdz files
  • Updated UsdPreviewSurface clearcoat calculations to better match expected inputs
  • Support UsdTransform2d
  • Fix HdPrman support for USD Preview Material texture coordinate conventions when using a RenderMan tex format file. Inserts a UsdTransform2d if necessary to invert the T axis
  • Optimize framebuffer updates for faster frame rate
  • Cleaned up warnings from the stats system that would appear during interactive rendering
  • Adding support for missing light parameters to hdprman (msApprox, msApproxBleed, msApproxContribution, emissionFocusNormalize)
  • Updated our renderer definition with settings to allow for better integration with Solaris features
  • Added support for dataWindowNDC and aspectRatioConformPolicy
  • Adjust HdPrman's fallback volume shader to match Storm's. Visually, this fallback approximates something like smoke: low albedo, isotropic (i.e. scattering has no directional bias), single-scatter
  • Fix HdPrman's fallback maxSamples to match the RenderMan fallback (64)
  • Adds support for UsdUvTexture's "sourceColorSpace" input and fixes UsdPreviewSurface's normal mapping
  • We want the ability to pass asset paths that refer to things other than .tex files on disk to prman for the lightColorMap property on lights
  • Support additional clipping planes
  • Add support for UsdPreviewSurface's displacement
  • Miscellaneous Changes:
  • RIS:
  • Integration: A few enhancements in light selection that will provide improvements in convergence time.
  • Integration: Significant speedup for RIS PxrOcclusion integrator for ambient occlusion (with "useAlbedo" off) when objects have complex pattern networks.
  • OSL: simplified semantics for calling debug(). Simplify to debug(aov, "writemode", "always") and allow conditionals around the call to replace the flagval itself. Default behavior of debug(aov) is equivalent to debug(aov, "writemode", "camerahit")
  • OSL: PxrNormalMap willi now check for primvars Tn and Bn for the tangent and bitangent before using "builtin"
  • Lights: Startup time improvements when many unique mesh lights are present
  • Lights: Performance improvements during light selection
  • API: Support for modifying data within nested mutable shading contexts
  • API: If you have a custom integrator, you may need to recompile it due to an API change that was required to support Volume Aggregates.
  • XPU:
  • Significant speedups for XPU PxrVisualizer (with styles "shaded", "normals", or "st") and XPU PxrOcclusion integrators (for ambient occlusion with "useAlbedo" off) when objects have complex pattern networks.
  • Error Message cleanup
  • XCPT style error handling added to several subsystems