Commit ca23aca
authored
Re-enable the Kit visualizer pause checks (#7049)
Temporary workaround for NVBUG 6570125 while we wait for the upstream
renderer fix.
## Problem
RTX responsiveDenoising continues refining the image after physics
stops, so fresh renders captured during a pause are no longer stable.
The affected Kit visualizer checks are currently green for the wrong
reasons:
Tiled camera: #6658 changed the paused captures to reuse the cached
sensor frame, so the assertion effectively compares the same frame
against itself and can't detect renderer instability.
Viewport: still performs a real comparison, but the known denoiser noise
can push it over the existing threshold and the failure is absorbed by
retries.
## What this changes
This PR restores fresh renders for the tiled pause check and adjusts the
per-channel difference threshold only for the affected Kit RTX pause
paths.
The existing 100-pixel gate stays unchanged. We're changing how large a
per-channel difference must be before a pixel is counted, rather than
simply allowing more differing pixels.
| site | @50 | @80 | @100 | @120 | @150 | @160 | outcome |
|---|---|---|---|---|---|---|---|
| Kit viewport (Newton) | 67 | **12** | 8 | 7 | 3 | — | 80 |
| Kit viewport (PhysX) | 14 | 4 | 3 | 1 | 0 | — | 80 |
| Kit tiled (Newton) | 999 | 604 | 226 | 120 | 59 | **49** | 160 |
| Kit tiled (PhysX) | 103 | 4 | 4 | 2 | 0 | — | 80 |
| Newton ViewerGL | 0 | 0 | 0 | 0 | 0 | — | 50 |
Values are the number of differing pixels at each per-channel threshold.
For the margin-critical case (Kit tiled camera, Newton backend),
threshold 160 leaves at most 49 px of paused denoiser noise (worst of
n=36) against at least 160 px with real motion (weakest of n=72), both
measured with the denoiser enabled. With the existing 100-pixel gate the
known renderer noise passes at 2.0× margin while real motion is still
detected at 1.6×.
## Changes
`_assert_frames_remain_stable` now accepts a per-call
`channel_diff_threshold`; the default remains 50.
Kit RTX pause checks use 80 for the viewport, 160 for the tiled camera
on Newton, and 80 for the tiled camera on PhysX — three separate
constants, since the tiled PhysX cell measures 103 px at the default
threshold and must not silently track a later change to the viewport
value. Newton ViewerGL remains at the strict default since it doesn't
exercise the affected DLSS path.
`max_differing_pixels` remains 100 everywhere.
The tiled pause check is restored to fresh renders instead of cached
frames, so the assertion is actually exercising renderer stability
again.
## Validation
With retries disabled, the workaround passed 40/40 runs across all four
affected configurations.
As a control, restoring the original threshold of 50 reproduced the
failure 6/6 times at 766–949 differing pixels. Those six failures are
all the **tiled** assertion: the control ran under `pytest -x` and the
viewport test is defined first in the same file, so the run aborted at
the tiled test and the viewport site passed at 50 in those reps. The
control therefore demonstrates that the tiled workaround filters real
denoiser noise rather than simply making the test pass; it is not
evidence for the viewport site.
The viewport raise from 50 to 80 rests instead on production CI, where
the assertion has really been failing (`107 pixels differed, expected at
most 100`, with a historical band reaching 161 px), plus n=5 bench
samples showing 67 px at threshold 50 falling to 12 px at 80.
The same change was validated on three independent L40S CI runners
through #7055, with all four visualizer integration tests passing
first-pass, no retries. Restoring fresh renders also had no meaningful
runtime impact (~27s median).
This is a temporary workaround for NVBUG 6570125 and should be removed
or re-measured once the upstream fix is available. That revert is
load-bearing rather than cosmetic: with the denoiser disabled — the
world after the renderer fix — the weakest real motion in the governing
cell measures 80 px at threshold 160, which is *below* the 100-pixel
gate. Leaving 160 in place after the fix ships would make the tiled
check blind to the weakest motion it exists to catch, so the removal
comment on the constants is the thing guarding that.
---------
Signed-off-by: fanes <74020209+fatimaanes@users.noreply.github.com>1 parent a4c0d82 commit ca23aca
2 files changed
Lines changed: 35 additions & 11 deletions
File tree
- source/isaaclab_visualizers
- changelog.d
- test
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
Lines changed: 32 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
178 | 192 | | |
179 | 193 | | |
180 | 194 | | |
| |||
569 | 583 | | |
570 | 584 | | |
571 | 585 | | |
| 586 | + | |
572 | 587 | | |
573 | 588 | | |
574 | | - | |
| 589 | + | |
575 | 590 | | |
576 | 591 | | |
577 | | - | |
| 592 | + | |
| 593 | + | |
578 | 594 | | |
579 | 595 | | |
580 | 596 | | |
| |||
1259 | 1275 | | |
1260 | 1276 | | |
1261 | 1277 | | |
| 1278 | + | |
1262 | 1279 | | |
1263 | 1280 | | |
1264 | 1281 | | |
| |||
1400 | 1417 | | |
1401 | 1418 | | |
1402 | 1419 | | |
1403 | | - | |
1404 | | - | |
1405 | | - | |
1406 | | - | |
1407 | | - | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
1408 | 1424 | | |
1409 | | - | |
1410 | | - | |
1411 | | - | |
1412 | | - | |
| 1425 | + | |
| 1426 | + | |
1413 | 1427 | | |
1414 | 1428 | | |
1415 | 1429 | | |
| |||
1425 | 1439 | | |
1426 | 1440 | | |
1427 | 1441 | | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
1428 | 1449 | | |
1429 | 1450 | | |
1430 | 1451 | | |
| |||
0 commit comments