I am getting a little closer to the solution, could you explain where the docs are for these settings
but by the same token, I am not sure how to “Press the buttons via code”
import omni.kit.app
import omni.ui as ui
import carb.settings
from omni.kit.settings import SettingType
from omni.rtx.window.settings.rtx_settings_stack import RTXSettingsStack
from omni.rtx.window.settings.settings_collection_frame import SettingsCollectionFrame
DEBUG_OPTIONS = False
class AntiAliasingSettingsFrame(SettingsCollectionFrame):
""" Anti-Aliasing """
def _on_antialiasing_change(self, *_):
self._rebuild()
def _build_ui(self):
antialiasing_ops = []
if self._settings.get("/ngx/enabled") is True:
antialiasing_ops = ["Off", "TAA", "FXAA", "DLSS"]
else:
antialiasing_ops = ["Off", "TAA", "FXAA"]
self._add_setting_combo("Algorithm", "/rtx/post/aa/op", antialiasing_ops)
self._change_cb1 = omni.kit.app.SettingChangeSubscription("/rtx/post/aa/op", self._on_antialiasing_change)
antialiasingOpIdx = self._settings.get("/rtx/post/aa/op")
if antialiasingOpIdx == 0:
""" No AA """
return
if antialiasingOpIdx == 1:
""" TAA """
self._add_setting(SettingType.FLOAT, "Static scaling", "/rtx/post/scaling/staticRatio", 0.33, 1, 0.01)
self._add_setting(SettingType.INT, "TAA Samples", "/rtx/post/taa/samples", 1, 16)
self._add_setting(SettingType.FLOAT, "TAA history scale", "/rtx/post/taa/alpha", 0, 1, 0.1)
if antialiasingOpIdx == 2:
""" FXAA """
self._add_setting(SettingType.FLOAT, "Subpixel Quality", "/rtx/post/fxaa/qualitySubPix", 0.0, 1.0, 0.02)
self._add_setting(SettingType.FLOAT, "Edge Threshold", "/rtx/post/fxaa/qualityEdgeThreshold", 0.0, 1.0, 0.02)
self._add_setting(SettingType.FLOAT, "Edge Threshold Min", "/rtx/post/fxaa/qualityEdgeThresholdMin", 0.0, 1.0, 0.02)
if antialiasingOpIdx == 3:
""" DLSS """
dlss_opts = ["Performance", "Balanced", "Quality"]
self._add_setting_combo("Execution mode", "/rtx/post/dlss/execMode", dlss_opts)
self._add_setting(SettingType.FLOAT, "Sharpness", "/rtx/post/dlss/sharpness", 0.0, 1.0, 0.5)
self._add_setting(SettingType.BOOL, "Enable Exposure", "/rtx/post/dlss/enableExposure", True)
self._change_cb2 = omni.kit.app.SettingChangeSubscription("/rtx/post/dlss/enableExposure", self._on_change)
if self._settings.get("/rtx/post/dlss/enableExposure"):
self._add_setting(SettingType.BOOL, "Override Exposure", "/rtx/post/dlss/overrideExposure", False)
self._add_setting(SettingType.FLOAT, "Override Exposure Value", "/rtx/post/dlss/exposure", 0.00001, 1.0, 0.00001)
def destroy(self):
self._change_cb1 = None
self._change_cb2 = None
super().destroy()
class DirectLightingSettingsFrame(SettingsCollectionFrame):
""" Direct Lighting """
def _frame_setting_path(self):
return "/rtx/directLighting/enabled"
def _build_ui(self):
self._add_setting(SettingType.BOOL, "Enable Shadows", "/rtx/shadows/enabled")
self._add_setting(SettingType.BOOL, "Enable Fractional Opacity", "/rtx/shadows/fractionalCutoutOpacity")
self._add_setting(SettingType.BOOL, "Show Lights", "/rtx/directLighting/showLights")
ui.Line()
self._add_setting(SettingType.BOOL, "Enable Sampled Direct Lighting", "/rtx/directLighting/sampledLighting/enabled")
self._add_setting(SettingType.BOOL, "Auto-enable Sampled Lighting Above Light Count Threshold", "/rtx/directLighting/sampledLighting/autoEnable")
self._add_setting(SettingType.INT, "Auto-enable Sampled Lighting: Light Count Threshold", "/rtx/directLighting/sampledLighting/autoEnableLightCountThreshold")
self._change_cb1 = omni.kit.app.SettingChangeSubscription("/rtx/directLighting/sampledLighting/enabled", self._on_change)
self._change_cb2 = omni.kit.app.SettingChangeSubscription("/rtx/directLighting/sampledLighting/autoEnable", self._on_change)
if not self._settings.get("/rtx/directLighting/sampledLighting/enabled"):
with ui.CollapsableFrame("Non-Sampled Direct Lighting", height=0):
with ui.VStack(height=0, spacing=5, style={"VStack": {"margin_width": 10}}):
self._add_setting(SettingType.INT, "Shadow Samples per Pixel", "/rtx/shadows/sampleCount", 1, 16)
self._add_setting(SettingType.BOOL, "Lower Resolution Shadows Denoiser", "/rtx/shadows/denoiser/quarterRes")
self._add_setting(SettingType.BOOL, "Dome Lighting", "/rtx/directLighting/domeLight/enabled")
self._add_setting(SettingType.BOOL, "Dome Lighting in Reflections", "/rtx/directLighting/domeLight/enabledInReflections")
self._change_cb3 = omni.kit.app.SettingChangeSubscription("/rtx/directLighting/domeLight/enabled", self._on_change)
else:
with ui.CollapsableFrame("Sampled Direct Lighting", height=0):
with ui.VStack(height=0, spacing=5, style={"VStack": {"margin_width": 10}}):
sampled_lighting_spp_items = {"1": 1, "2": 2, "4": 4, "8": 8}
self._add_setting_combo("Samples per Pixel", "/rtx/directLighting/sampledLighting/samplesPerPixel", sampled_lighting_spp_items)
self._add_setting(SettingType.BOOL, "Clamp Sample Count to Light Count", "/rtx/directLighting/sampledLighting/clampSamplesPerPixelToNumberOfLights")
self._add_setting_combo("Reflections: Light Samples per Pixel", "/rtx/reflections/sampledLighting/samplesPerPixel", sampled_lighting_spp_items)
self._add_setting(SettingType.BOOL, "Reflections: Clamp Sample Count to Light Count", "/rtx/reflections/sampledLighting/clampSamplesPerPixelToNumberOfLights")
firefly_filter_types = {"None" : "None", "Median" : "Cross-Bilateral Median", "RCRS" : "Cross-Bilateral RCRS"}
self._add_setting_combo("Firefly Filter", "/rtx/lightspeed/ReLAX/fireflySuppressionType", firefly_filter_types)
self._add_setting(SettingType.BOOL, "History Clamping", "/rtx/lightspeed/ReLAX/historyClampingEnabled")
self._add_setting(SettingType.INT, "Denoiser Iterations", "/rtx/lightspeed/ReLAX/aTrousIterations", 1, 10)
def destroy(self):
self._change_cb1 = None
self._change_cb2 = None
self._change_cb3 = None
super().destroy()
class ReflectionsSettingsFrame(SettingsCollectionFrame):
""" Reflections """
def _frame_setting_path(self):
return "/rtx/reflections/enabled"
def _build_ui(self):
self._add_setting(SettingType.FLOAT, "Max Roughness", "/rtx/reflections/maxRoughness", 0.0, 1.0, 0.02)
self._add_setting(SettingType.INT, "Max Reflection Bounces", "/rtx/reflections/maxReflectionBounces", 0, 100)
class TranslucencySettingsFrame(SettingsCollectionFrame):
""" Translucency """
def _frame_setting_path(self):
return "/rtx/translucency/enabled"
def _build_ui(self):
self._add_setting(SettingType.INT, "Max Refraction Bounces", "/rtx/translucency/maxRefractionBounces", 0, 100)
self._add_setting( SettingType.FLOAT, "Secondary Bounce Roughness Cutoff", "/rtx/translucency/reflectionCutoff", 0.0, 1.0, 0.005)
self._add_setting(SettingType.BOOL, "Enable Fractional Cutout Opacity", "/rtx/raytracing/fractionalCutoutOpacity")
class CausticsSettingsFrame(SettingsCollectionFrame):
""" Caustics """
def _frame_setting_path(self):
return "/rtx/caustics/enabled"
def _build_ui(self):
self._add_setting(SettingType.INT, "Photon Count Multiplier", "/rtx/raytracing/caustics/photonCountMultiplier", 1, 5000)
self._add_setting(SettingType.INT, "Photon Max Bounces", "/rtx/raytracing/caustics/photonMaxBounces", 1, 20)
self._add_setting(SettingType.INT, "Filter Iterations", "/rtx/raytracing/caustics/eawFilteringSteps", 0, 10)
class IndirectDiffuseLightingSettingsFrame(SettingsCollectionFrame):
""" Indirect Diffuse Lighting """
def _build_ui(self):
self._add_setting(SettingType.COLOR3, "Ambient Light Color", "/rtx/sceneDb/ambientLightColor")
self._add_setting(SettingType.FLOAT, "Ambient Light Intensity", "/rtx/sceneDb/ambientLightIntensity", 0.0, 10.0, 0.1)
self._add_setting(SettingType.BOOL, "Enable Ambient Occlusion (AO)", "/rtx/ambientOcclusion/enabled")
self._change_cb1 = omni.kit.app.SettingChangeSubscription("/rtx/ambientOcclusion/enabled", self._on_change)
if self._settings.get("/rtx/ambientOcclusion/enabled"):
self._add_setting(SettingType.FLOAT, "AO: Ray Length", "/rtx/ambientOcclusion/rayLength", 0.0, 200.0)
self._add_setting(SettingType.INT, "AO: Minimum Samples per Pixel", "/rtx/ambientOcclusion/minSamples", 1, 16)
self._add_setting(SettingType.INT, "AO: Maximum Samples per Pixel", "/rtx/ambientOcclusion/maxSamples", 1, 16)
ui.Line()
self._add_setting(SettingType.BOOL, "Enable Indirect Diffuse GI", "/rtx/indirectDiffuse/enabled")
self._change_cb2 = omni.kit.app.SettingChangeSubscription("/rtx/indirectDiffuse/enabled", self._on_change)
if self._settings.get("/rtx/indirectDiffuse/enabled"):
self._add_setting(SettingType.INT, "Samples per Pixel", "/rtx/indirectDiffuse/fetchSampleCount", 0, 4)
self._add_setting(SettingType.INT, "Max Bounces", "/rtx/indirectDiffuse/maxBounces", 0, 16)
self._add_setting(SettingType.FLOAT, "Intensity", "/rtx/indirectDiffuse/scalingFactor", 0.0, 20.0, 0.1)
self._add_setting(SettingType.INT, "Denoiser: Kernel radius", "/rtx/indirectDiffuse/denoiser/kernelRadius", 1, 64)
self._add_setting(SettingType.INT, "Denoiser: Iteration count", "/rtx/indirectDiffuse/denoiser/iterations", 1, 10)
self._add_setting(SettingType.INT, "Denoiser: Max History Length", "/rtx/indirectDiffuse/denoiser/temporal/maxHistory", 1, 100)
def destroy(self):
self._change_cb1 = None
self._change_cb2 = None
super().destroy()
class RTMultiGPUSettingsFrame(SettingsCollectionFrame):
""" Multi-GPU """
def _frame_setting_path(self):
return "/rtx/realtime/mgpu/enabled"
def _build_ui(self):
currentGpuCount = self._settings.get("/renderer/multiGpu/currentGpuCount")
self._add_setting(SettingType.INT, "Tile Count", "/rtx/realtime/mgpu/tileCount", 2, currentGpuCount)
self._add_setting(SettingType.BOOL, "GPU 0 Post Process Only", "/rtx/realtime/mgpu/masterPostProcessOnly")
self._add_setting(SettingType.INT, "Tile Overlap (Pixels)", "/rtx/realtime/mgpu/tileOverlap", 0, 256, 0.1)
self._add_setting(SettingType.FLOAT, "Fraction of Overlap Pixels to Blend", "/rtx/realtime/mgpu/tileOverlapBlendFraction", 0.0, 1.0, 0.001)
class RTSettingStack(RTXSettingsStack):
def __init__(self) -> None:
self._stack = ui.VStack(spacing=7)
with self._stack:
AntiAliasingSettingsFrame("Anti-Aliasing", parent=self)
DirectLightingSettingsFrame("Direct Lighting", parent=self)
ReflectionsSettingsFrame("Reflections", parent=self)
TranslucencySettingsFrame("Translucency", parent=self)
CausticsSettingsFrame("Caustics", parent=self)
IndirectDiffuseLightingSettingsFrame("Indirect Diffuse Lighting", parent=self)
gpuCount = carb.settings.get_settings().get("/renderer/multiGpu/currentGpuCount")
if gpuCount and gpuCount>1:
RTMultiGPUSettingsFrame("Multi-GPU", parent=self)
For instance when you use Arnold Renderer you can look at the SDK.
https://docs.arnoldrenderer.com/api/arnold-6.2.1.1/index.html
https://docs.arnoldrenderer.com/display/A5NodeRef
https://docs.arnoldrenderer.com/display/A5ARP/Removing+Noise+Workflow