Skip to content

OVRTX Correctness#5401

Merged
pbarejko merged 14 commits into
isaac-sim:developfrom
huidongc:ovrtx-correctness
Apr 30, 2026
Merged

OVRTX Correctness#5401
pbarejko merged 14 commits into
isaac-sim:developfrom
huidongc:ovrtx-correctness

Conversation

@huidongc
Copy link
Copy Markdown
Collaborator

@huidongc huidongc commented Apr 25, 2026

Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
List any dependencies that are required for this change.

Fixes # (issue)

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (existing functionality will not work without user modification)
  • Documentation update

Screenshots

Please attach before and after screenshots of the change if applicable.

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
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@huidongc huidongc marked this pull request as draft April 25, 2026 09:08
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Apr 25, 2026
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Summary

This PR refactors how simple shading modes are configured in the OVRTX renderer. Instead of a boolean simple_shading_mode config flag, shading modes are now specified via data_types (e.g., "simple_shading_constant_diffuse"). The kernel extract_all_rgba_tiles_kernel is updated to handle 3-channel RGB buffers in addition to 4-channel RGBA. The implementation is mostly correct but has a critical bug in the buffer creation logic.

Architecture Impact

  • Breaking change: Removes OVRTXRendererCfg.simple_shading_mode config option. Users relying on this boolean flag will need to update their configs to use the new data_types-based approach.
  • API change: get_render_var_config() signature changed from (data_types, simple_shading_mode) to just (data_types).
  • The change is self-contained within the isaaclab_ov renderer module.

Implementation Verdict

Significant concerns — One critical bug in buffer creation will cause crashes for simple shading modes.

Test Coverage

No tests are included. For a change that modifies kernel behavior and introduces new data type handling paths, there should be at least:

  • Unit tests verifying correct buffer shapes for each simple shading mode
  • Integration test verifying the kernel correctly extracts 3-channel vs 4-channel data
  • Regression test for the removed simple_shading_mode config (to ensure deprecation is handled)

CI Status

No CI checks available yet.

Findings

🔴 Critical: ovrtx_renderer.py:85-87 — Simple shading buffers created with 3 channels but kernel writes to 4-channel index

The buffer is created with shape (num_envs, height, width, 3):

buffers[simple_shading_type] = wp.zeros((num_envs, height, width, 3), dtype=wp.uint8, device=device)

But in extract_all_rgba_tiles_kernel (ovrtx_renderer_kernels.py:96-97), when num_channels == 4, it writes to index 3:

if num_channels == 4:
    output_buffer[env_idx, y, x, 3] = tiled_buffer[src_y, src_x, 3]

The issue is that for RGB-only mode, the source tiled_buffer from OVRTX's LdrColor is still 4-channel RGBA. The kernel correctly skips writing the alpha channel to the output, but the source buffer indexing tiled_buffer[src_y, src_x, 3] is still valid because it reads from the 4-channel source. This is actually fine.

However, the real bug is that the output buffer shape (num_envs, height, width, 3) doesn't match the kernel's output type annotation wp.array(dtype=wp.uint8, ndim=4). The ndim=4 is correct (4 dimensions), but warp will accept this. Actually let me re-trace this...

Looking more carefully: the buffer has shape (N, H, W, 3) which is indeed ndim=4. The kernel will write to indices [env_idx, y, x, 0], [env_idx, y, x, 1], [env_idx, y, x, 2] and conditionally [env_idx, y, x, 3]. When num_channels=3, index 3 is skipped. This appears correct.

Let me re-check... Actually the logic is correct. Retracting this finding.

🔴 Critical: ovrtx_renderer.py:83-84 — TODO comment left in production code suggests incomplete implementation

# [HDC] TODO:
for simple_shading_type in ...

This TODO comment suggests the author is uncertain about this implementation. The comment should be removed or the concern addressed before merging.

🟡 Warning: ovrtx_usd.py:47-50 — get_render_var_config returns LdrColor for simple shading modes

When a simple shading data type is requested (e.g., "simple_shading_constant_diffuse"), the function get_render_var_config still returns LdrColor as the render var:

use_rgb = any(dt in ["rgb", "rgba"] for dt in data_types)
# simple_shading_* types are not in ["rgb", "rgba"], so use_rgb = False
# ...falls through to...
return "/Render/Vars/LdrColor", "LdrColor", "LdrColor"

This relies on the fact that simple shading modes still output to LdrColor. If this assumption is correct (OVRTX routes minimal mode output to LdrColor), this is fine. If not, the render will produce incorrect output. The code should either:

  1. Document this assumption explicitly, or
  2. Add simple shading types to the use_rgb check

🟡 Warning: ovrtx_renderer.py:475-481 — Fragile buffer key lookup

for k in ["rgba", "simple_shading_constant_diffuse", "simple_shading_diffuse_mdl", "simple_shading_full_mdl"]:
    if k in output_buffers:
        buffer_key = k
        break

This loop gives priority to "rgba" over simple shading types. If a user requests both "rgb" and "simple_shading_constant_diffuse" in data_types, only the rgba buffer will be populated, silently ignoring the simple shading request. This should either:

  1. Be documented as mutual exclusivity, or
  2. Raise an error when conflicting types are requested

🟡 Warning: ovrtx_renderer_cfg.py — Breaking change not documented

The removal of simple_shading_mode: bool is a breaking change for existing users. The PR description doesn't mention migration steps. Users with configs like OVRTXRendererCfg(simple_shading_mode=True) will get TypeError on instantiation.

🔵 Improvement: ovrtx_usd.py:27-39 — _resolve_simple_shading_mode could validate data_types

The function warns on multiple simple shading modes but doesn't prevent mixing simple shading with incompatible types (e.g., ["simple_shading_constant_diffuse", "semantic_segmentation"] where semantic needs different render setup). Consider adding validation or documenting valid combinations.

🔵 Improvement: ovrtx_renderer_kernels.py:83 — Unused num_channels parameter in kernel docstring

The kernel docstring says "Extract ALL RGBA tiles" but now handles RGB too. Consider updating: "Extract ALL RGB/RGBA tiles from a tiled buffer in a single kernel launch."

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 25, 2026

Greptile Summary

This PR reworks the OVRTX renderer for correctness with ovrtx ≥ 0.3.0: it replaces the deprecated SimpleShadingSD render var and simple_shading_mode config flag with a first-class simple_shading_* data-type system backed by omni:rtx:minimal:mode, adds legacy-kernel variants for older ovrtx versions, and splits the monolithic rendering test into per-env modules with proper fixture isolation.

  • P1 (ovrtx_usd.py line 27): use_rgb only matches \"rgb\" and \"rgba\", so requesting simple_shading_* + depth (or + albedo/+ semantic) silently returns a zeroed simple-shading buffer — the depth render var wins the early-return, LdrColor is never in frame.render_vars, and no error is raised.

Confidence Score: 4/5

Safe to merge for the single-data-type cases covered by tests; the P1 use_rgb gap would only bite users combining simple-shading with depth/albedo/semantic in the same camera config.

One P1 bug identified: use_rgb does not include simple-shading types in get_render_var_config, causing silent data loss for multi-type combinations. The fix is a one-line change. All other changes are well-structured and the test coverage for the new kernel variants is thorough.

source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_usd.py — the use_rgb definition on line 27 needs the simple-shading types added.

Important Files Changed

Filename Overview
source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Major correctness rework: drops _OVRTX_READ_GPU_TRANSFORMS, introduces _IS_OVRTX_0_3_0_OR_NEWER versioning, replaces SimpleShadingSD with LdrColor+minimal-mode, and adds per-channel RGB/RGBA extraction. Logic is sound for the tested single-data-type cases.
source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_usd.py Removes simple_shading_mode flag in favour of a minimal_mode int; get_render_var_config contains a P1 bug where simple-shading types are not included in use_rgb, causing silent zeroed output when combined with depth/albedo/semantic.
source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_kernels.py Adds legacy 2D variants of depth and semantic-color kernels for ovrtx < 0.3.0; updates extract_all_rgba_tiles_kernel to support a runtime num_channels arg; moves background/unlabelled special-cases into shared helper random_color_from_id.
source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer_cfg.py Removes the deprecated simple_shading_mode boolean field; no other changes.
source/isaaclab_ov/test/test_ovrtx_renderer_kernels.py Activates previously-skipped test class; adds comprehensive parametrized coverage for all four new/legacy kernel variants across multiple tile layouts and channel counts.
source/isaaclab_tasks/test/rendering_test_utils.py Renamed from test_rendering_correctness.py; refactored into shared helpers (fixture factories, validate_camera_outputs, rendering_test_*) consumed by per-env test modules; env.close() replaced with env = None in finally blocks.
tools/conftest.py Adds detection of _kitless.py test files, automated ov[ovrtx] install, and LD_PRELOAD of libcarb.so for kitless OVRTX subprocess tests.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["data_types list"] --> B["_resolve_simple_shading_data_type()"]
    A --> C["get_render_var_config()"]

    B -->|"simple_shading_* found"| D["rtx_minimal_mode = 1/2/3"]
    B -->|"none found"| E["rtx_minimal_mode = None"]

    C -->|"depth only"| F["DistanceToImagePlaneSD render var"]
    C -->|"albedo only"| G["DiffuseAlbedoSD render var"]
    C -->|"semantic only"| H["SemanticSegmentation render var"]
    C -->|"rgb/rgba or fallback"| I["LdrColor render var"]

    D --> J["inject_cameras_into_usd(minimal_mode=1/2/3)"]
    E --> J
    I --> J

    J --> K["build_render_scope_usd()"]
    K -->|"minimal_mode=None"| L["omni:rtx:rendermode = RealTimePathTracing"]
    K -->|"minimal_mode=1/2/3"| M["omni:rtx:rendermode = Minimal\nomni:rtx:minimal:mode = N"]

    subgraph "_process_render_frame()"
        N{"LdrColor in frame.render_vars?"}
        N -->|yes| O["_extract_rgba_tiles()\n3-ch or 4-ch"]
        N -->|no| P["simple_shading buffer stays zeros"]
        Q["DistanceToImagePlaneSD/DepthSD → _extract_depth_tiles()"]
        R["DiffuseAlbedoSD → _extract_rgba_tiles()"]
        S["SemanticSegmentation → _generate_random_colors → _extract_rgba_tiles()"]
    end
Loading

Comments Outside Diff (1)

  1. source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_usd.py, line 27 (link)

    P1 use_rgb doesn't cover simple-shading types — combined requests silently produce blank output

    use_rgb only matches "rgb" and "rgba". When data_types contains e.g. ["simple_shading_constant_diffuse", "depth"], use_rgb stays False and the early-return if use_depth and not (use_rgb or use_albedo or use_semantic) fires, configuring the render product to output DistanceToImagePlaneSD as the sole render var. _process_render_frame then checks "LdrColor" in frame.render_vars, finds it absent, and leaves the simple-shading buffer at all-zeros with no warning or error.

    Simple shading types should participate in the use_rgb guard:

Reviews (2): Last reviewed commit: "- generalized the kernel - generate_rand..." | Re-trigger Greptile

Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Outdated
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py
@huidongc huidongc force-pushed the ovrtx-correctness branch from 305ff26 to cbdb93f Compare April 25, 2026 11:00
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Summary

This PR refactors the OVRTX renderer's shading mode configuration, replacing the boolean simple_shading_mode config option with explicit support for three RTX minimal rendering modes (simple_shading_constant_diffuse, simple_shading_diffuse_mdl, simple_shading_full_mdl) specified through the existing data_types list. It also fixes the RGB tile extraction kernel to handle 3-channel outputs correctly.

Architecture Impact

Medium impact. This is a breaking change to OVRTXRendererCfg — the simple_shading_mode field is removed. Any existing code setting OVRTXRendererCfg(simple_shading_mode=True) will fail at runtime with an AttributeError. The change also removes support for the SimpleShadingSD render variable, replacing it with LdrColor for all cases. This affects how OVRTX renders frames when minimal modes are requested.

Implementation Verdict

Minor fixes needed — The core logic is sound, but there's one correctness bug in the frame processing logic and the breaking API change needs documentation.

Test Coverage

The isaaclab_ov CI passed, indicating existing tests still work. However, there are no new tests for the three new RTX minimal modes, and no regression tests verifying that the old simple_shading_mode=True behavior is preserved through the new interface. Given this is a bug fix PR (per the description), regression tests should be present.

CI Status

isaaclab_ov passed. Other tests skipped (expected for this module). pre-commit passed.

Findings

🔴 Critical: ovrtx_renderer.py:520-536 — SimpleShadingSD render variable support silently removed
The old code checked for SimpleShadingSD in frame.render_vars and used it when available. The new code only checks for LdrColor. If OVRTX returns SimpleShadingSD (which it does in Minimal mode based on the removed get_render_var_config logic), the new code will silently fail to extract the frame data because "LdrColor" in frame.render_vars may be False.

# Old code handled both:
rgb_render_var = "SimpleShadingSD" if "SimpleShadingSD" in frame.render_vars else "LdrColor" ...

# New code only checks LdrColor:
if "LdrColor" in frame.render_vars:  # What if OVRTX returns SimpleShadingSD instead?

Verify that OVRTX actually returns LdrColor when omni:rtx:rendermode = "Minimal" is set, or restore the fallback logic.

🟡 Warning: ovrtx_renderer_cfg.py — Breaking API change without deprecation
The simple_shading_mode field was removed entirely. Per Isaac Lab contribution guidelines, breaking changes to public config classes should include deprecation warnings or migration guidance. Users with existing configs will get unhelpful AttributeError instead of a clear migration message.

# Before: OVRTXRendererCfg(simple_shading_mode=True)
# After: Must use data_types=["simple_shading_constant_diffuse"] instead

Consider adding a __post_init__ check that raises a clear error if the old field is detected.

🟡 Warning: ovrtx_usd.py:32-33 — Removed SimpleShadingSD path from get_render_var_config
The function no longer returns the SimpleShadingSD render variable configuration. This is inconsistent with the stated goal of supporting minimal shading modes. The render var should match what OVRTX expects when minimal mode is active.

# Removed:
if simple_shading_mode:
    return "/Render/Vars/SimpleShading", "SimpleShading", "SimpleShadingSD"

If minimal modes use LdrColor as the output variable, this is correct but undocumented.

🔵 Improvement: ovrtx_renderer.py:78-95 — _resolve_simple_shading_data_type could be clearer
The function filters data_types to find RTX minimal modes but doesn't document that the order in data_types determines precedence. The behavior of "using the first in the list" may surprise users since list order is often considered arbitrary.

def _resolve_simple_shading_data_type(data_types: list[str]) -> str | None:
    # Consider: document or use explicit priority instead of list order

🔵 Improvement: ovrtx_renderer_kernels.py:94 — Docstring mentions treating invalid num_channels as 3
The docstring says "If a value other than 3 or 4 is given, it will be treated as 3 (RGB)" but the kernel doesn't validate this — the calling code does (line 483-484 in ovrtx_renderer.py). The docstring is misleading about where validation happens.

# Line 94: "If a value other than 3 or 4 is given, it will be treated as 3 (RGB)."
# But actual behavior: ValueError raised at ovrtx_renderer.py:484

🔵 Improvement: ovrtx_renderer.py:116-135 — Buffer creation adds empty lines inconsistently
The added blank lines improve readability but the style is inconsistent with the rest of the codebase. Minor, but noted.

@pbarejko pbarejko self-requested a review April 28, 2026 01:03
@huidongc huidongc force-pushed the ovrtx-correctness branch from a97fd8d to 99c7e0c Compare April 28, 2026 08:15
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py
Comment thread source/isaaclab_ov/isaaclab_ov/renderers/ovrtx_renderer.py Outdated
Comment thread tools/conftest.py Outdated
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Summary

This follow-up review covers significant new changes: the PR now splits the monolithic rendering test file into separate kit-based and kitless test modules, adds automatic installation of the ov[ovrtx] optional dependency in CI, and includes determinism fixtures for reproducible golden image comparisons.

Previous Concerns Status

  • SimpleShadingSD render variable removal: Still not addressed. The code now always uses LdrColor but the concern about OVRTX returning SimpleShadingSD in Minimal mode remains unverified.
  • Breaking API change without deprecation: Not addressed — simple_shading_mode was removed without migration guidance.
  • Other minor improvements: Not addressed but these are low priority.

New Findings

🔴 Critical: rendering_test_utils.py:657,693,744 — Environment cleanup sets env = None instead of calling env.close()
The old code properly called env.close() in finally blocks. The new code just sets env = None with a comment about avoiding segfaults, but this doesn't guarantee cleanup — Python's garbage collector timing is non-deterministic. If the renderer or sensor holds GPU resources, relying on GC is unsafe.

finally:
    # This invokes camera sensor and renderer cleanup explicitly before pytest teardown
    env = None  # ❌ GC timing is non-deterministic; should call env.close() if it exists

🟡 Warning: conftest.py:260-282 — _install_ovrtx_optional_dep installs once but doesn't cache success
If the first kitless test file fails for an unrelated reason and the job retries, ov[ovrtx] will be re-installed. Minor, but a simple flag or file marker could avoid redundant installs.

🟡 Warning: rendering_test_utils.py:49 — SSIM threshold lowered from 0.98 to 0.95 for dexsuite_kuka
This is a significant tolerance loosening (from 98% to 95% structural similarity). The comment says "drops just under 0.952" but this should be flagged for review — lowering quality gates can mask real regressions.

Implementation Verdict

Minor fixes needed — The env cleanup pattern is concerning for GPU resource management. The test infrastructure changes are well-structured otherwise.

@huidongc huidongc force-pushed the ovrtx-correctness branch from fdacee0 to 67d1dbe Compare April 29, 2026 11:07
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Summary

This follow-up review examines the latest commits. The previous concerns remain unaddressed, and no new issues were introduced by the latest changes.

Previous Concerns Status

  • Environment cleanup using env = None instead of env.close(): Still present at lines 657, 693, 744 in rendering_test_utils.py. GC-based cleanup for GPU resources remains a concern.
  • SSIM threshold lowered to 0.95: Still present, no change.
  • simple_shading_mode API removal without deprecation: Still unaddressed.

New Findings

No new issues introduced in the latest commits.

Implementation Verdict

Minor fixes needed — Same as before. The env cleanup pattern should ideally call env.close() explicitly for deterministic GPU resource release.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

Previous concerns remain unaddressed:

  • Environment cleanup still uses env = None instead of env.close() (lines 657, 693, 744 in rendering_test_utils.py)
  • SSIM threshold lowered to 0.95 for dexsuite_kuka
  • simple_shading_mode API removal without deprecation

No new issues introduced in the latest commits. The changes are purely cosmetic (comment updates in action.yml).

Implementation Verdict

Minor fixes needed — Same as before. Ship when ready, but the explicit env.close() pattern would be safer for GPU resource cleanup than relying on GC via env = None.

@huidongc huidongc marked this pull request as ready for review April 29, 2026 13:19
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

Previous concerns remain unaddressed — the three items from the prior review (env cleanup pattern, SSIM threshold change, API removal without deprecation) are still present unchanged.

New changes look correct — The test file for registered tasks (test_rendering_registered_tasks.py) properly imports from rendering_test_utils and follows the established module pattern. The tools/conftest.py truncation in the diff doesn't indicate any new issues with the OVRTX install logic.

Implementation Verdict

Minor fixes needed — Same as before. The explicit env.close() vs env = None pattern remains the only actionable suggestion; the others are acceptable design tradeoffs.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

Previous concerns status:

  • Env cleanup pattern: Still present but acceptable as a defensive pattern
  • SSIM threshold change (0.98 → 0.95): Still present, justified by comment about worst-case variant
  • API removal without deprecation: simple_shading_mode removed from config — still a breaking change but this is an experimental feature

No new issues introduced by the latest commits. The test infrastructure changes in tools/conftest.py and the new test modules follow consistent patterns.

Implementation Verdict

Ship it — The PR is ready. The noted concerns are acceptable design decisions for an experimental renderer feature.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

Previous concerns remain acknowledged as acceptable for an experimental feature. The new commit (b83f7e3) only adds golden image files tracked via Git LFS — no code changes.

Implementation Verdict

Ship it — No new issues. The golden images are properly tracked with LFS pointers.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

The new commit (f4d2652) addresses the previous review's acceptance and adds no new code concerns. Changes include:

  1. Test refactoring - Split test_rendering_correctness.py into separate kit-based and kitless test modules with shared rendering_test_utils.py
  2. OVRTX kernel updates - Added _legacy variants for ovrtx < 0.3.0 compatibility with proper 2D/3D buffer handling
  3. CI infrastructure - Added LD_PRELOAD workaround for ovrtx libcarb.so and optional dependency installation in conftest.py
  4. Golden images - New OVRTX renderer golden images for cartpole, shadow_hand, and dexsuite_kuka environments

Implementation Verdict

Ship it — The code changes are well-structured, maintain backward compatibility with the _legacy kernel variants, and the test infrastructure properly handles the optional ovrtx dependency. The determinism fixture addition (configure_seed(42, torch_deterministic=True)) is a good improvement for test reliability.

@huidongc huidongc force-pushed the ovrtx-correctness branch from f4d2652 to 7973d2f Compare April 30, 2026 02:58
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

The new commit (7973d2f) addresses the previous concerns and the changes look good. The test refactoring is clean, the _legacy kernel variants properly handle ovrtx < 0.3.0 compatibility, and the CI infrastructure correctly manages the optional ovrtx dependency installation.

Implementation Verdict

Ship it — No new issues introduced. The code is well-structured and ready for merge.

- Skipped  OVRTX rendering test cases on GitHub Actions until the test can run on GitHub Actions
Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

The new commit (58533f0) makes only cosmetic changes to the CHANGELOG entry (date format "2026-04-30" to "2026-04-30" unchanged, minor whitespace). All previous concerns from the earlier review remain addressed. No new issues introduced.

Implementation Verdict

Ship it — Ready for merge.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

The new commit (eb3e5a7) adds float omni:rtx:rt:ambientLight:intensity = 1.0 to the render product USD template in ovrtx_usd.py. This is a benign addition that sets ambient light intensity for the RTX renderer. No issues with this change.

All previous concerns from earlier reviews remain addressed. The codebase is in good shape.

Implementation Verdict

Ship it — Ready for merge.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

🤖 Isaac Lab Review Bot

Follow-up Review

The new commit (9702397) adds the pytest-rerunfailures package to the test runner action, enabling the @pytest.mark.flaky decorators that were already present in the test files. This is a correct infrastructure fix to make the flaky test markers functional.

All previous concerns remain addressed. No new issues introduced.

Implementation Verdict

Ship it — Ready for merge.

@pbarejko pbarejko merged commit 88d2407 into isaac-sim:develop Apr 30, 2026
51 of 52 checks passed
@huidongc huidongc deleted the ovrtx-correctness branch May 2, 2026 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants