Hydra RPR (HdRPR)
Render
AOVs
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
Primitives
Mesh
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).
Limitations:
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.
Curve
Supported:
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
Limitations:
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).
Light
Supported:
Dome light
Distant light
Point Light
Spot Light
IES Light
Sphere light
Disk light
Rect light
Cylinder light
Limitations:
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.
Point
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
Volume
Supported:
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
andscale
from OpenVDB Houdini-like metadata for density and temperature.
Camera
Supported:
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
Material
Supported:
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).
General
Motion Blur
Supported:
Transformation motion blur only
Meshes: translate, rotate and scale motion blur
Camera: translate, rotate motion blur
instantaneousShutter
camera attribute
Limitations:
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
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).