Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions source/isaaclab/isaaclab/sim/simulation_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,88 @@ class RenderCfg:
This is set by the variable: ``/rtx/domeLight/upperLowerStrategy``.
"""

max_bounces: int | None = None
"""Maximum number of ray bounces for path tracing (RT2). Default is 2.

For global illumination (indirect diffuse), this should be at least 3.

This is set by the variable: ``/rtx/rtpt/maxBounces``.
"""

split_glass: bool | None = None
"""Enables separate glass ray splitting for improved glass rendering (RT2). Default is False.

Enabling this can reduce noise on glass materials at the cost of performance.

This is set by the variable: ``/rtx/rtpt/splitGlass``.
"""

split_clearcoat: bool | None = None
"""Enables separate clearcoat ray splitting (RT2). Default is False.

Enabling this can reduce noise on clearcoat materials at the cost of performance.

This is set by the variable: ``/rtx/rtpt/splitClearcoat``.
"""

split_rough_reflection: bool | None = None
"""Enables separate rough reflection ray splitting (RT2). Default is True.

Enabling this can reduce noise on rough reflective materials at the cost of performance.

This is set by the variable: ``/rtx/rtpt/splitRoughReflection``.
"""
Comment on lines +178 to +184
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.

P2 Docstring default contradicts test expectation

split_rough_reflection is documented as "Default is True", but test_render_cfg_defaults (line 213) uses False as the expected default value under the # RT2 defaults comment. Similarly, enable_cached_raytracing is documented as "Default is True" (line 215) while the test uses False (line 216). One of these is wrong — either the carb-setting system default changed, or the docstrings are incorrect. If the actual carb defaults are False, the docstrings should read "Default is False".

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The original PR #4142 had this as "Default is False", and test_render_cfg_defaults also uses False. All three .kit presets (performance, balanced, quality) explicitly set splitRoughReflection = true, which strongly implies the carb-level default is false (otherwise the presets wouldn't need to set it).

This should be restored to match the original:

Suggested change
"""
"""Enables separate rough reflection ray splitting (RT2). Default is False.


ambient_light_intensity: float | None = None
"""Scene ambient light intensity. Default is 1.0.

This is set by the variable: ``/rtx/sceneDb/ambientLightIntensity``.
"""

ambient_occlusion_denoiser_mode: Literal[0, 1] | None = None
"""Ambient occlusion denoiser mode. Default is 1.

Valid values are:

* 0: Higher quality denoising
* 1: Performance-oriented denoising

This is set by the variable: ``/rtx/ambientOcclusion/denoiserMode``.
"""

subpixel_mode: Literal[0, 1] | None = None
"""Raytracing subpixel mode. Default is 0.

Valid values are:

* 0: Performance mode
* 1: Quality mode (better anti-aliasing)

This is set by the variable: ``/rtx/raytracing/subpixel/mode``.
"""

enable_cached_raytracing: bool | None = None
"""Enables cached raytracing for improved performance. Default is True.

This is set by the variable: ``/rtx/raytracing/cached/enabled``.
"""

max_samples_per_launch: int | None = None
"""Maximum samples per launch for path tracing. Default is 1000000.

This setting helps avoid replicator warnings when using large tile counts.

This is set by the variable: ``/rtx/pathtracing/maxSamplesPerLaunch``.
"""

view_tile_limit: int | None = None
"""Maximum number of view tiles. Default is 1000000.

This setting helps avoid silent trimming of tiles.

This is set by the variable: ``/rtx/viewTile/limit``.
"""

carb_settings: dict[str, Any] | None = None
"""A general dictionary for users to supply all carb rendering settings with native names.

Expand Down
11 changes: 11 additions & 0 deletions source/isaaclab/isaaclab/sim/simulation_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,17 @@ def _apply_nested(data: dict[str, Any], path: str = "") -> None:
"enable_shadows": "/rtx/shadows/enabled",
"enable_ambient_occlusion": "/rtx/ambientOcclusion/enabled",
"dome_light_upper_lower_strategy": "/rtx/domeLight/upperLowerStrategy",
"ambient_light_intensity": "/rtx/sceneDb/ambientLightIntensity",
"ambient_occlusion_denoiser_mode": "/rtx/ambientOcclusion/denoiserMode",
"subpixel_mode": "/rtx/raytracing/subpixel/mode",
"enable_cached_raytracing": "/rtx/raytracing/cached/enabled",
"max_samples_per_launch": "/rtx/pathtracing/maxSamplesPerLaunch",
"view_tile_limit": "/rtx/viewTile/limit",
# RT2 path tracing settings
"max_bounces": "/rtx/rtpt/maxBounces",
"split_glass": "/rtx/rtpt/splitGlass",
"split_clearcoat": "/rtx/rtpt/splitClearcoat",
"split_rough_reflection": "/rtx/rtpt/splitRoughReflection",
}

