Skip to content

Document that Isaac RTX enable_shadows cannot disable shadows - #7461

Closed
mataylor-nvidia wants to merge 2 commits into
isaac-sim:developfrom
mataylor-nvidia:mataylor/isaac-rtx-enable-shadows-no-op
Closed

Document that Isaac RTX enable_shadows cannot disable shadows#7461
mataylor-nvidia wants to merge 2 commits into
isaac-sim:developfrom
mataylor-nvidia:mataylor/isaac-rtx-enable-shadows-no-op

Conversation

@mataylor-nvidia

@mataylor-nvidia mataylor-nvidia commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description

IsaacRtxRendererGlobalSettingsCfg.enable_shadows reads as a working shadow switch. It is not one,
and has not been since #5449. This documents the limitation and its cause.

Setting it to False leaves every camera output byte-identical.

Root cause

enable_shadows writes /rtx/shadows/enabled — the shadow switch of the RaytracedLighting
pipeline. Isaac Lab used to pin that render mode (see #310, a workaround for its casing), so the
flag worked when it was added. #5449 switched the default to RealTimePathTracing for determinism,
and the flag became inert that day, silently.

RaytracedLighting is no longer selectable at all on Isaac Sim 6.0 — requesting it is rejected the
same way a nonsense token is:

requested /rtx/rendermode readback
RaytracedLighting RealTimePathTracing ← rejected
BogusMode123 RealTimePathTracing ← rejected
PathTracing / Minimal / MinimalRendering / RealTimePathTracing kept

None of the three surviving pipelines reads the setting. RealTimePathTracing and PathTracing
always cast shadows by design; Minimal uses omni:rtx:minimal:castShadows, which Isaac Sim 6.0's
OmniRtxSettingsMinimalAPI_1 does not define (it has minimal:mode, minimal:constantColor and
the two sceneDb:ambientLight* properties). The ovrtx runtime carries a newer RTX that does
define it, which is why OVRTXRendererCfg.enable_shadows works.

Measurements

Slab, 1.2 m pillar, sphere, distant light at 45 degrees, 640x480, unmodified Camera /
IsaacRtxRendererCfg, reading the color buffer.

attempt applied result
enable_shadows=False renderer init identical
settings.set("/rtx/shadows/enabled", False) runtime identical
--/rtx/shadows/enabled=false Kit startup identical
rtx.shadows.enabled = false in the .kit file app config identical
per-light UsdLux ShadowAPI inputs:shadow:enable=False before and after Fabric population identical
omni:rtx:minimal:castShadows=False, incl. with OmniRtxSettingsMinimalAPI_1 applied to the prim 4 variants, in real Minimal mode identical

Every one reports success at the layer it touches — the carb setting reads back False, and the USD
attributes report defined=True authored=True value=False. Nothing above the renderer misbehaves;
only the consumer is missing.

Shadow-free options that do work today

  • Request the albedo data type. It is unlit, so there is nothing to shadow.
  • Light the scene with ambient only (ambient_light_intensity), so no directional source casts.
  • Use the OVRTX renderer with OVRTXRendererCfg(enable_shadows=False) in Minimal mode (Turn off OVRTX shadows by default #7454).

There is no way to keep RTPT or Minimal lighting and drop the cast shadows on this backend. That
needs an Isaac Sim RTX uplift to the build that defines castShadows.

Note on test coverage

test_isaac_rtx_global_settings does cover this field, but asserts
settings.get("/rtx/shadows/enabled") is True against a fake settings object. It verifies that the
config field writes the carb key, never that the key does anything, so it passed unchanged through
the regression. Catching this class of bug needs a pixel comparison; the rendering suite's
make_xfail_rendering_params would be the natural home, as a non-strict xfail that reports
XPASS (REVIEW XFAIL) when a future Isaac Sim honours the setting. Happy to add that here or as a
follow-up.

Type of change

  • Documentation update

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works — docstring-only change; see the test-coverage note above
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

IsaacRtxRendererGlobalSettingsCfg.enable_shadows writes /rtx/shadows/enabled,
which the RTX version shipped by Isaac Sim 6.0 registers but no render mode
reads. Setting it to False leaves every camera output byte-identical, so the
field reads as a working shadow switch while being inert. Record the
limitation and point at the OVRTX equivalent, which does take effect.
@mataylor-nvidia
mataylor-nvidia requested a review from a team August 31, 2026 22:55
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Aug 31, 2026

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

The change documents that IsaacRtxRendererGlobalSettingsCfg.enable_shadows is ineffective with the RTX version shipped in Isaac Sim 6.0 and adds the corresponding isaaclab_physx changelog fragment.

  • Design and architecture: The limitation is documented on the backend-specific global settings field where users encounter it. The OVRTX alternative is referenced without introducing runtime coupling between the renderer packages.
  • API: The public API remains unchanged: the field retains its bool | None type, None default, name, and configuration semantics. The added documentation clarifies current backend behavior and identifies the working OVRTX counterpart.
  • Implementation: The warning and changelog consistently describe the affected setting and its /rtx/shadows/enabled path. The main non-blocking maintenance consideration is that the limitation is explicitly version-specific and should be revisited when Isaac Sim's RTX runtime is upgraded.

No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.

Automated review; human maintainers own approval decisions.

@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR clarifies that IsaacRtxRendererGlobalSettingsCfg.enable_shadows does not affect rendered output with the RTX version shipped in Isaac Sim 6.0.

  • Expands the field docstring with the backend limitation and points users to the effective OVRTX alternative.
  • Adds a corresponding isaaclab_physx changelog fragment.

Confidence Score: 5/5

The PR appears safe to merge because it only clarifies existing renderer behavior and adds a matching changelog entry.

The changes are documentation-only and introduce no runtime, build, data, or security behavior changes requiring correction.

Important Files Changed

Filename Overview
source/isaaclab_physx/isaaclab_physx/renderers/isaac_rtx_renderer_cfg.py Documents the existing no-op shadow setting without changing runtime behavior.
source/isaaclab_physx/changelog.d/mataylor-isaac-rtx-enable-shadows-no-op.rst Records the documentation correction and identifies the working OVRTX alternative.

Reviews (1): Last reviewed commit: "Document that Isaac RTX enable_shadows c..." | Re-trigger Greptile

Name the retired RaytracedLighting pipeline as the setting's missing consumer,
note that per-light UsdLux ShadowAPI is ignored for the same reason, and point
at the shadow-free options that do work.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant