---
title: "RenderMan 27.3"
canonical: "https://rmanwiki-27.pixar.com/space/REN27/857702405/RenderMan%2027.3"
format: markdown
---
> Macro (toc)

## XPU

### General

- Improved the prefiltering approach used to guide adaptive sampling in XPU. PRMAN-3524
- Fixed intermittent high startup times with XPU GPU variants. We now compile XPU for multiple CUDA architectures, which avoids increased startup times when starting a new version of XPU or when XPU has not been used frequently. XPUGPU startup times may be improved by up to a minute in these cases. RMAN-24681
- XPU now correctly interpolates the '@' sign if it appears in a search path, using the same rules as RIS (i.e. by looking up the standard search path from rendermn.ini). RMAN-23577
- Fixed a bug in framebuffer accumulation which could cause the beauty pass and AOVs to contain inconsistent values in regions of the scene lit by very bright, small light sources. PRMAN-3574, PRMAN-3623, PRMAN-3563, PRMAN-3562
- Fix for crash for worker thread teardown related to exhaustion of pthread keys. PRMAN-3672

### Image Outputs and Displays

- XPU now has support for Cryptomatte output. Unlike RIS, which uses the PxrCryptomatte sample filter, XPU's support comes via a new d_cryptomatte display driver, which requires passing "a,id,id2" as input channels. Currently the name, path, and material layers are supported, but not arbitrary attribute layers. For the moment, DCCs other than RfSolaris will automatically convert a RIS-centric sample filter setup to the appropriate Display for use in XPU. RMAN-21293, RMAN-24491
- XPU will print an error and gracefully exit if it can't allocate enough memory to run OSL patterns, display filters, or sample filters. RMAN-24499
- Reduce the memory allocated on the GPU when using `debug()` closures in pattern shaders, sample filters and display filters. RMAN-24517
- Allow camera aperture density and roundness values outside the range of -1 to 1. RMAN-24566
- XPU now automatically supports display drivers written using the Dspy api (as embodied in `ndspy.h`). This allows display drivers that were written to support RIS to be used with XPU. When supplied a DSO that support both APIs, XPU will continue to use the newer `display.h` protocol by default; the older `ndspy.h` protocol can be selected for that specific driver by specifying `/display/xpu/protocol/<driver> ndspy` in rendermn.ini. RMAN-24361
- Fix a bug where XPU cropped renders produced incorrect displayWindow/dataWindow for .exr in hdprman and revealed missing crop support for .tiff. Matching RIS now. RMAN-24821
- Fix a crash in XPU which could occur when the number of LPEs changes between renders during editing, for example when LPE labels are added mid-session.  RMAN-25022

### Geometry

- Fixed a performance regression in tessellation of subdivision surfaces with ptex assignments. RMAN-24545
- Address XPU under-tessellation of subdivision surfaces near silhouette edges that caused shading and alpha artifacts when dice:rasterorient=1. PRMAN-3385
- Fixed a crash that could occur when unloading displaced geometry in XPU. RMAN-24269
- Fix incorrect N values on polymesh or subdivision mesh geometry observed if Attribute "user" P" is attached to the instance. RMAN-24660
- Fixed an issue that caused hair to appear thinner or less dense when curves in the same curve primitive were coincident and had minwidth enabled. The change is most noticeable in alpha, but can also impact the look of shading in some cases. PRMAN-3555
- `getattribute()` calls referencing u,v now work correctly for curves and polygon meshes. PRMAN-3590
- Fixed an issue that was caused curves to disappear when minwidth was enabled on overlapping, instanced curve geometry in XPUCPU. PRMAN-3625
- When picking reference instances that are closest to the camera, the XPU renderer will now prioritize instances that are actually on screen. This reduces the chance of severe underdicing when the dice offscreenmultiplier is set to high values. This behavior is a closer match to RIS. PRMAN-3254
- Fixed a crash in XPU that would happen when making geometry invisible during interactive rendering. RMAN-24993
- Fixed primvar array reading "off by one" bug in points and volumes. PRMAN-3290
- Fixed issues with ill-conditioned instance transforms (scales near zero) erroneously leading to lack of reference instance selection and misleading "Nested instance is too deep" warnings. PRMAN-3691
- Fixed an XPU bug where overriding the global minwidth setting to 0 on a curves primitive wouldn't take effect. PRMAN-3696
- XPU now supports Attribute "displacementbound" "offscreen", which is useful to ensure that offscreen geometry that displaces into the view frustum does not get subject to offscreen decimation. PRMAN-3611