for key, value in vars(render_cfg).items():
Expand Down
84 changes: 84 additions & 0 deletions source/isaaclab/test/sim/test_simulation_render_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,17 @@ def test_render_cfg():
samples_per_pixel = 4
enable_shadows = True
enable_ambient_occlusion = True
# RT2 settings
max_bounces = 4
split_glass = True
split_clearcoat = True
split_rough_reflection = True
ambient_light_intensity = 0.5
ambient_occlusion_denoiser_mode = 0
subpixel_mode = 1
enable_cached_raytracing = True
max_samples_per_launch = 500000
view_tile_limit = 500000

render_cfg = RenderCfg(
enable_translucency=enable_translucency,
Expand All @@ -54,6 +65,17 @@ def test_render_cfg():
samples_per_pixel=samples_per_pixel,
enable_shadows=enable_shadows,
enable_ambient_occlusion=enable_ambient_occlusion,
# RT2 settings
max_bounces=max_bounces,
split_glass=split_glass,
split_clearcoat=split_clearcoat,
split_rough_reflection=split_rough_reflection,
ambient_light_intensity=ambient_light_intensity,
ambient_occlusion_denoiser_mode=ambient_occlusion_denoiser_mode,
subpixel_mode=subpixel_mode,
enable_cached_raytracing=enable_cached_raytracing,
max_samples_per_launch=max_samples_per_launch,
view_tile_limit=view_tile_limit,
)

cfg = SimulationCfg(render=render_cfg)
Expand All @@ -74,6 +96,16 @@ def test_render_cfg():
assert sim.cfg.render.samples_per_pixel == samples_per_pixel
assert sim.cfg.render.enable_shadows == enable_shadows
assert sim.cfg.render.enable_ambient_occlusion == enable_ambient_occlusion
assert sim.cfg.render.max_bounces == max_bounces
assert sim.cfg.render.split_glass == split_glass
assert sim.cfg.render.split_clearcoat == split_clearcoat
assert sim.cfg.render.split_rough_reflection == split_rough_reflection
assert sim.cfg.render.ambient_light_intensity == ambient_light_intensity
assert sim.cfg.render.ambient_occlusion_denoiser_mode == ambient_occlusion_denoiser_mode
assert sim.cfg.render.subpixel_mode == subpixel_mode
assert sim.cfg.render.enable_cached_raytracing == enable_cached_raytracing
assert sim.cfg.render.max_samples_per_launch == max_samples_per_launch
assert sim.cfg.render.view_tile_limit == view_tile_limit

assert sim.get_setting("/rtx/translucency/enabled") == sim.cfg.render.enable_translucency
assert sim.get_setting("/rtx/reflections/enabled") == sim.cfg.render.enable_reflections
Expand All @@ -85,6 +117,16 @@ def test_render_cfg():
assert sim.get_setting("/rtx/directLighting/sampledLighting/samplesPerPixel") == sim.cfg.render.samples_per_pixel
assert sim.get_setting("/rtx/shadows/enabled") == sim.cfg.render.enable_shadows
assert sim.get_setting("/rtx/ambientOcclusion/enabled") == sim.cfg.render.enable_ambient_occlusion
assert sim.get_setting("/rtx/rtpt/maxBounces") == sim.cfg.render.max_bounces
assert sim.get_setting("/rtx/rtpt/splitGlass") == sim.cfg.render.split_glass
assert sim.get_setting("/rtx/rtpt/splitClearcoat") == sim.cfg.render.split_clearcoat
assert sim.get_setting("/rtx/rtpt/splitRoughReflection") == sim.cfg.render.split_rough_reflection
assert sim.get_setting("/rtx/sceneDb/ambientLightIntensity") == sim.cfg.render.ambient_light_intensity
assert sim.get_setting("/rtx/ambientOcclusion/denoiserMode") == sim.cfg.render.ambient_occlusion_denoiser_mode
assert sim.get_setting("/rtx/raytracing/subpixel/mode") == sim.cfg.render.subpixel_mode
assert sim.get_setting("/rtx/raytracing/cached/enabled") == sim.cfg.render.enable_cached_raytracing
assert sim.get_setting("/rtx/pathtracing/maxSamplesPerLaunch") == sim.cfg.render.max_samples_per_launch
assert sim.get_setting("/rtx/viewTile/limit") == sim.cfg.render.view_tile_limit
assert sim.get_setting("/rtx/post/aa/op") == 4 # dlss = 3, dlaa=4


