Fix renderer cadence after environment reset#6610
Conversation
Environment resets can change simulation state without advancing the physics-step counter. Invalidate render-context scene-state cadence in every reset implementation so the next render republishes transforms. Fixes isaac-sim#6609
Greptile SummaryThis PR fixes a renderer cadence bug where
Confidence Score: 4/5The fix is safe to merge; it makes a one-line idempotent change across four env classes, and reset_scene_state_cadence() is a no-op when no renderers are registered. The env changes are minimal, correct, and consistent. The only imperfection is the DirectMARLEnv test constructing the env outside its try block, which would hide the original exception on a constructor failure. source/isaaclab/test/envs/test_direct_marl_env.py — env constructor is outside the try/finally guard Important Files Changed
Sequence Diagram%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant Caller
participant Env as Env._reset_idx()
participant RC as sim.render_context
participant Camera as Camera._update_buffers()
Caller->>Env: reset()
Note over Env: physics step counter unchanged
Env->>Env: scene.reset(env_ids)
Env->>Env: event_manager, managers reset
Env->>RC: reset_scene_state_cadence()
Note over RC: _last_scene_state_step = None
Caller->>Camera: read observation (camera)
Camera->>RC: render_into_camera(physics_step_count)
RC->>RC: update_scene_state(physics_step_count)
Note over RC: _last_scene_state_step != None ✓ update_transforms() + update_geometries() run
RC->>Camera: render + read_output
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant Caller
participant Env as Env._reset_idx()
participant RC as sim.render_context
participant Camera as Camera._update_buffers()
Caller->>Env: reset()
Note over Env: physics step counter unchanged
Env->>Env: scene.reset(env_ids)
Env->>Env: event_manager, managers reset
Env->>RC: reset_scene_state_cadence()
Note over RC: _last_scene_state_step = None
Caller->>Camera: read observation (camera)
Camera->>RC: render_into_camera(physics_step_count)
RC->>RC: update_scene_state(physics_step_count)
Note over RC: _last_scene_state_step != None ✓ update_transforms() + update_geometries() run
RC->>Camera: render + read_output
Reviews (1): Last reviewed commit: "Fix renderer cadence after environment r..." | Re-trigger Greptile |
Description
Environment resets can change simulation state without advancing the physics
step counter.
RenderContextdeduplicates scene-state publication by thatcounter, so the first camera read after reset could skip renderer transform
updates and reuse pre-reset geometry.
This change invalidates scene-state cadence at the end of every environment
reset implementation that owns
_reset_idx():ManagerBasedEnvManagerBasedRLEnvDirectRLEnvDirectMARLEnvThe change remains backend-neutral and leaves scene population, transform
publication, temporal history, and CUDA synchronization with
RenderContextand the renderer adapters.
Fixes #6609
Type of change
Screenshots
Not applicable. The regression asserts renderer lifecycle state directly; the
linked issue contains quantitative Newton/OVRTX matrix and depth-AOV evidence.
Validation
assert 7 is NoneforManagerBasedEnv.ManagerBasedEnv: 1 passedManagerBasedRLEnv: 1 passedDirectRLEnv: 1 passedDirectMARLEnv: 1 passed./isaaclab.sh -p tools/changelog/cli.py check develop./isaaclab.sh -f(run before commit and again before push)Checklist
pre-commitchecks with./isaaclab.sh --formatsource/isaaclab/changelog.d/CONTRIBUTORS.md