application-flow
High-level overview of a typical ovrtx application lifecycle. Use when user asks how to structure an ovrtx program, what the main…
Mapping rendered output to access pixel data on CPU or GPU. Use when user asks to get pixels, read an image, save a PNG, display rendered output, or access render var data.
$ npx -y skills add nvidia-omniverse/ovrtx --skill reading-render-output --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/reading-render-outputContext preview
The summary Claude sees to decide when to auto-load this skill.
Mapping rendered output to access pixel data on CPU or GPU. Use when user asks to get pixels, read an image, save a PNG, display rendered output, or access render var data.
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: LicenseRef-NvidiaProprietary # # NVIDIA CORPORATION, its affiliates and licensors retain all intellectual # property and proprietary rights in and to this material, related # documentation and any modifications thereto. Any use, reproduction, # disclosure or distribution of this material and related documentation # without an express license agreement from NVIDIA CORPORATION or # its affiliates is strictly prohibited. name: reading-render-output description: > Mapping rendered output to access pixel data on CPU or GPU. Use when user asks to get pixels, read an image, save a PNG, display rendered output, or access render var data. license: LicenseRef-NvidiaProprietary author: NVIDIA ovrtx tags: - ovrtx - rendering - outputs tools: - Read - Grep
Use this skill when the user asks to get pixels, read an image, save a PNG, display rendered output, or access render var data.
Resolve inputs in this order: existing repository files and referenced snippets, explicit user request, then broader agent context.
1. Identify the RenderProduct path, full RenderVar prim path, target device, and whether the caller needs CPU pixels, CUDA tensors, or CUDA arrays. 2. Read the matching map/unmap snippet before choosing Python `frame.render_vars[...]` access or C `ovrtx_map_render_var_output()`. 3. Preserve dtype, shape, channel order, and ownership rules for the selected output. 4. Always unmap C outputs, and keep CUDA synchronization aligned with the CUDA interop skill when reading on GPU. 5. When changing code, run the camera sensor or minimal example snippet that owns the readback path whenever practical.
This skill has no scripts.
This skill is the hands-on counterpart to the conceptual reference at `docs/sensors/sensor_outputs.rst`, which describes what a render variable output is and how its tensors and params are laid out. Use this skill for *how* to map and read one; use the conceptual page when the question is about *what* the structure carries or *why* it is shaped the way it is.
After stepping the renderer and fetching results, each `RenderVarOutput` is identified by its full RenderVar prim path (for example `/Render/Camera/LdrColor`) and must be mapped to access its data. Names such as `LdrColor` or `HdrColor` are RenderVar `source_name` values, not Python `frame.render_vars` keys.
A render variable carries one or more named tensors and zero or more named params. For a single-tensor render variable, consume the mapping directly with DLPack (`np.from_dlpack(rv)`); for a multi-tensor render variable, address tensors by name (`rv["TensorName"]`) and reach params through `rv.params["paramName"]`. Both tensors and params expose the DLPack protocol uniformly, so `np.from_dlpack(rv["TensorName"])` and `np.from_dlpack(rv.params["paramName"])` both yield zero-copy NumPy/Warp/etc. arrays.
After reading/processing, unmap to release the mapped buffer.
> **Source:** `examples/python/minimal/main.py` snippet `read-render-output`
> **Source:** `tests/docs/python/test_camera_sensors.py` snippet `doc-step-and-map-camera-outputs` > > **Source (save-to-PNG example):** `examples/python/projectors/main.py` snippet `projectors-save-png`
> **Source:** `examples/python/lpes/main.py` snippet `doc-read-lpe-outputs`
> **Source:** `tests/docs/python/test_camera_sensors.py` snippet `doc-map-render-output-cuda`
> **Source:** `examples/c/minimal/main.cpp` snippet `map-rendered-output-cpu`
> **Source:** `tests/docs/c/test_camera_sensors.cpp` snippet `doc-map-render-output-cuda-c`
> **Source:** `tests/docs/c/test_camera_sensors.cpp` snippet `doc-map-render-output-cuda-array-c`
This helper is not part of the ovrtx API; define it in your own code (see `examples/c/minimal/main.cpp`):
> **Source:** `examples/c/minimal/main.cpp` snippet `find-output-helper`
| Python | C | |--------|---| | `rv = rende
ovrtx is a C and Python library for embedding Omniverse RTX sensor simulation and visualization directly into applications.
High-level overview of a typical ovrtx application lifecycle. Use when user asks how to structure an ovrtx program, what the main…
Asynchronous operation patterns including polling, timeouts, and non-blocking workflows. Use when user asks about async…
Replacing persistent ovrtx attribute bindings with reusable ovstage queries for repeated writes or maps. Use when user asks about…
Binding materials to prims at runtime. Use when user asks to assign a material, change a material, set material binding, or swap…
Available camera render outputs for Real-Time Path-Tracing (RT2) mode. Use when user asks what AOVs/render vars are available,…
Cloning USD subtrees to create copies at new paths. Use when user asks to clone, duplicate, copy a prim, or create instances of…