Expand Down Expand Up @@ -162,6 +204,17 @@ def test_render_cfg_defaults():
samples_per_pixel = 1
enable_shadows = False
enable_ambient_occlusion = False
# RT2 defaults
max_bounces = 2
split_glass = False
split_clearcoat = False
split_rough_reflection = False
ambient_light_intensity = 1.0
ambient_occlusion_denoiser_mode = 1
subpixel_mode = 0
enable_cached_raytracing = False
max_samples_per_launch = 1000000
view_tile_limit = 1000000

render_cfg = RenderCfg(
enable_translucency=enable_translucency,
Expand All @@ -175,6 +228,17 @@ def test_render_cfg_defaults():
samples_per_pixel=samples_per_pixel,
enable_shadows=enable_shadows,
enable_ambient_occlusion=enable_ambient_occlusion,
# RT2 settings
max_bounces=max_bounces,
split_glass=split_glass,
split_clearcoat=split_clearcoat,
split_rough_reflection=split_rough_reflection,
ambient_light_intensity=ambient_light_intensity,
ambient_occlusion_denoiser_mode=ambient_occlusion_denoiser_mode,
subpixel_mode=subpixel_mode,
enable_cached_raytracing=enable_cached_raytracing,
max_samples_per_launch=max_samples_per_launch,
view_tile_limit=view_tile_limit,
)

cfg = SimulationCfg(render=render_cfg)
Expand All @@ -192,6 +256,16 @@ def test_render_cfg_defaults():
assert sim.cfg.render.samples_per_pixel == samples_per_pixel
assert sim.cfg.render.enable_shadows == enable_shadows
assert sim.cfg.render.enable_ambient_occlusion == enable_ambient_occlusion
assert sim.cfg.render.max_bounces == max_bounces
assert sim.cfg.render.split_glass == split_glass
assert sim.cfg.render.split_clearcoat == split_clearcoat
assert sim.cfg.render.split_rough_reflection == split_rough_reflection
assert sim.cfg.render.ambient_light_intensity == ambient_light_intensity
assert sim.cfg.render.ambient_occlusion_denoiser_mode == ambient_occlusion_denoiser_mode
assert sim.cfg.render.subpixel_mode == subpixel_mode
assert sim.cfg.render.enable_cached_raytracing == enable_cached_raytracing
assert sim.cfg.render.max_samples_per_launch == max_samples_per_launch
assert sim.cfg.render.view_tile_limit == view_tile_limit

assert sim.get_setting("/rtx/translucency/enabled") == sim.cfg.render.enable_translucency
assert sim.get_setting("/rtx/reflections/enabled") == sim.cfg.render.enable_reflections
Expand All @@ -203,4 +277,14 @@ def test_render_cfg_defaults():
assert sim.get_setting("/rtx/directLighting/sampledLighting/samplesPerPixel") == sim.cfg.render.samples_per_pixel
assert sim.get_setting("/rtx/shadows/enabled") == sim.cfg.render.enable_shadows
assert sim.get_setting("/rtx/ambientOcclusion/enabled") == sim.cfg.render.enable_ambient_occlusion
assert sim.get_setting("/rtx/rtpt/maxBounces") == sim.cfg.render.max_bounces
assert sim.get_setting("/rtx/rtpt/splitGlass") == sim.cfg.render.split_glass
assert sim.get_setting("/rtx/rtpt/splitClearcoat") == sim.cfg.render.split_clearcoat
assert sim.get_setting("/rtx/rtpt/splitRoughReflection") == sim.cfg.render.split_rough_reflection
assert sim.get_setting("/rtx/sceneDb/ambientLightIntensity") == sim.cfg.render.ambient_light_intensity
assert sim.get_setting("/rtx/ambientOcclusion/denoiserMode") == sim.cfg.render.ambient_occlusion_denoiser_mode
assert sim.get_setting("/rtx/raytracing/subpixel/mode") == sim.cfg.render.subpixel_mode
assert sim.get_setting("/rtx/raytracing/cached/enabled") == sim.cfg.render.enable_cached_raytracing
assert sim.get_setting("/rtx/pathtracing/maxSamplesPerLaunch") == sim.cfg.render.max_samples_per_launch
assert sim.get_setting("/rtx/viewTile/limit") == sim.cfg.render.view_tile_limit
assert sim.get_setting("/rtx/post/aa/op") == 3 # dlss = 3, dlaa=4
Loading