### Volumes

- XPU now supports "Volume Guiding" in PxrPathTracer (in the new Guiding page). Currently, this setting supports one mode, called "Oversample Volumes" which improves the convergence of thin volumes substantially and has minimal overhead. The Oversample Volumes setting should be enabled whenever volumes are being rendered on their own layer. Enabling "Oversample Volumes" in mixed volume/surface layers is supported but it will increase noise from the surface  
and may not benefit overall convergence. RMAN-23477, RMAN-24536
- Solved an infinite loop within XPU's GPU mode where extremely large volumetric regions are used in conjunction with geometry at a "normal" scale. PRMAN-3522
- The `velocityPrimVar` parameter on PxrVolume (and the scaling of this volume by the `velocityMultiplier` parameter) is now supported in XPU. RMAN-24606
- Fixed a bug in PxrVolume that caused a crash when the Diffuse LPE was requested in a scene with volumes. PRMAN-3587
- Fix an issue where scenes with volumes would crash when rendered on more than one GPU. RMAN-24720
- VDB volumes with empty grids or grids with invalid bounds are now more gracefully handled; they should no longer cause all other volumes in the scene to disappear. PRMAN-3617
- The trace subset controls now work when applied to aggregate volumes in XPU.
- XPU now correctly loads only the finest mip level for volumes with on-disk mipmaps. PRMAN-3586
- XPU now allows primvars named "N" on volume geometry to override the shading normal. PRMAN-3612
- Density Mult and Density Rolloff now work for VDB volumes in Houdini classic when rendering with XPU. RMAN-21353
- Fixed a bug where a transform applied to a volume with no data and infinite bounds would cause infinite dicing leading to an out-of-memory crash. PRMAN-3663
- The policy about Eulerian velocity blur on volumes with non-shaded velocity has been changed in XPU to match RIS: the presence of a named velocity grid to impl_openvdb is not sufficient to automatically enable dsovelocity, Attribute "volume" "dsovelocity" must also be explicitly set to 1 in order to enable Eulerian velocity blur with non-shaded velocity. PRMAN-3692
- The BVH for aggregate volumes has been tuned. It is much less likely to consume excessive RAM, particularly for shots with cameras with small FOV aimed at distant volumes, and the adjustment should provide a modest speed up on complex volume renders. RMAN-24327

### Integrators

- XPU no longer incorrectly splats geometric AOV values when the object is matte. RMAN-24072
- PxrPathTracer has a new LDV (Light Diffuse Visibility) feature, allowing for the output of certain AOVs which are typically used in compositing. PRMAN-3534

### Textures

- Issues relating to relative texture paths used in OSL shaders have been fixed. RMAN-23577
- Fixed a crash that could occur when using UDIM textures in interactive renders. RMAN-25062

### Lighting

- Fix a bug where PxrRampLightFilter would not work if enableShadows on the Light was set 		to 0. PRMAN-3621
- Single-sided PxrMeshLights now work correctly in XPU. RMAN-24552
- specularNearDist, diffuseNearDist, and intensityNearDist attributes on non-sphere area lights (rect, cylinder, disk, mesh) are now correctly applied to reflections of the light seen in shiny surfaces (mirrors, polished floors, glossy materials, etc.). This resolves render differences where a light's reflection in XPU would appear much darker, with the highlight falling off far more aggressively than RIS. PRMAN-3677,PRMAN-3678
- `PxrRampLightFilter` in `distToLight` mode now renders correctly in XPU, when the light's `shadowMaxDist` is set to a finite value, by now using the true shading-point-to-light distance independently of `shadowMaxDist`. Previously, XPU could show light "leaking" past the ramp's `endDist` whenever a finite `shadowMaxDist` was used on the light. PRMAN-3681
- Point mesh lights (attached `PxrMeshLight` to Points geometry) are now supported in XPU (note that this feature is not supported in RIS).

### Shading

#### General

- Added a "HairNormal" user lobe output to PxrMarschner. You can also optionally change LamaChiang's behavior so the normal user lobe outputs normal rather than tangent by setting `ri:shade:chiangCompatibilityVersion` to values greater than 28. For RenderMan 28 and beyond this will be the default behaviour. "HairTangent" is still available to output the hair's tangents and is still recommended over curve normals for denoising purposes. Please update any LPE mappings to get the desired output. RMAN-24535
- PxrSurface now supports a varying connection on the extinction parameter in XPU. Unlike RIS, this will create a volumetric interior whose extinction is determined by the shading input at the point where the ray enters the glass - the extinction will not vary over the extent of the ray within the interior of the surface. This is not a physically accurate shading model, but is easy to control and much cheaper than the RIS functionality, which attempts a true heterogeneous volume shading model. If the latter is desired in XPU, a separate aggregate volume must be created and named to PxrSurface via the volumeAggregate parameter instead. PRMAN-3448
- Address an intermittent crash in path traced subsurface scattering in XPUGPU mode. RMAN-24674
- Allow “Frame” to be queried via OSL getattribute() at shader compile-time instead of shader runtime. PRMAN-3604
- XPU now supports constant matrix parameters to OSL shaders. This allows the use of various RfM projection shading nodes in XPU.
- Fixed a bug when connecting array inputs from PxrRamp to PxrSwitch in XPU.  RMAN-24063.
- Fixed a bug in XPU where bump normal was missing from bxdf samples' light evaluation. PRMAN-3626
- Fixed a bug where user normal in PxrSurface was capturing inactive lobe normals, effectively reducing the active lobe's normal values. The fixed behavior matches RIS causing user normals to only show up for active lobes and equivalent matching LPEs. PRMAN-3626
- The PxrSurface parameter "subsurfaceIor" is now connectable in XPU, allowing varying values (typically between 1.0 and 1.5). PRMAN-3602

#### MaterialX Lama

- All LamaLayer layering modes (AUTO, ROUGH_COATING, SMOOTH_COATING, BLEND) are now fully implemented in XPU, matching RIS behavior. RMAN-24262.
- RefractIn (bending of light directions during light sampling) is now supported for layered Lama  
materials in XPU, matching RIS. Light directions refracted through LamaLayer nodes now correctly account for topMix visibility and IOR/extinction propagation. RMAN-24260, RMAN-20539.
- RefractOut (refraction of the sampled outgoing direction during Bxdf sampling) is now supported for layered Lama materials in XPU. The sampled outgoing direction is now bent when passing through refractive LamaLayer nodes, matching RIS behavior. RMAN-24260.
- accumOpacity (compositeTransparency) is now supported for Lama XPU BxDFs (LamaXpuDielectric, LamaXpuGeneralizedSchlick, and LamaXpuIridescence). RMAN-24585, RMAN-24538.
- LamaSSS parameter sssIOR is now connectable in XPU, allowing varying values (typically between 1.0 and 1.5). Note: this parameter must remain non-varying in RIS. PRMAN-3602.
- LamaDielectric and LamaGeneralizedSchlick now allow absorptionColor and absorptionRadius to  
be varying (connectable) inputs in XPU, enabling heterogeneous surface volumes with extinction  
controlled by surface-varying inputs. This functionality is not supported in RIS. RMAN-24259, PRMAN-3448.
- LamaHairChiang now implements colorTintTT, textureNormal, and textureTangent parameters in XPU. PRMAN-3651.
- LamaHairChiang now matches RIS for curves in scenes with deep ray depth (common in hair renders). RMAN-23959.
- LamaChiang's HairNormal output (userLobeNameNormal) now outputs the surface normal rather than the tangent when ri:shade:chiangCompatibilityVersion is set to a value greater than 28 (this will be the default behavior in RenderMan 28 and beyond). HairTangent remains available and is still recommended for denoising. RMAN-24535.
- Fix duplicate closure traversal in LamaSurface with empty child causing doubled albedo and beauty contribution. PRMAN-3591.
- Fix LamaSurface double-sided in XPU handling to match RIS. RMAN-24824, PRMAN-3591.
- Properly apply tint to match RIS when layering a LamaConductor. RMAN-24958, RMAN-24959.
- Fixed LamaLayer rendering darker in XPU than RIS when layering a dielectric over a diffuse material in AUTO and ROUGH_COATING modes. The diffuse roughness was incorrectly being clamped to the coating roughness from the parent layer node, artificially increasing it and producing a darker result than RIS. RMAN-24943.
- Fixed layered Lama materials rendering black when a LamaLayer node is used as a child of a LamaAdd or LamaMix node. RMAN-24373, RMAN-24662.
- Fixed non-visible top materials still influencing base materials in layered Lama nodes. Top materials with topMix == 0 are now correctly skipped during RefractInDAG traversal. The topMix parameter is also now correctly applied to IOR and extinction computation for top materials. RMAN-20539, RMAN-24260.
- Fixed a crash in LamaDielectric for XPU. RMAN-24585.
- Fixed LamaSurface with LamaEmission on both sides rendering 2× too bright. PRMAN-3592.
- Fixed a RefractIn stack usage bug in Lama affecting combiner materials preventing incorrect refractive logic from being applied. RMAN-24260.
- Fixed blotchy/incorrect rendering when two LamaDiffuse layers are controlled by a mask. RMAN-24727.
- Fixed nested LamaLayer nodes not properly respecting the cumulative mask from ancestor layers.  
Refraction through a partially-masked nested coat was being applied at full strength instead of being scaled by the parent layer's topMix. RMAN-24727.

#### MaterialX

- XPU provides native support for MaterialX <u>[BSDF](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.PBRSpec.md#bsdf-nodes)</u> (RMAN-25043), uniform <u>[EDF](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.PBRSpec.md#edf-nodes)</u> (RMAN-24334) and <u>[combiner nodes](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.PBRSpec.md#utility-nodes)</u>, enabling support for arbitrary MaterialX shading networks directly within the renderer. It is important to note that native MaterialX BSDF and combiner support in XPU is currently available through RenderMan's Hydra integration and USD workflows, and is presently supported in Solaris-based pipelines.
  MaterialX Standard Surface and OpenPBR are both supported through this native MaterialX BSDF and combiner evaluation path when used in Hydra-based workflows such as Solaris.
  There are a small number of MaterialX features that are not yet supported in RenderMan:
  - Only the <u>[uniform_edf](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.PBRSpec.md#uniform_edf)</u> node is currently supported. Other EDF nodes are not yet available.
  - MaterialX <u>[VDF](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.PBRSpec.md#vdf-nodes)</u> nodes are not currently supported. Support for volumetric shading nodes is planned for a future release.
  - MaterialX <u>[PBR shader nodes](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/Specification/MaterialX.PBRSpec.md#pbr-shader-nodes)</u> used directly as surface shaders are not currently supported.
- The ingestion of MaterialX materials via hdPrman has been significantly sped up. In comparison to prior releases, this improves the responsiveness of RIS renders involving MaterialX to PxrSurface shader translation.

---

## RIS and XPU

### General

- Fixed a bug that could lead to crashes with heavy unique string use in high thread contention situations. PRMAN-3521
- A crash has been fixed in the calculation of smooth normals on degenerate polygon meshes. CUSP-9149

### Image Outputs and Displays

- Cryptomatte manifests should no longer contain objects which do not appear in the cryptomatte image data (e.g. holdout objects). RMAN-24850

### Geometry

- Added a geometry primvar "points:scale" which will grow/shrink all points uniformly. It acts as a multiplier on top of the existing width(s).

### Texturing

- Improved the "smoothRayDerivs" option when generating normals. If you are using PxrOSLTexture.h from the RenderMan examples you will need to enable "smoothRayDerivs" using the "PxrTxSmoothRayDerivs" as the "initTxCoords" smoothRayDerivs option has been removed. Alternatively you can also continue to use an old copy of PxrOSLTexture.h. RMAN-24515
- Fixed an issue where invertT could cause higher than expected UDIMs	to be selected. RMAN-24558

### Lighting

- Added a rendermn.ini option `/prman/lighting/ignoreCameraConeAngle` which stops cone angle from affecting camera visible lights. RMAN-24427

### Denoising

- A bug that caused some AOVs to be denoised multiple times has been fixed. RMAN-24638
- Fix a bug where non-Ci AOVs were showing color shifts when the interactive denoiser was enabled RMAN-22901, RMAN-24775
- A bug that caused the denoiser to skip AOVs when using checkpoint files has been addressed. RMAN-24739

### Statistics

- Improved the new stats system sampling queue to serve sampled metric updates at the rate requested by each individual Listener. Previously all attached Listeners would receive updates of each metric at the fastest rate requested by any of them. RMAN-23373, RMAN-24581

---

## RIS

### Geometry

- Matte objects with presence now work correctly with maxNonStochasticOpacityEvents greater than zero. RMAN-24576
- Added a rendermn.ini flag `/prman/raytrace/geometricnormalbias` which changes how RenderMan biases its rays. This can prevent certain artifacts like light leaking from behind a surface with bump. RMAN-24732

### Volumes

- VDB volumes with density grids that are not tagged as fog volumes will now render as fog volumes by default. This should improve workflows when working with VDB volumes that do not have grid class metadata authored. RMAN-21185
- Fixed multi-scatter approximation artifacts on indirect rays. RMAN-24859

### Textures

- Fixed an issue where a grayscale image, converted by the texture manager and used by the PxrImageDisplayFilter, would render with a red tint instead of the expected shades of gray. RMAN-24948

### Shading

- PxrBakeTexture will now accept attributes in the filename which have `<primstr:...>` (the primstr will be ignored). This means they should now work more consistently across baking and rendering modes. In addition, PxrBakeTexture will try and use an OSL version in rendering mode to give better results in a rendering context. RMAN-24542, RMAN-24338

---

## RenderMan for Blender

- Add Ri:Sides ri attribute to the object properties. Setting this to 1 will allow for single-sided rendering. RMAN-24449
- A bug that caused batch renders to only save renders in OpenEXR image format has been addressed. RMAN-24629
- Fixed issue where enabling stylized looks, enabling the RenderMan denoiser, and rendering to "it", would cause the beauty/denoised image to not be the default image shown. RMAN-24609
- Improve time-to-first-pixel with scenes that uses instancing that are not part of a point instancer.
- The Show Emitter setting on particle systems should now work as expected.
- A bug that caused the package operator to not work correctly when a scene referenced a library file from Blender has been addressed.
- Fixed a bug where packaging scene containing a sequence of VDBs failed to package all of the VDB files.
- Fixed a bug where volumes did not render correctly when scrubbing the timeline outside the valid range of the volume's OpenVDB files.
- A bug that caused meshes that had all of its faces set to a secondary material to render incorrectly has been addressed.
- Fixed a bug where the solo node operator could not be assigned to a shortcut.
- A bug that caused light filters to not update properly during IPR has been addressed.
- A bug that caused IPR renders to look incorrect when using crop windows in conjunction with the resolution multiplier has been fixed.
- Blender curve viewport display settings can now be found in the Viewport panel on the render properties tab.
- A bug that caused IPR to restart every time Blender's compositor node graph changes has been addressed.
- Turning off the Velocity Blur attribute for hair particles will now do full deformation sampling for motion blur. Turning this off may be required to improve the accuracy of deformation blur with hair particles with lots of dynamic hair and many child particles.  RMAN-25055

---

## RenderMan for Maya

- Unloading the RfM plugin should no longer crash Maya. RMAN-23950
- Fixed a potential crash when rendering curves, meshes or NURBs with motion blur. RMAN-24733

---

## RenderMan for Katana

- Connections between fixed-sized OSL array outputs (e.g. string[16]) to dynamic array inputs (e.g. string[]) should now function correctly. RMAN-24433
- Fixed a bug that prevented OCIO env var from working in RfK. RMAN-25061

---

## RenderMan for Houdini

- Add support for R21.0.631 production build. RMAN-24531
- PxrLightfilter viewer state: switch to SideFx's “lopxform” static handle binding which correctly handle transforms when PxrLightfilter LOP nodes are used in edit mode. RMAN-24304
- Support ri:dofaspect in hdprman, allowing Camera DOF aspect to work correctly in Solaris. RMAN-24566
- Scene Import LOP object translator: add translators for light filters, env day and portal lights. RMAN-24023
- RenderMan Hydra ROP has been rewritten. RMAN-24023
- Added new "PxrVolumeBox" LOP node that creates a RiVolume box. RMAN-21599
- hdPrman should now be able to detect RenderMan-ready mipmapped textures when the filename contains either the <UDIM> or <primstr> tokens, or both. RMAN-23828
- Fixed a bug that caused the camera aspect ratio conform policy not to work in H21 Solaris' viewport. RMAN-23798
- Fix a bug where instanced lights were not correctly updated interactively following a transform in Solaris. RMAN-23999
- Allow PxrCamera projection vignetting parameters to have a value higher then 1. RMAN-23353
- The "?" button on RenderMan VOP nodes now points to the RenderMan wiki. New "-u" option on args2hda.py to specify a help URL. RMAN-23205
- Preset browser checks if it's in "Solaris" mode by inspecting hou.SceneViewer (e.g. Solaris Desktop) as well as hou.ContextViewer (e.g. SolarisLookDev Desktop) pane tabs. RMAN-24885
- RfH Classic: fixed a crash when rendering geometry with deformation or velocity motion blur RMAN-24733
- In-memory volumes from Houdini/Solaris can now be loaded directly by XPU. This may improve time to first pixel for scenes with heavy OpenVDB volumes in Houdini and Solaris. RMAN-22951
- Restored user-authored grouping:membership on lights RMAN-24650
- RfSolaris: Added support for the camera "exposure" setting. RMAN-21326
- Fixed an issue where Solaris would restart the render when switching AOVs. RMAN-24082
- Fixed an issue where time-varying attributes (including strings with the $F token) on sample filters, display filters, and integrators were not evaluated at the correct time in H21.0 RMAN-24097
- Fix a bug where identifiers in cryptomatte files could change across frames if rendered in separate processes.

---

## Stylized Looks


PxrStylized***ToonControl***

- New node: extracted from PxrStylizedControl for modularity and extended features

PxrStylized***Control***

- UI pages update
- New Painterly_Brush_Custom_AOV param and functionality
- Texture paths defaults updated
- 1-channel .tex support
- New Hatching Projection: *Input Tex Coords*

PxrStylized***HatchControl***

- 1-channel .tex support
- Texture paths defaults updated

PxrStylized***HatchingSampleXPU***

- Updates to *Frequency Step* & *Random Jitter*

PxrStylized***LightControl***

- New light modes: Soft Distant & Area Light

PxrStylized***LinesControl***

- BG Color Passthrough workflow
- Texture paths defaults updated
- *AOV Passthrough* param for upstream PxrStylizedControl AOV writes
- New *Layering* page with *Comp Mode* (18 blend modes)

PxrStylized***PainterlyBrushControl***

- UDIM support for all .tex reads
- New *Source Map 2* and dedicated *Source Normal Map *slots in addition to existing *Source Map*
- New ***Flow Map*** feature for brush rotation
- New ***Signal*** page: for upstream PxrStylized*LightControl* connection