Skip to content

Consolidate camera preparation and RTX exposure policy - #5

Open
mataylor-nvidia wants to merge 7 commits into
temiroff:atemirov/rgb-radiance-groundworkfrom
mataylor-nvidia:fix/camera-data-physics-dependency
Open

mataylor-nvidia wants to merge 7 commits into
temiroff:atemirov/rgb-radiance-groundworkfrom
mataylor-nvidia:fix/camera-data-physics-dependency

Conversation

@mataylor-nvidia

@mataylor-nvidia mataylor-nvidia commented Oct 16, 2026 •

Copy link
Copy Markdown

Description

Follow-up to isaac-sim#8352, targeting its source branch. Camera preparation and shared RTX exposure policy now have one owner each, with duplicate setup and coverage removed. RTX exposure is now neutralized only when rgb_radiance is requested; isp_cfg alone preserves authored exposure. No public API changes.

  • Move physics subscription management out of Camera into SensorBase. Its preparation callback runs at order 9 before sensor initialization at order 10, preserving weak ownership, exception forwarding, cleanup, and preparation of every camera before shared-stage export. Other sensors use a no-op hook: one extra lifecycle callback, no per-step work. Both initialization subscriptions are owned by one _initialize_handle ExitStack and released with one close call; no tuple or _prepare_initialize_handle field remains. Cleanup is registered immediately after each subscription so partial construction remains safe, and manually constructed sensor fixtures retain _initialize_handle = None.

  • Consolidate renderer acquisition, prim lookup, and render-spec construction in Camera. Resolve paths once per preparation call and retain the initialization fallback without cached state.

  • Centralize the radiance exposure decision in the existing internal RTX helper. Both RTX backends pass their camera spec directly; PPISP normalization and backend-specific Gaussian routing remain with their existing owners.

  • Replace duplicate backend exposure tests with shared HDR/radiance/ISP cases using explicit expected values. Merge the RTX constructor settings assertions into the existing initialization-order test. Retain backend output extraction, Gaussian routing, buffer aliasing, and multi-camera preparation-order coverage.

The exposure-policy cleanup changes production code by +13/-12 lines and tests by +25/-64 lines (38 fewer lines overall). A core changelog entry documents the exposure behavior change; existing skip fragments cover the internal refactors.

Validation

On the final cleanup:

  • Camera output contract: 18 passed.

  • Shared RTX exposure policy: 3 passed.

  • Isaac RTX renderer contract: 35 passed.

  • OVRTX renderer contract, excluding integration: 55 passed, 5 deselected, using a fresh temporary directory.

  • Mutation check: bypassing the exposure-policy guard makes the standalone HDR case fail with the expected ISO mismatch; restoring it returns all 3 cases to passing.

  • Full uv run isaaclab --format, changelog gate against the PR base, and git diff --check: passed.

On the final handle-consolidation commit: camera output contract (including preparation order and callback cleanup) 18 passed, sensor destructors 4 passed, and OpenCV distortion 46 passed. Full formatting/lint, changelog, and diff checks passed. Renderer-only results above are reused from the preceding exposure-policy commit.

Full Isaac Sim/RTX/OVRTX integration and PhysX runtime fixture tests remain unverified. The full OVRTX attempt stopped producing output and was terminated; the non-integration rerun passed. Initial checks encountered pytest cache/temp-directory issues; final focused runs disabled the cache and OVRTX used a fresh temporary directory. Existing PyTorch deprecation warnings were emitted.

Latest exposure-policy change

Removed the isp_cfg check from the shared exposure helper. Only rgb_radiance triggers neutral exposure; ISP normalization, pipeline setup, and Gaussian HDR routing retain their existing behavior. Updated both renderer docstrings and the core changelog.

Validation on this commit: shared exposure tests 3 passed, Isaac RTX contracts 35 passed, OVRTX non-integration contracts 55 passed (5 integration cases deselected). Restoring the previous condition makes the ISP-only regression case fail; restoring the fix passes. Full formatting/lint, changelog, and diff checks passed. Earlier lifecycle test results above remain applicable.

The clean documentation build was attempted but blocked when an Omniverse Kit import requested EULA acceptance. The EULA was not accepted on the user's behalf.

@github-actions github-actions Bot added bug Something isn't working isaac-lab labels Oct 16, 2026
@mataylor-nvidia mataylor-nvidia changed the title Move camera preparation lifecycle into SensorBase Consolidate camera preparation and RTX exposure policy Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working isaac-lab

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant