Exemple #1
0
        static public void RegisterDebug(String menuName, FrameSettings frameSettings)
        {
            // Register the camera into the debug menu
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableShadow, () => frameSettings.enableShadow, (value) => frameSettings.enableShadow = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableContactShadows, () => frameSettings.enableContactShadows, (value) => frameSettings.enableContactShadows = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableSSR, () => frameSettings.enableSSR, (value) => frameSettings.enableSSR    = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableSSAO, () => frameSettings.enableSSAO, (value) => frameSettings.enableSSAO = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableSubsurfaceScattering, () => frameSettings.enableSubsurfaceScattering, (value) => frameSettings.enableSubsurfaceScattering = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableTransmission, () => frameSettings.enableTransmission, (value) => frameSettings.enableTransmission = (bool)value);

            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kForwardOnly, () => frameSettings.enableForwardRenderingOnly, (value) => frameSettings.enableForwardRenderingOnly = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kDeferredDepthPrepass, () => frameSettings.enableDepthPrepassWithDeferredRendering, (value) => frameSettings.enableDepthPrepassWithDeferredRendering    = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kDeferredDepthPrepassATestOnly, () => frameSettings.enableAlphaTestOnlyInDeferredPrepass, (value) => frameSettings.enableAlphaTestOnlyInDeferredPrepass = (bool)value);

            DebugMenuManager.instance.AddDebugItem <bool>(menuName, KEnableTransparentPrepass, () => frameSettings.enableTransparentPrepass, (value) => frameSettings.enableTransparentPrepass = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableMotionVectors, () => frameSettings.enableMotionVectors, (value) => frameSettings.enableMotionVectors = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, KEnableObjectMotionVectors, () => frameSettings.enableObjectMotionVectors, (value) => frameSettings.enableObjectMotionVectors = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableDBuffer, () => frameSettings.enableDBuffer, (value) => frameSettings.enableDBuffer = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableAtmosphericScattering, () => frameSettings.enableAtmosphericScattering, (value) => frameSettings.enableAtmosphericScattering = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableRoughRefraction, () => frameSettings.enableRoughRefraction, (value) => frameSettings.enableRoughRefraction             = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableTransparentPostpass, () => frameSettings.enableTransparentPostpass, (value) => frameSettings.enableTransparentPostpass = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableDistortion, () => frameSettings.enableDistortion, (value) => frameSettings.enableDistortion    = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnablePostprocess, () => frameSettings.enablePostprocess, (value) => frameSettings.enablePostprocess = (bool)value);

            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableStereoRendering, () => frameSettings.enableStereo, (value) => frameSettings.enableStereo          = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableAsyncCompute, () => frameSettings.enableAsyncCompute, (value) => frameSettings.enableAsyncCompute = (bool)value);

            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableOpaqueObjects, () => frameSettings.enableOpaqueObjects, (value) => frameSettings.enableOpaqueObjects = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableTransparentObjects, () => frameSettings.enableTransparentObjects, (value) => frameSettings.enableTransparentObjects = (bool)value);

            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableMSAA, () => frameSettings.enableMSAA, (value) => frameSettings.enableMSAA = (bool)value);
            DebugMenuManager.instance.AddDebugItem <bool>(menuName, kEnableShadowMask, () => frameSettings.enableShadowMask, (value) => frameSettings.enableShadowMask = (bool)value);

            LightLoopSettings.RegisterDebug(menuName, frameSettings.lightLoopSettings);
        }
        public static void RegisterDebug(string menuName, FrameSettings frameSettings)
        {
            List <DebugUI.Widget> widgets = new List <DebugUI.Widget>();

            widgets.AddRange(
                new DebugUI.Widget[]
            {
                new DebugUI.Foldout
                {
                    displayName = "Rendering Passes",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Prepass", getter = () => frameSettings.enableTransparentPrepass, setter = value => frameSettings.enableTransparentPrepass = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Postpass", getter = () => frameSettings.enableTransparentPostpass, setter = value => frameSettings.enableTransparentPostpass = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Motion Vectors", getter = () => frameSettings.enableMotionVectors, setter = value => frameSettings.enableMotionVectors = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Object Motion Vectors", getter = () => frameSettings.enableObjectMotionVectors, setter = value => frameSettings.enableObjectMotionVectors = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable DBuffer", getter = () => frameSettings.enableDecals, setter = value => frameSettings.enableDecals = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Rough Refraction", getter = () => frameSettings.enableRoughRefraction, setter = value => frameSettings.enableRoughRefraction = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Distortion", getter = () => frameSettings.enableDistortion, setter = value => frameSettings.enableDistortion = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Postprocess", getter = () => frameSettings.enablePostprocess, setter = value => frameSettings.enablePostprocess = value
                        },
                    }
                },
                new DebugUI.Foldout
                {
                    displayName = "Rendering Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Forward Only", getter = () => frameSettings.enableForwardRenderingOnly, setter = value => frameSettings.enableForwardRenderingOnly = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Deferred Depth Prepass", getter = () => frameSettings.enableDepthPrepassWithDeferredRendering, setter = value => frameSettings.enableDepthPrepassWithDeferredRendering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Async Compute", getter = () => frameSettings.enableAsyncCompute, setter = value => frameSettings.enableAsyncCompute = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Opaque Objects", getter = () => frameSettings.enableOpaqueObjects, setter = value => frameSettings.enableOpaqueObjects = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Objects", getter = () => frameSettings.enableTransparentObjects, setter = value => frameSettings.enableTransparentObjects = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable MSAA", getter = () => frameSettings.enableMSAA, setter = value => frameSettings.enableMSAA = value
                        },
                    }
                },
                new DebugUI.Foldout
                {
                    displayName = "XR Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable Stereo Rendering", getter = () => frameSettings.enableStereo, setter = value => frameSettings.enableStereo = value
                        }
                    }
                },
                new DebugUI.Foldout
                {
                    displayName = "Lighting Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable SSR", getter = () => frameSettings.enableSSR, setter = value => frameSettings.enableSSR = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable SSAO", getter = () => frameSettings.enableSSAO, setter = value => frameSettings.enableSSAO = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable SubsurfaceScattering", getter = () => frameSettings.enableSubsurfaceScattering, setter = value => frameSettings.enableSubsurfaceScattering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transmission", getter = () => frameSettings.enableTransmission, setter = value => frameSettings.enableTransmission = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Shadows", getter = () => frameSettings.enableShadow, setter = value => frameSettings.enableShadow = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Contact Shadows", getter = () => frameSettings.enableContactShadows, setter = value => frameSettings.enableContactShadows = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable ShadowMask", getter = () => frameSettings.enableShadowMask, setter = value => frameSettings.enableShadowMask = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Atmospheric Scattering", getter = () => frameSettings.enableAtmosphericScattering, setter = value => frameSettings.enableAtmosphericScattering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Volumetrics", getter = () => frameSettings.enableVolumetrics, setter = value => frameSettings.enableVolumetrics = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable LightLayers", getter = () => frameSettings.enableLightLayers, setter = value => frameSettings.enableLightLayers = value
                        },
                    }
                }
            });

            LightLoopSettings.RegisterDebug(frameSettings.lightLoopSettings, widgets);

            var panel = DebugManager.instance.GetPanel(menuName, true);

            panel.children.Add(widgets.ToArray());
        }
Exemple #3
0
        public static void RegisterDebug(string menuName, FrameSettings frameSettings)
        {
            List <DebugUI.Widget> widgets = new List <DebugUI.Widget>();

            widgets.AddRange(
                new DebugUI.Widget[]
            {
                new DebugUI.Container
                {
                    displayName = "Rendering Passes",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Prepass", getter = () => frameSettings.enableTransparentPrepass, setter = value => frameSettings.enableTransparentPrepass = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Postpass", getter = () => frameSettings.enableTransparentPostpass, setter = value => frameSettings.enableTransparentPostpass = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Motion Vectors", getter = () => frameSettings.enableMotionVectors, setter = value => frameSettings.enableMotionVectors = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Object Motion Vectors", getter = () => frameSettings.enableObjectMotionVectors, setter = value => frameSettings.enableObjectMotionVectors = value
                        },
//forest-begin: G-Buffer motion vectors
                        new DebugUI.BoolField {
                            displayName = "Enable G-Buffer Motion Vectors", getter = () => frameSettings.enableGBufferMotionVectors, setter = value => frameSettings.enableGBufferMotionVectors = value
                        },
//forest-end:
                        new DebugUI.BoolField {
                            displayName = "Enable DBuffer", getter = () => frameSettings.enableDBuffer, setter = value => frameSettings.enableDBuffer = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Rough Refraction", getter = () => frameSettings.enableRoughRefraction, setter = value => frameSettings.enableRoughRefraction = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Distortion", getter = () => frameSettings.enableDistortion, setter = value => frameSettings.enableDistortion = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Postprocess", getter = () => frameSettings.enablePostprocess, setter = value => frameSettings.enablePostprocess = value
                        },
                    }
                },
                new DebugUI.Container
                {
                    displayName = "Rendering Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Forward Only", getter = () => frameSettings.enableForwardRenderingOnly, setter = value => frameSettings.enableForwardRenderingOnly = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Deferred Depth Prepass", getter = () => frameSettings.enableDepthPrepassWithDeferredRendering, setter = value => frameSettings.enableDepthPrepassWithDeferredRendering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Async Compute", getter = () => frameSettings.enableAsyncCompute, setter = value => frameSettings.enableAsyncCompute = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Opaque Objects", getter = () => frameSettings.enableOpaqueObjects, setter = value => frameSettings.enableOpaqueObjects = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Objects", getter = () => frameSettings.enableTransparentObjects, setter = value => frameSettings.enableTransparentObjects = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable MSAA", getter = () => frameSettings.enableMSAA, setter = value => frameSettings.enableMSAA = value
                        },
                    }
                },
                new DebugUI.Container
                {
                    displayName = "XR Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable Stereo Rendering", getter = () => frameSettings.enableStereo, setter = value => frameSettings.enableStereo = value
                        }
                    }
                },
                new DebugUI.Container
                {
                    displayName = "Lighting Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable SSR", getter = () => frameSettings.enableSSR, setter = value => frameSettings.enableSSR = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable SSAO", getter = () => frameSettings.enableSSAO, setter = value => frameSettings.enableSSAO = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable SubsurfaceScattering", getter = () => frameSettings.enableSubsurfaceScattering, setter = value => frameSettings.enableSubsurfaceScattering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transmission", getter = () => frameSettings.enableTransmission, setter = value => frameSettings.enableTransmission = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Shadows", getter = () => frameSettings.enableShadow, setter = value => frameSettings.enableShadow = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Contact Shadows", getter = () => frameSettings.enableContactShadows, setter = value => frameSettings.enableContactShadows = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable ShadowMask", getter = () => frameSettings.enableShadowMask, setter = value => frameSettings.enableShadowMask = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Atmospheric Scattering", getter = () => frameSettings.enableAtmosphericScattering, setter = value => frameSettings.enableAtmosphericScattering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Volumetrics", getter = () => frameSettings.enableVolumetrics, setter = value => frameSettings.enableVolumetrics = value
                        },
//forest-begin: Explicit reflection probe tracking
                        new DebugUI.BoolField {
                            displayName = "Disable ReflectionProbe Culling", getter = () => frameSettings.disableReflectionProbeCulling, setter = value => frameSettings.disableReflectionProbeCulling = value
                        },
//forest-end:
                    }
                }
//forest-begin: customizable sorting flags
                ,
                new DebugUI.Container
                {
                    displayName = "Sorting Flags",
                    children    =
                    {
                        new DebugUI.EnumField {
                            displayName = "Depth Prepass", getter = () => (int)frameSettings.sortFlagsDepthPrepass, setter = value => frameSettings.sortFlagsDepthPrepass = (SortFlags)value
                        },
                        new DebugUI.EnumField {
                            displayName = "G-Buffer", getter = () => (int)frameSettings.sortFlagsGBuffer, setter = value => frameSettings.sortFlagsGBuffer = (SortFlags)value
                        },
                        new DebugUI.EnumField {
                            displayName = "Forward", getter = () => (int)frameSettings.sortFlagsForward, setter = value => frameSettings.sortFlagsForward = (SortFlags)value
                        },
                        new DebugUI.EnumField {
                            displayName = "Object Motion Vectors", getter = () => (int)frameSettings.sortFlagsObjectMotionVectors, setter = value => frameSettings.sortFlagsObjectMotionVectors = (SortFlags)value
                        },
                    }
                }
//forest-end:
            });

            LightLoopSettings.RegisterDebug(frameSettings.lightLoopSettings, widgets);

            var panel = DebugManager.instance.GetPanel(menuName, true);

            panel.children.Add(widgets.ToArray());
        }
