Radeon ProRender

Hydra RPR (HdRPR)



AMD Radeon ProRender supports a set of AOVs (Arbitrary Output Variables), also known as render passes, in the Viewport. AOVs can be useful for examining various aspects of the scene through fine-tuning and tweaking the scene, or as a diagnostics tool.

To switch between AOVs, at the top of the Viewport click AOV and choose the required option.

Render Settings

The render settings of HdRPR can be configured by using HdRenderDelegate::SetRenderSetting method.

For more details on the relevant render settings, see this code file: pxr/imaging/plugin/hdRpr/python/generateRenderSettingFiles.py in the settings entry of each array entry of render_setting_categories: defaultValue defines the setting type, and name corresponds to the key argument of HdRenderDelegate::SetRenderSetting.

The Render Quality

A renderer restart might be required when choosing a specific quality level of rendering.

Possible values:

  • Low
  • Medium
  • High
  • Full (default)
  • Northstar, Full 2.0 (Beta)

When the Render Quality value is set to Low or Medium, some of the settings mentioned below will not be available and thus hidden in the user interface:

  • Ambient Occlusion Radius
  • Max Pixel Samples

When the Render Quality value is set to Low, some of the settings mentioned below will not be available and thus hidden in the user interface:

  • Device

Render Mode

  • Global Illumination (default)
  • Direct Illumination
  • Wireframe
  • Material Index
  • Position
  • Normal
  • Texcoord
  • Ambient Occlusion
  • Diffuse



HdRPRP supports HdMesh primitives and all standard primvars:

  • The st primvar name is automatically resolved if the bound material network has the corresponding varname for the st token;
  • The points primvar can be computed (usdSkel).


  • Subdivision is supported in Full quality only;
  • Corner and crease indices of subdivision surface are not supported;
  • The displayColor primvar has very limited effect, and if no material for mesh is present we will shade mesh with the first available color in the displayColor primvar.



  • primvars: points, widths (varying (per segment) and vertex interpolation), st (constant and uniform (per curve) interpolation)
  • wrap: segmented, nonperiodic, periodic
  • type: linear, cubic
  • basis: bezier


  • No native support for linear curves. They are emulated through Bézier basis functions: each segment of a linear curve (two points) is expanded into four points of the Bézier basis function.
  • CatmullRom and bspline bases are interpreted as linear.
  • Each segment of the Bézier curve uses only widths from its edge points (two middle widths are dropped as there is no way to pass them into the RPR core API).



  • Dome light
  • Distant light
  • Point Light
  • Spot Light
  • IES Light
  • Sphere light
  • Disk light
  • Rect light
  • Cylinder light


  • Geometry lights (sphere, disk, rect and cylinder lights) are approximated with cubes in Low to High qualities, because Low and Medium qualities do not support area lights — they are simply not processed in lighting computations.


Although the HdPoints primitive is supported, this is preliminary both in terms of performance and features and requires a lot of improvements from the RPR API core side.

HdPoints are simply instanced sphere meshes. There are no optimizations that can be applied to point clouds or particle systems.

The only thing that makes HdPoints different from the system of instances created by hand is that all instances use one material.

This material is created from the displayColor primvar. If displayColor has vertex interpolation, hdRpr will not create a separate material for each instance but instead optimize it by creating one material and one color buffer that are bound to each instance.

HdPoints-supported primvars:

  • points (they can be of the computed type, just like USDSkel)
  • widths
  • displayColor



  • Density, emission and albedo grids.
  • Float OpenVDB grids only. From file or from memory (Houdini only).
  • hdRpr specific grid attributes:
    • normalize (type: boolean, default: false) — whether gridValue should be normalized
    • scale (type: float, default: 1.0) — the scale to be applied to the value before the lookup table. gridColor = LUT(scale * gridValue)
    • gain (type: float, default: 1.0 - gain to be applied to LUT values. LUT(x) = LUT(x) * gain + bias
    • bias - float - 0.0 - bias to be applied to LUT values. LUT(x) = LUT(x) * gain + bias
    • ramp - vec3fArray - [vec3(0), vec3(1)] - value lookup table
    • blackbodyMode - TfToken - auto (actual for temperature grid only):
      • physical: temperature interpreted as pure physical values - the temperature in Kelvins. The temperature will be normalized by some max temperature and used as an emissive lookup. The emission lookup table will be filled with blackbody colors in the range [0, 10000].
      • artistic: temperature is directly passed to an emission lookup table.
      • auto: select the physical or artistic mode depending on the file metadata.
  • Parsing of ramp and scale from OpenVDB Houdini-like metadata for density and temperature.



  • Transform motion blur
  • Perspective and orthographic projections
  • Focal length (focalLength)
  • Focus distance (focusDistance)
  • Clipping range (clippingRange)
  • FStop (fStop)
  • Horizontal aperture (horizontalAperture)
  • Vertical aperture (verticalAperture)
  • Shutter open (shutterOpen)
  • Shutter closed (shutterClose)
  • Instantaneous shutter (instantaneousShutter)

The limitations:

  • Horizontal aperture offset (horizontalApertureOffset)
  • Vertical aperture offset (verticalApertureOffset)

You can learn more about camera attributes here



  • UsdPreviewSurface, UsdUvTexture and UsdTransform2d (on st primvar reader).
  • Houdini’s Principled Shader node when karma material network selector is set (controlled by HDRPR_MATERIAL_NETWORK_SELECTOR environment variable, rpr is the default for Houdini plug-in).
  • RPR specific nodes (see node definitions here).


Motion Blur


  • Transformation motion blur only
  • Meshes: translate, rotate and scale motion blur
  • Camera: translate, rotate motion blur
  • instantaneousShutter camera attribute


  • In USD, it’s possible to have an arbitrary number of time samples that fall in shutter interval. We sample only edge values.

Motion blur is controlled by two key components:

  • The shutter interval of the active camera
  • The time of the sampled transformation


  • Subdivision is supported on meshes only.
  • To control the level of subdivision add the rpr:subdivisionLevel int primvar to the mesh primitive.
  • Subdivision is supported in Full quality only.
  • Corner and crease indices of subdivision surface are not supported.

Visibility Flags

The visibility settings allow you to make objects in the scene visible or invisible with regard to particular light rays, such as camera visibility, reflections or shadows.

Object visibility is controlled through primvars of the boolean type:

  • rpr:visibilityPrimary
  • rpr:visibilityShadow
  • rpr:visibilityReflection
  • rpr:visibilityGlossyReflection
  • rpr:visibilityRefraction
  • rpr:visibilityGlossyRefraction
  • rpr:visibilityDiffuse
  • rpr:visibilityTransparent
  • rpr:visibilityLight

Visibility flags are supported by meshes, basisCurves, points and geometry lights (sphere, rect, cylinder and disk).