Render Modes#

ovrtx provides three render modes with different balances of throughput and image fidelity. Each RenderProduct selects its mode independently, so cameras in the same scene can use different modes: for example, Real-Time Path Tracing for color images and Minimal for segmentation.

Choosing a render mode#

Choose a mode based on the lighting and outputs your application needs. Real-Time Path Tracing is the default.

Mode

omni:rtx:rendermode

Use and behavior

Real-Time Path Tracing

RealTimePathTracing

Path-traced lighting with real-time denoising, including indirect illumination, reflections and shadows. Use for camera simulation and synthetic images that need these lighting effects at interactive rates.

Path Tracing

PathTracing

Accumulates samples within a render step. Use for offline or reference images when the additional convergence time is acceptable.

Minimal

MinimalRendering

Simplified shading for workloads that prioritize throughput over path-traced lighting, such as segmentation, bounding-box visualization and reinforcement learning across many environments.

Output support differs by mode; see Camera Outputs. Minimal does not produce HdrColor and cannot supply the input required by the Camera generic core model.

Selecting a render mode#

Author the token attribute omni:rtx:rendermode on the RenderProduct. These snippets select Path Tracing for a 640 × 480 product and request LdrColor. They use an existing Camera prim at /World/Camera; the Python snippet uses an existing USD stage.

#usda 1.0
def Scope "Render" {
    def RenderProduct "Camera" {
        int2 resolution = (640, 480)
        rel camera = </World/Camera>
        rel orderedVars = [<LdrColor>]

        # Select path-tracing render mode
        token omni:rtx:rendermode = "PathTracing"

        def RenderVar "LdrColor" {
            string sourceName = "LdrColor"
        }
    }
}
from pxr import Gf, Sdf, UsdRender

stage.DefinePrim("/Render", "Scope")
product = UsdRender.Product.Define(stage, "/Render/Camera")
product.CreateResolutionAttr().Set(Gf.Vec2i(640, 480))
product.CreateCameraRel().SetTargets(["/World/Camera"])
# Select the render mode on this product, independently of other products.
product.GetPrim().CreateAttribute(
    "omni:rtx:rendermode", Sdf.ValueTypeNames.Token
).Set("PathTracing")
# Request the tone-mapped color image.
color = UsdRender.Var.Define(stage, "/Render/Camera/LdrColor")
color.CreateSourceNameAttr().Set("LdrColor")
product.CreateOrderedVarsRel().SetTargets([color.GetPath()])

Mode availability#

All three modes are available by default. Disable unused modes when creating the renderer to avoid allocating resources needed only by those modes. For example, a Minimal-only workload can save memory by disabling both path-tracing modes. Selecting Minimal on a RenderProduct alone does not disable the others or release their resources.

Availability is configured through RendererConfig in Python or configuration entries passed to ovrtx_create_renderer() in C:

Python option

C configuration entry

enable_realtimepathtracing

ovrtx_config_entry_enable_realtimepathtracing()

enable_pathtracing

ovrtx_config_entry_enable_pathtracing()

enable_minimal

ovrtx_config_entry_enable_minimal()

At least one mode must remain enabled; disabling all three fails renderer creation. With the default renderer settings, if a RenderProduct requests an unavailable mode, the renderer logs a warning and uses the first available mode in this order: Real-Time Path Tracing, Path Tracing, Minimal.

Renderer instances in one process share mode availability. A later instance inherits it when the options are omitted; an explicit conflicting option fails that instance’s creation. The choice stays fixed while shared graphics resources remain alive, including when retained by keep_system_alive. See Startup render mode availability for Python/C examples and the resource-lifetime rules for changing that choice.