Exemple #4
0
        public static void RegisterDebug(string menuName, FrameSettings frameSettings)
        {
            List <DebugUI.Widget> widgets = new List <DebugUI.Widget>();

            widgets.AddRange(
                new DebugUI.Widget[]
            {
                new DebugUI.Foldout
                {
                    displayName = "Rendering Passes",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Prepass", getter = () => frameSettings.enableTransparentPrepass, setter = value => frameSettings.enableTransparentPrepass = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Postpass", getter = () => frameSettings.enableTransparentPostpass, setter = value => frameSettings.enableTransparentPostpass = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Motion Vectors", getter = () => frameSettings.enableMotionVectors, setter = value => frameSettings.enableMotionVectors = value
                        },
                        new DebugUI.BoolField {
                            displayName = "  Enable Object Motion Vectors", getter = () => frameSettings.enableObjectMotionVectors, setter = value => frameSettings.enableObjectMotionVectors = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable DBuffer", getter = () => frameSettings.enableDecals, setter = value => frameSettings.enableDecals = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Rough Refraction", getter = () => frameSettings.enableRoughRefraction, setter = value => frameSettings.enableRoughRefraction = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Distortion", getter = () => frameSettings.enableDistortion, setter = value => frameSettings.enableDistortion = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Postprocess", getter = () => frameSettings.enablePostprocess, setter = value => frameSettings.enablePostprocess = value
                        },
                    }
                },
                new DebugUI.Foldout
                {
                    displayName = "Rendering Settings",
                    children    =
                    {
                        new DebugUI.EnumField {
                            displayName = "Lit Shader Mode", getter = () => (int)frameSettings.shaderLitMode, setter = value => frameSettings.shaderLitMode = (LitShaderMode)value, autoEnum = typeof(LitShaderMode)
                        },
                        new DebugUI.BoolField {
                            displayName = "Deferred Depth Prepass", getter = () => frameSettings.enableDepthPrepassWithDeferredRendering, setter = value => frameSettings.enableDepthPrepassWithDeferredRendering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Opaque Objects", getter = () => frameSettings.enableOpaqueObjects, setter = value => frameSettings.enableOpaqueObjects = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transparent Objects", getter = () => frameSettings.enableTransparentObjects, setter = value => frameSettings.enableTransparentObjects = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Realtime Planar Reflection", getter = () => frameSettings.enableRealtimePlanarReflection, setter = value => frameSettings.enableRealtimePlanarReflection = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable MSAA", getter = () => frameSettings.enableMSAA, setter = value => frameSettings.enableMSAA = value
                        },
                    }
                },
                new DebugUI.Foldout
                {
                    displayName = "Lighting Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable SSR", getter = () => frameSettings.enableSSR, setter = value => frameSettings.enableSSR = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable SSAO", getter = () => frameSettings.enableSSAO, setter = value => frameSettings.enableSSAO = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable SubsurfaceScattering", getter = () => frameSettings.enableSubsurfaceScattering, setter = value => frameSettings.enableSubsurfaceScattering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Transmission", getter = () => frameSettings.enableTransmission, setter = value => frameSettings.enableTransmission = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Shadows", getter = () => frameSettings.enableShadow, setter = value => frameSettings.enableShadow = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Contact Shadows", getter = () => frameSettings.enableContactShadows, setter = value => frameSettings.enableContactShadows = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable ShadowMask", getter = () => frameSettings.enableShadowMask, setter = value => frameSettings.enableShadowMask = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Atmospheric Scattering", getter = () => frameSettings.enableAtmosphericScattering, setter = value => frameSettings.enableAtmosphericScattering = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Volumetrics", getter = () => frameSettings.enableVolumetrics, setter = value => frameSettings.enableVolumetrics = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable Reprojection For Volumetrics", getter = () => frameSettings.enableReprojectionForVolumetrics, setter = value => frameSettings.enableReprojectionForVolumetrics = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Enable LightLayers", getter = () => frameSettings.enableLightLayers, setter = value => frameSettings.enableLightLayers = value
                        },
                    }
                },
                new DebugUI.Foldout
                {
                    displayName = "Async Compute Settings",
                    children    =
                    {
                        new DebugUI.BoolField {
                            displayName = "Enable Async Compute", getter = () => frameSettings.enableAsyncCompute, setter = value => frameSettings.enableAsyncCompute = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Run Build Light List Async", getter = () => frameSettings.runLightListAsync, setter = value => frameSettings.runLightListAsync = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Run SSR Async", getter = () => frameSettings.runSSRAsync, setter = value => frameSettings.runSSRAsync = value
                        },
                        new DebugUI.BoolField {
                            displayName = "Run SSAO Async", getter = () => frameSettings.runSSAOAsync, setter = value => frameSettings.runSSAOAsync = value
                        },
                    }
                }
            });

            LightLoopSettings.RegisterDebug(frameSettings.lightLoopSettings, widgets);

            var panel = DebugManager.instance.GetPanel(menuName, true);

            panel.children.Add(widgets.ToArray());
        }
Exemple #5
0
        public static void RegisterDebug(string menuName, FrameSettings frameSettings)
        {
            s_DebugEntries = new DebugUI.Widget[]
            {
                new DebugUI.BoolField {
                    displayName = "Enable Shadows", getter = () => frameSettings.enableShadow, setter = value => frameSettings.enableShadow = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Contact Shadows", getter = () => frameSettings.enableContactShadows, setter = value => frameSettings.enableContactShadows = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable SSR", getter = () => frameSettings.enableSSR, setter = value => frameSettings.enableSSR = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable SSAO", getter = () => frameSettings.enableSSAO, setter = value => frameSettings.enableSSAO = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable SubsurfaceScattering", getter = () => frameSettings.enableSubsurfaceScattering, setter = value => frameSettings.enableSubsurfaceScattering = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Transmission", getter = () => frameSettings.enableTransmission, setter = value => frameSettings.enableTransmission = value
                },

                new DebugUI.BoolField {
                    displayName = "Forward Only", getter = () => frameSettings.enableForwardRenderingOnly, setter = value => frameSettings.enableForwardRenderingOnly = value
                },
                new DebugUI.BoolField {
                    displayName = "Deferred Depth Prepass", getter = () => frameSettings.enableDepthPrepassWithDeferredRendering, setter = value => frameSettings.enableDepthPrepassWithDeferredRendering = value
                },
                new DebugUI.BoolField {
                    displayName = "Deferred Depth Prepass ATest Only", getter = () => frameSettings.enableAlphaTestOnlyInDeferredPrepass, setter = value => frameSettings.enableAlphaTestOnlyInDeferredPrepass = value
                },

                new DebugUI.BoolField {
                    displayName = "Enable Transparent Prepass", getter = () => frameSettings.enableTransparentPrepass, setter = value => frameSettings.enableTransparentPrepass = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Motion Vectors", getter = () => frameSettings.enableMotionVectors, setter = value => frameSettings.enableMotionVectors = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Object Motion Vectors", getter = () => frameSettings.enableObjectMotionVectors, setter = value => frameSettings.enableObjectMotionVectors = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable DBuffer", getter = () => frameSettings.enableDBuffer, setter = value => frameSettings.enableDBuffer = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Atmospheric Scattering", getter = () => frameSettings.enableAtmosphericScattering, setter = value => frameSettings.enableAtmosphericScattering = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Rough Refraction", getter = () => frameSettings.enableRoughRefraction, setter = value => frameSettings.enableRoughRefraction = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Transparent Postpass", getter = () => frameSettings.enableTransparentPostpass, setter = value => frameSettings.enableTransparentPostpass = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Distortion", getter = () => frameSettings.enableDistortion, setter = value => frameSettings.enableDistortion = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Postprocess", getter = () => frameSettings.enablePostprocess, setter = value => frameSettings.enablePostprocess = value
                },

                new DebugUI.BoolField {
                    displayName = "Enable Stereo Rendering", getter = () => frameSettings.enableStereo, setter = value => frameSettings.enableStereo = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Async Compute", getter = () => frameSettings.enableAsyncCompute, setter = value => frameSettings.enableAsyncCompute = value
                },

                new DebugUI.BoolField {
                    displayName = "Enable Opaque Objects", getter = () => frameSettings.enableOpaqueObjects, setter = value => frameSettings.enableOpaqueObjects = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable Transparent Objects", getter = () => frameSettings.enableTransparentObjects, setter = value => frameSettings.enableTransparentObjects = value
                },

                new DebugUI.BoolField {
                    displayName = "Enable MSAA", getter = () => frameSettings.enableMSAA, setter = value => frameSettings.enableMSAA = value
                },
                new DebugUI.BoolField {
                    displayName = "Enable ShadowMask", getter = () => frameSettings.enableShadowMask, setter = value => frameSettings.enableShadowMask = value
                },
            };

            var panel = DebugManager.instance.GetPanel(menuName, true);

            panel.children.Add(s_DebugEntries);

            LightLoopSettings.RegisterDebug(menuName, frameSettings.lightLoopSettings);
        }