Exemplo n.º 1
0
        /// <summary>
        /// Displays distance fadeout parameters for spot/point lights
        /// </summary>
        private void DisplayLightDistanceAttenuationParameters()
        {
            EditorGUILayout.BeginVertical();

            GUILayout.Label("Distance Attenuation", GuiStyles.LabelCenteredBig);
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Threshold\" parameter is the normalized distance when the fade will start, until 1.");
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Threshold", GuiStyles.Label, GUILayout.MaxWidth(160));
            GuiHelpers.DrawSlider(ref _customDistanceFalloffThresholdProperty, 0.0f, 1.0f);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Separator();

            GuiHelpers.DrawPositiveOnlyFloatField(ref _customDistanceFalloffPowerProperty, new GUIContent("Strength", "The curve of the fading"));

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("Allows to reset to Unity's default values.");
            if (GUILayout.Button("Reset", GuiStyles.Button))
            {
                _customDistanceFalloffThresholdProperty.floatValue = 0.5f;
                _customDistanceFalloffPowerProperty.floatValue     = 2.0f;
            }

            EditorGUILayout.EndVertical();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Displays the common parameters tab
        /// </summary>
        private void DisplayCommonSettingsArea()
        {
            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(_commonSettingsTitleContent, new GUIStyle(GuiStyles.LabelBoldCenteredBig)
            {
                fontSize = 15
            });
            EditorGUILayout.Separator();

            GuiHelpers.DrawFloatField(ref _strengthProperty, new GUIContent("Strength", "Multiplies the intensity of the light source in the system"));

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Enable Shadows\" parameter allows you to compute the light's shadows (if enabled) in the system.");
            GuiHelpers.DrawToggleChecker(ref _useShadowsProperty, "Enable Shadows");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Enable Cookie\" parameter allows you to compute the light's cookie (if enabled) in the system.");
            //EditorGUI.BeginDisabledGroup(!_component.CastsCookie);
            GuiHelpers.DrawToggleChecker(ref _useCookieProperty, "Enable Cookie");
            //EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Override Color\" parameter allows you to replace the light's color in the system.");
            GuiHelpers.DrawToggleChecker(ref _overrideColorProperty, "Override Color");
            if (_overrideColorProperty.boolValue)
            {
                //EditorGUI.BeginDisabledGroup(!_overrideColorProperty.boolValue);
                EditorGUILayout.BeginVertical();
                GuiHelpers.DrawContextualHelpBox("The \"Overriding Color\" is the color that will replace the light's color in the system.");
                EditorGUILayout.PropertyField(_overridingColorProperty);
                EditorGUILayout.EndVertical();
                //EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Scattering Bias\" parameter allows to have more control of how the light will scatter in the environment.");
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Scattering Bias", GuiStyles.Label, GUILayout.MaxWidth(160));
            GuiHelpers.DrawSlider(ref _scatteringBiasProperty, -1.0f, 1.0f);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Displays Shape Settings Area
        /// </summary>
        private void DisplayShapeSettingsArea()
        {
            EditorGUILayout.BeginVertical();
            GuiHelpers.DrawContextualHelpBox("The \"Shape\" parameter allows you to define the volumetric shape of the volume used for injecting Density, Color or Scattering.\n\nYou will also be able to parameter the fading on the borders of the shape, allowing a smooth transition between the inside and the outside of the volume.");
            EditorGUILayout.Separator();
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Shape", GuiStyles.Label, GUILayout.MaxWidth(160));
            EditorGUILayout.PropertyField(_volumeShapeProperty, new GUIContent(""));
            EditorGUILayout.EndHorizontal();

            if ((VolumeType)_volumeShapeProperty.enumValueIndex != VolumeType.Global)
            {
                switch ((VolumeType)_volumeShapeProperty.enumValueIndex)
                {
                case VolumeType.Box:
                {
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Width Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawMinMaxSlider(ref _xNegativeCubeFadeProperty, ref _xPositiveCubeFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Height Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawMinMaxSlider(ref _yNegativeCubeFadeProperty, ref _yPositiveCubeFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Depth Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawMinMaxSlider(ref _zNegativeCubeFadeProperty, ref _zPositiveCubeFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                }
                break;

                case VolumeType.Cone:
                {
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Angular Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawSlider(ref _angularConeFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Distance Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawSlider(ref _distanceConeFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                }
                break;

                case VolumeType.Cylinder:
                {
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Width Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawSlider(ref _widthCylinderFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Height Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawMinMaxSlider(ref _yNegativeCylinderFadeProperty, ref _yPositiveCylinderFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                }
                break;

                case VolumeType.Sphere:
                {
                    EditorGUILayout.Separator();
                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Distance Fade", GuiStyles.Label, GUILayout.MaxWidth(160));
                    GuiHelpers.DrawSlider(ref _distanceSphereFadeProperty, 0, 1, true);
                    EditorGUILayout.EndHorizontal();
                }
                break;
                }

                EditorGUILayout.Separator();

                GuiHelpers.DrawPositiveOnlyFloatField(ref _falloffFadeProperty, new GUIContent("Fade Falloff", "The curve of the fading"));
            }
            EditorGUILayout.EndVertical();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Displays the content of the settings tab
        /// </summary>
        private static void DisplaySettingsArea(SerializedObject serializedObject, AuraCamera auraComponent)
        {
            EditorGUILayout.BeginVertical(GuiStyles.Background);

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent(" Debug", Aura.ResourcesCollection.debugIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _debugVolumetricLightingProperty, "Display Volumetric Lighting Only");

            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _debugOcclusionCullingProperty, "Display Occlusion Miss");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent(" Grid", Aura.ResourcesCollection.gridIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Grid\" parameters allow you to determine the density of cells used to compute the volumetric lighting.\n\nThis cubic grid will be remapped on the frustum (the volume visible to the camera) and will range from the camera's near clip distance to the \"Range\" distance parameter (for performance saving and because behind a certain distance, changes are barely noticeable).");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical();
            if (!IsEditionQualitySettings)
            {
                _frustumGridResolutionProperty.FindPropertyRelative("x").intValue = Mathf.Max(8, EditorGUILayout.IntField("Horizontal", _frustumGridResolutionProperty.FindPropertyRelative("x").intValue));
                _frustumGridResolutionProperty.FindPropertyRelative("y").intValue = Mathf.Max(8, EditorGUILayout.IntField("Vertical", _frustumGridResolutionProperty.FindPropertyRelative("y").intValue));
                _frustumGridResolutionProperty.FindPropertyRelative("z").intValue = Mathf.Max(8, EditorGUILayout.IntField("Depth", _frustumGridResolutionProperty.FindPropertyRelative("z").intValue));
                EditorGUILayout.Separator();
                if (GUILayout.Button("Set Resolution", GuiStyles.ButtonBold))
                {
                    //if (IsEditionQualitySettings)
                    //{
                    //    SceneViewVisualization.SetSceneViewVisualizationFrustumGridResolution(_frustumGridResolutionProperty.vector3IntValue);
                    //}
                    //else
                    {
                        _current.SetFrustumGridResolution(_frustumGridResolutionProperty.vector3IntValue);
                    }
                }

                EditorGUILayout.Separator();
                EditorGUILayout.Separator();

                GuiHelpers.DrawToggleChecker(ref _enableAutomaticStereoResizingProperty, new GUIContent("Resize Automatically In Stereo Mode", "Enables the automatic horizontal resizing of the frustum grid resolution when the camera is running in stereo mode\n(halved size for MultiPass, doubled size for SinglePass)"));

                EditorGUILayout.Separator();
                EditorGUILayout.Separator();
            }
            else
            {
                GuiHelpers.DrawHelpBox("Custom grid resolution in SceneView is not currently available", HelpBoxType.Experimental);
                EditorGUILayout.Separator();
                EditorGUILayout.Separator();
            }

            GuiHelpers.DrawPositiveOnlyFloatField(ref _gridSettingsFarPlaneProperty, "Range");
            if (auraComponent != null && _gridSettingsFarPlaneProperty.floatValue < auraComponent.CameraComponent.nearClipPlane)
            {
                GuiHelpers.DrawHelpBox("Range must be bigger than 0", HelpBoxType.Warning);
            }

            EditorGUILayout.Separator();

            GuiHelpers.DrawSlider(ref _depthBiasCoefficientProperty, 0, 1, "Depth Bias", true);

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Occlusion Culling\" allows to compute the maximum visible depth of the frustum grid.\n\nThis leads to avoid computing cells that are invisible to the camera because hidden behind objects.");
            GuiHelpers.DrawToggleChecker(ref _enableOcclusionCullingProperty, "Enable Occlusion Culling");
            EditorGUI.BeginDisabledGroup(!_enableOcclusionCullingProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            EditorGUILayout.PropertyField(_occlusionCullingAccuracyProperty, new GUIContent("Accuracy"));
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent(" Filtering", Aura.ResourcesCollection.cameraIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("These parameters allow to configure the filtering of the volumetric data.");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical();
            GuiHelpers.DrawToggleChecker(ref _enableDitheringProperty, "Enable Color Dithering");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.PropertyField(_texture3DFilteringProperty, new GUIContent("Texture3D Filtering"));

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("The \"Reprojection\" allows to blend the current (jittered) computed frame with the previous one.\n\nThis leads to a smoother volumetric lighting, especially with a low resolution grid.");
            GuiHelpers.DrawToggleChecker(ref _enableTemporalReprojectionProperty, "Enable Reprojection");
            EditorGUI.BeginDisabledGroup(!_enableTemporalReprojectionProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            GuiHelpers.DrawSlider(ref _temporalReprojectionFactorProperty, 0, 1, "Reprojector factor");
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();
            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent(" Options", Aura.ResourcesCollection.optionsIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("These parameters allow you to enable/disable some options.\n\nNote that the existence of the different contributions are handled by the system at runtime.");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical();

            GuiHelpers.DrawToggleChecker(ref _enableAmbientLightingProperty, "Enable Ambient Lighting");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _enableVolumesProperty, "Enable Volumes");
            EditorGUI.BeginDisabledGroup(!_enableVolumesProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            GuiHelpers.DrawToggleChecker(ref _enableVolumesNoiseMaskProperty, "Enable Noise Masks");
            EditorGUILayout.Separator();
            GuiHelpers.DrawToggleChecker(ref _enableVolumesTexture2DMaskProperty, "Enable Texture2D Masks");
            EditorGUILayout.Separator();
            GuiHelpers.DrawToggleChecker(ref _enableVolumesTexture3DMaskProperty, "Enable Texture3D Masks");
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _enableDirectionalLightsProperty, "Enable Directional Lights");
            EditorGUI.BeginDisabledGroup(!_enableDirectionalLightsProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            GuiHelpers.DrawToggleChecker(ref _enableDirectionalLightsShadowsProperty, "Enable Shadows");
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _enableSpotLightsProperty, "Enable Spot Lights");
            EditorGUI.BeginDisabledGroup(!_enableSpotLightsProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            GuiHelpers.DrawToggleChecker(ref _enableSpotLightsShadowsProperty, "Enable Shadows");
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _enablePointLightsProperty, "Enable Point Lights");
            EditorGUI.BeginDisabledGroup(!_enablePointLightsProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            GuiHelpers.DrawToggleChecker(ref _enablePointLightsShadowsProperty, "Enable Shadows");
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUI.BeginDisabledGroup(!_enableSpotLightsProperty.boolValue && !_enableSpotLightsProperty.boolValue && !_enableDirectionalLightsProperty.boolValue);
            GuiHelpers.DrawToggleChecker(ref _enableLightsCookiesProperty, "Enable Cookies");
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent(" Experimental Features", Aura.ResourcesCollection.experimentalIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();

            GuiHelpers.DrawHelpBox("These features are still under active development.\nThey might currently lead to visual/performance issues.", HelpBoxType.Experimental);

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _enableDenoisingFilterProperty, "Enable Denoising Filter");
            EditorGUI.BeginDisabledGroup(!_enableDenoisingFilterProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            EditorGUILayout.PropertyField(_denoisingFilterRangeProperty, new GUIContent("Range"));
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _enableBlurFilterProperty, "Enable Blur Filter");
            EditorGUI.BeginDisabledGroup(!_enableBlurFilterProperty.boolValue);
            EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            EditorGUILayout.PropertyField(_blurFilterRangeProperty, new GUIContent("Range"));
            EditorGUILayout.PropertyField(_blurFilterTypeProperty, new GUIContent("Type"));
            if ((BlurFilterType)_blurFilterTypeProperty.enumValueIndex == BlurFilterType.Gaussian)
            {
                GuiHelpers.DrawSlider(ref _blurFilterGaussianDeviationProperty, 0.0f, 0.01f, "Lobe Bulge");
            }
            EditorGUILayout.EndVertical();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical();

            GuiHelpers.DrawContextualHelpBox("The \"Light Probes\" allows to compute the world space light probes' data and inject it as contributing light in the volumetric lighting system.");
            GuiHelpers.DrawToggleChecker(ref _enableLightProbesProperty, "Enable Light Probes");
            //if(!IsEditionQualitySettings)
            //{
            //    EditorGUI.BeginDisabledGroup(!_enableLightProbesProperty.boolValue);
            //    EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
            //    _lightProbesProxyGridResolutionProperty.FindPropertyRelative("x").intValue = Mathf.Max(2, EditorGUILayout.IntField("Horizontal", _lightProbesProxyGridResolutionProperty.FindPropertyRelative("x").intValue));
            //    _lightProbesProxyGridResolutionProperty.FindPropertyRelative("y").intValue = Mathf.Max(2, EditorGUILayout.IntField("Vertical", _lightProbesProxyGridResolutionProperty.FindPropertyRelative("y").intValue));
            //    _lightProbesProxyGridResolutionProperty.FindPropertyRelative("z").intValue = Mathf.Max(2, EditorGUILayout.IntField("Depth", _lightProbesProxyGridResolutionProperty.FindPropertyRelative("z").intValue));
            //    EditorGUILayout.Separator();
            //    if (GUILayout.Button("Set Resolution", GuiStyles.ButtonNoHover))
            //    {
            //        _current.SetLightProbesProxyGridResolution(_lightProbesProxyGridResolutionProperty.vector3IntValue);
            //    }
            //    EditorGUILayout.EndVertical();
            //    EditorGUI.EndDisabledGroup();
            //}
            EditorGUILayout.Separator();
            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Displays the content of the "World's Primary Injection" tab
        /// </summary>
        private static void DisplayBaseSettingsArea()
        {
            EditorGUILayout.BeginVertical(GuiStyles.Background);

            EditorGUILayout.BeginVertical(GuiStyles.ButtonNoHover);

            EditorGUILayout.Separator();
            GUILayout.Label(new GUIContent(" Global Injection", Aura.ResourcesCollection.injectionIconTexture), GuiStyles.LabelBoldCenteredBig);
            EditorGUILayout.Separator();

            GuiHelpers.DrawContextualHelpBox("These parameters are the ambient Density, Lighting and Scattering, set globally for the whole surrounding environment.");

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.BeginVertical();
            GuiHelpers.DrawToggleChecker(ref _useDensityProperty, new GUIContent(" Use Global Density", Aura.ResourcesCollection.densityIconTexture, "Injects an ambient density"), true, true);
            if (_useDensityProperty.boolValue)
            {
                //EditorGUI.BeginDisabledGroup(!_useDensityProperty.boolValue);
                EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
                GuiHelpers.DrawPositiveOnlyFloatField(ref _baseDensityProperty, "Global Density");
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
                //EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _useScatteringProperty, new GUIContent(" Use Global Scattering", Aura.ResourcesCollection.scatteringIconTexture, "Injects an ambient scattering"), true, true);
            if (_useScatteringProperty.boolValue)
            {
                //EditorGUI.BeginDisabledGroup(!_useScatteringProperty.boolValue);
                EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
                GuiHelpers.DrawSlider(ref _baseScatteringProperty, 0, 1, "Global Scattering");
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
                //EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _useAmbientLightingProperty, new GUIContent(" Use Ambient Lighting", Aura.ResourcesCollection.illuminationIconTexture, "Injects the \"Environment lighting\" set in the \"Lighting\" window"), true, true);
            if (_useAmbientLightingProperty.boolValue)
            {
                //EditorGUI.BeginDisabledGroup(!_useAmbientLightingProperty.boolValue);
                EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
                GuiHelpers.DrawPositiveOnlyFloatField(ref _ambientLightingStrengthProperty, "Ambient Strength");
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
                //EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _useColorProperty, new GUIContent(" Use Global Light", Aura.ResourcesCollection.colorIconTexture, "Injects an ambient light"), true, true);
            if (_useColorProperty.boolValue)
            {
                //EditorGUI.BeginDisabledGroup(!_useColorProperty.boolValue);
                EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
                EditorGUILayout.PropertyField(_baseColorProperty);
                GuiHelpers.DrawPositiveOnlyFloatField(ref _baseColorStrengthProperty, "Global Light Strength");
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
                //EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            GuiHelpers.DrawToggleChecker(ref _useExtinctionProperty, new GUIContent(" Use Extinction", Aura.ResourcesCollection.extinctionIconTexture, "Simulates the depth related decay of light"), true, true);
            if (_useExtinctionProperty.boolValue)
            {
                //EditorGUI.BeginDisabledGroup(!_useExtinctionProperty.boolValue);
                EditorGUILayout.BeginVertical(GuiStyles.EmptyMiddleAligned);
                GuiHelpers.DrawSlider(ref _extinctionProperty, 0, 1, "Global Extinction", true);
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
                //EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Separator();
            EditorGUILayout.Separator();

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndVertical();
        }