protected static void SetupMaterialWithRenderingMode(Material material, RenderingMode mode, CustomRenderingMode customMode, int renderQueueOverride)
        {
            switch (mode)
            {
            case RenderingMode.Opaque:
            {
                material.SetOverrideTag(Styles.renderTypeName, Styles.renderingModeNames[(int)RenderingMode.Opaque]);
                material.SetInt(Styles.customRenderingModeName, (int)CustomRenderingMode.Opaque);
                material.SetInt(Styles.sourceBlendName, (int)UnityEngine.Rendering.BlendMode.One);
                material.SetInt(Styles.destinationBlendName, (int)UnityEngine.Rendering.BlendMode.Zero);
                material.SetInt(Styles.blendOperationName, (int)UnityEngine.Rendering.BlendOp.Add);
                material.SetInt(Styles.depthTestName, (int)UnityEngine.Rendering.CompareFunction.LessEqual);
                material.SetInt(Styles.depthWriteName, (int)DepthWrite.On);
                material.SetInt(Styles.colorWriteMaskName, (int)UnityEngine.Rendering.ColorWriteMask.All);
                material.DisableKeyword(Styles.alphaTestOnName);
                material.DisableKeyword(Styles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)UnityEngine.Rendering.RenderQueue.Geometry;
            }
            break;

            case RenderingMode.TransparentCutout:
            {
                material.SetOverrideTag(Styles.renderTypeName, Styles.renderingModeNames[(int)RenderingMode.TransparentCutout]);
                material.SetInt(Styles.customRenderingModeName, (int)CustomRenderingMode.TransparentCutout);
                material.SetInt(Styles.sourceBlendName, (int)UnityEngine.Rendering.BlendMode.One);
                material.SetInt(Styles.destinationBlendName, (int)UnityEngine.Rendering.BlendMode.Zero);
                material.SetInt(Styles.blendOperationName, (int)UnityEngine.Rendering.BlendOp.Add);
                material.SetInt(Styles.depthTestName, (int)UnityEngine.Rendering.CompareFunction.LessEqual);
                material.SetInt(Styles.depthWriteName, (int)DepthWrite.On);
                material.SetInt(Styles.colorWriteMaskName, (int)UnityEngine.Rendering.ColorWriteMask.All);
                material.EnableKeyword(Styles.alphaTestOnName);
                material.DisableKeyword(Styles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)UnityEngine.Rendering.RenderQueue.AlphaTest;
            }
            break;

            case RenderingMode.Transparent:
            {
                material.SetOverrideTag(Styles.renderTypeName, Styles.renderingModeNames[(int)RenderingMode.Transparent]);
                material.SetInt(Styles.customRenderingModeName, (int)CustomRenderingMode.Transparent);
                material.SetInt(Styles.sourceBlendName, (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
                material.SetInt(Styles.destinationBlendName, (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                material.SetInt(Styles.blendOperationName, (int)UnityEngine.Rendering.BlendOp.Add);
                material.SetInt(Styles.depthTestName, (int)UnityEngine.Rendering.CompareFunction.LessEqual);
                material.SetInt(Styles.depthWriteName, (int)DepthWrite.Off);
                material.SetInt(Styles.colorWriteMaskName, (int)UnityEngine.Rendering.ColorWriteMask.All);
                material.DisableKeyword(Styles.alphaTestOnName);
                material.EnableKeyword(Styles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)UnityEngine.Rendering.RenderQueue.Transparent;
            }
            break;

            case RenderingMode.PremultipliedTransparent:
            {
                material.SetOverrideTag(Styles.renderTypeName, Styles.renderingModeNames[(int)RenderingMode.Transparent]);
                material.SetInt(Styles.customRenderingModeName, (int)CustomRenderingMode.Transparent);
                material.SetInt(Styles.sourceBlendName, (int)UnityEngine.Rendering.BlendMode.One);
                material.SetInt(Styles.destinationBlendName, (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
                material.SetInt(Styles.blendOperationName, (int)UnityEngine.Rendering.BlendOp.Add);
                material.SetInt(Styles.depthTestName, (int)UnityEngine.Rendering.CompareFunction.LessEqual);
                material.SetInt(Styles.depthWriteName, (int)DepthWrite.Off);
                material.SetInt(Styles.colorWriteMaskName, (int)UnityEngine.Rendering.ColorWriteMask.All);
                material.DisableKeyword(Styles.alphaTestOnName);
                material.EnableKeyword(Styles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)UnityEngine.Rendering.RenderQueue.Transparent;
            }
            break;

            case RenderingMode.Additive:
            {
                material.SetOverrideTag(Styles.renderTypeName, Styles.renderingModeNames[(int)RenderingMode.Transparent]);
                material.SetInt(Styles.customRenderingModeName, (int)CustomRenderingMode.Transparent);
                material.SetInt(Styles.sourceBlendName, (int)UnityEngine.Rendering.BlendMode.One);
                material.SetInt(Styles.destinationBlendName, (int)UnityEngine.Rendering.BlendMode.One);
                material.SetInt(Styles.blendOperationName, (int)UnityEngine.Rendering.BlendOp.Add);
                material.SetInt(Styles.depthTestName, (int)UnityEngine.Rendering.CompareFunction.LessEqual);
                material.SetInt(Styles.depthWriteName, (int)DepthWrite.Off);
                material.SetInt(Styles.colorWriteMaskName, (int)UnityEngine.Rendering.ColorWriteMask.All);
                material.DisableKeyword(Styles.alphaTestOnName);
                material.EnableKeyword(Styles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)UnityEngine.Rendering.RenderQueue.Transparent;
            }
            break;

            case RenderingMode.Custom:
            {
                material.SetOverrideTag(Styles.renderTypeName, Styles.customRenderingModeNames[(int)customMode]);
                // _SrcBlend, _DstBlend, _BlendOp, _ZTest, _ZWrite, _ColorWriteMask are controlled by UI.

                switch (customMode)
                {
                case CustomRenderingMode.Opaque:
                {
                    material.DisableKeyword(Styles.alphaTestOnName);
                    material.DisableKeyword(Styles.alphaBlendOnName);
                }
                break;

                case CustomRenderingMode.TransparentCutout:
                {
                    material.EnableKeyword(Styles.alphaTestOnName);
                    material.DisableKeyword(Styles.alphaBlendOnName);
                }
                break;

                case CustomRenderingMode.Transparent:
                {
                    material.DisableKeyword(Styles.alphaTestOnName);
                    material.EnableKeyword(Styles.alphaBlendOnName);
                }
                break;
                }

                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : material.renderQueue;
            }
            break;
            }
        }
        protected void FluentOptions(MaterialEditor materialEditor, Material material)
        {
            EditorGUILayout.Space();
            GUILayout.Label(Styles.fluentOptionsTitle, EditorStyles.boldLabel, new GUILayoutOption[0]);
            RenderingMode       mode       = (RenderingMode)renderingMode.floatValue;
            CustomRenderingMode customMode = (CustomRenderingMode)customRenderingMode.floatValue;

            materialEditor.ShaderProperty(hoverLight, Styles.hoverLight);

            if (PropertyEnabled(hoverLight))
            {
                materialEditor.ShaderProperty(enableHoverColorOverride, Styles.enableHoverColorOverride, 2);

                if (PropertyEnabled(enableHoverColorOverride))
                {
                    materialEditor.ShaderProperty(hoverColorOverride, Styles.hoverColorOverride, 4);
                }

                if (mode == RenderingMode.Transparent || (mode == RenderingMode.Custom && customMode == CustomRenderingMode.Transparent))
                {
                    materialEditor.ShaderProperty(hoverLightOpaque, Styles.hoverLightOpaque, 2);
                }

                if (PropertyEnabled(hoverLightOpaque))
                {
                    materialEditor.ShaderProperty(enableHoverColorOpaqueOverride, Styles.enableHoverColorOpaqueOverride, 4);

                    if (PropertyEnabled(enableHoverColorOpaqueOverride))
                    {
                        materialEditor.ShaderProperty(hoverColorOverrideOpaque, Styles.hoverColorOpaqueOverride, 6);
                    }
                }
            }

            materialEditor.ShaderProperty(roundCorners, Styles.roundCorners);

            if (PropertyEnabled(roundCorners))
            {
                materialEditor.ShaderProperty(roundCornerRadius, Styles.roundCornerRadius, 2);
                materialEditor.ShaderProperty(roundCornerMargin, Styles.roundCornerMargin, 2);
            }

            materialEditor.ShaderProperty(borderLight, Styles.borderLight);

            if (PropertyEnabled(borderLight))
            {
                if (PropertyEnabled(hoverLight))
                {
                    materialEditor.ShaderProperty(borderLightUsesHoverColor, Styles.borderLightUsesHoverColor, 2);
                }

                if (mode == RenderingMode.TransparentCutout || mode == RenderingMode.Transparent ||
                    (mode == RenderingMode.Custom && customMode == CustomRenderingMode.TransparentCutout) ||
                    (mode == RenderingMode.Custom && customMode == CustomRenderingMode.Transparent))
                {
                    materialEditor.ShaderProperty(borderLightOpaque, Styles.borderLightOpaque, 2);
                }

                materialEditor.ShaderProperty(borderWidth, Styles.borderWidth, 2);

                if (!PropertyEnabled(borderLightOpaque))
                {
                    materialEditor.ShaderProperty(borderMinValue, Styles.borderMinValue, 2);
                }
            }

            if (PropertyEnabled(roundCorners) || PropertyEnabled(borderLight))
            {
                materialEditor.ShaderProperty(edgeSmoothingValue, Styles.edgeSmoothingValue);
            }

            materialEditor.ShaderProperty(innerGlow, Styles.innerGlow);

            if (PropertyEnabled(innerGlow))
            {
                materialEditor.ShaderProperty(innerGlowColor, Styles.innerGlowColor, 2);
            }

            materialEditor.ShaderProperty(environmentColoring, Styles.environmentColoring);

            if (PropertyEnabled(environmentColoring))
            {
                materialEditor.ShaderProperty(environmentColorThreshold, Styles.environmentColorThreshold, 2);
                materialEditor.ShaderProperty(environmentColorIntensity, Styles.environmentColorIntensity, 2);
                materialEditor.ShaderProperty(environmentColorX, Styles.environmentColorX, 2);
                materialEditor.ShaderProperty(environmentColorY, Styles.environmentColorY, 2);
                materialEditor.ShaderProperty(environmentColorZ, Styles.environmentColorZ, 2);
            }
        }
    protected void FluentOptions(MaterialEditor materialEditor, Material material)
    {
        EditorGUILayout.Space();
        GUILayout.Label(Styles.fluentOptionsTitle, EditorStyles.boldLabel);
        RenderingMode       mode       = (RenderingMode)renderingMode.floatValue;
        CustomRenderingMode customMode = (CustomRenderingMode)customRenderingMode.floatValue;

        materialEditor.ShaderProperty(hoverLight, Styles.hoverLight);

        if (PropertyEnabled(hoverLight))
        {
            //  GUILayout.Box(string.Format(Styles.propertiesComponentHelp, nameof(HoverLight), Styles.hoverLight.text), EditorStyles.helpBox, new GUILayoutOption[0]);

            materialEditor.ShaderProperty(enableHoverColorOverride, Styles.enableHoverColorOverride, 2);

            if (PropertyEnabled(enableHoverColorOverride))
            {
                materialEditor.ShaderProperty(hoverColorOverride, Styles.hoverColorOverride, 4);
            }
        }

        materialEditor.ShaderProperty(proximityLight, Styles.proximityLight);

        if (PropertyEnabled(proximityLight))
        {
            materialEditor.ShaderProperty(enableProximityLightColorOverride, Styles.enableProximityLightColorOverride, 2);

            if (PropertyEnabled(enableProximityLightColorOverride))
            {
                materialEditor.ShaderProperty(proximityLightCenterColorOverride, Styles.proximityLightCenterColorOverride, 4);
                materialEditor.ShaderProperty(proximityLightMiddleColorOverride, Styles.proximityLightMiddleColorOverride, 4);
                materialEditor.ShaderProperty(proximityLightOuterColorOverride, Styles.proximityLightOuterColorOverride, 4);
            }

            materialEditor.ShaderProperty(proximityLightSubtractive, Styles.proximityLightSubtractive, 2);
            materialEditor.ShaderProperty(proximityLightTwoSided, Styles.proximityLightTwoSided, 2);
            //   GUILayout.Box(string.Format(Styles.propertiesComponentHelp, nameof(ProximityLight), Styles.proximityLight.text), EditorStyles.helpBox, new GUILayoutOption[0]);
        }

        materialEditor.ShaderProperty(borderLight, Styles.borderLight);

        if (PropertyEnabled(borderLight))
        {
            materialEditor.ShaderProperty(borderWidth, Styles.borderWidth, 2);

            materialEditor.ShaderProperty(borderMinValue, Styles.borderMinValue, 2);

            materialEditor.ShaderProperty(borderLightReplacesAlbedo, Styles.borderLightReplacesAlbedo, 2);

            if (PropertyEnabled(hoverLight) && PropertyEnabled(enableHoverColorOverride))
            {
                materialEditor.ShaderProperty(borderLightUsesHoverColor, Styles.borderLightUsesHoverColor, 2);
            }

            if (mode == RenderingMode.TransparentCutout || mode == RenderingMode.Transparent ||
                (mode == RenderingMode.Custom && customMode == CustomRenderingMode.TransparentCutout) ||
                (mode == RenderingMode.Custom && customMode == CustomRenderingMode.Transparent))
            {
                materialEditor.ShaderProperty(borderLightOpaque, Styles.borderLightOpaque, 2);

                if (PropertyEnabled(borderLightOpaque))
                {
                    materialEditor.ShaderProperty(borderLightOpaqueAlpha, Styles.borderLightOpaqueAlpha, 4);
                }
            }
        }

        if (PropertyEnabled(hoverLight) || PropertyEnabled(proximityLight) || PropertyEnabled(borderLight))
        {
            materialEditor.ShaderProperty(fluentLightIntensity, Styles.fluentLightIntensity);
        }

        materialEditor.ShaderProperty(roundCorners, Styles.roundCorners);

        if (PropertyEnabled(roundCorners))
        {
            materialEditor.ShaderProperty(roundCornerRadius, Styles.roundCornerRadius, 2);
            materialEditor.ShaderProperty(roundCornerMargin, Styles.roundCornerMargin, 2);
        }

        if (PropertyEnabled(roundCorners) || PropertyEnabled(borderLight))
        {
            materialEditor.ShaderProperty(edgeSmoothingValue, Styles.edgeSmoothingValue);
        }

        materialEditor.ShaderProperty(innerGlow, Styles.innerGlow);

        if (PropertyEnabled(innerGlow))
        {
            materialEditor.ShaderProperty(innerGlowColor, Styles.innerGlowColor, 2);
            materialEditor.ShaderProperty(innerGlowPower, Styles.innerGlowPower, 2);
        }

        materialEditor.ShaderProperty(iridescence, Styles.iridescence);

        if (PropertyEnabled(iridescence))
        {
            EditorGUI.indentLevel += 2;
            materialEditor.TexturePropertySingleLine(Styles.iridescentSpectrumMap, iridescentSpectrumMap);
            EditorGUI.indentLevel -= 2;
            materialEditor.ShaderProperty(iridescenceIntensity, Styles.iridescenceIntensity, 2);
            materialEditor.ShaderProperty(iridescenceThreshold, Styles.iridescenceThreshold, 2);
            materialEditor.ShaderProperty(iridescenceAngle, Styles.iridescenceAngle, 2);
        }

        materialEditor.ShaderProperty(environmentColoring, Styles.environmentColoring);

        if (PropertyEnabled(environmentColoring))
        {
            materialEditor.ShaderProperty(environmentColorThreshold, Styles.environmentColorThreshold, 2);
            materialEditor.ShaderProperty(environmentColorIntensity, Styles.environmentColorIntensity, 2);
            materialEditor.ShaderProperty(environmentColorX, Styles.environmentColorX, 2);
            materialEditor.ShaderProperty(environmentColorY, Styles.environmentColorY, 2);
            materialEditor.ShaderProperty(environmentColorZ, Styles.environmentColorZ, 2);
        }
    }
Example #4
0
        protected static void SetupMaterialWithRenderingMode(Material material, RenderingMode mode, CustomRenderingMode customMode, int renderQueueOverride)
        {
            // If we aren't switching to Custom, then set default values for all RenderingMode types. Otherwise keep whatever user had before
            if (mode != RenderingMode.Custom)
            {
                material.SetInt(BaseStyles.blendOperationName, (int)BlendOp.Add);
                material.SetInt(BaseStyles.depthTestName, (int)CompareFunction.LessEqual);
                material.SetFloat(BaseStyles.depthOffsetFactorName, 0.0f);
                material.SetFloat(BaseStyles.depthOffsetUnitsName, 0.0f);
                material.SetInt(BaseStyles.colorWriteMaskName, (int)ColorWriteMask.All);
            }

            switch (mode)
            {
            case RenderingMode.Opaque:
            {
                material.SetOverrideTag(BaseStyles.renderTypeName, BaseStyles.renderingModeNames[(int)RenderingMode.Opaque]);
                material.SetInt(BaseStyles.customRenderingModeName, (int)CustomRenderingMode.Opaque);
                material.SetInt(BaseStyles.sourceBlendName, (int)BlendMode.One);
                material.SetInt(BaseStyles.destinationBlendName, (int)BlendMode.Zero);
                material.SetInt(BaseStyles.depthWriteName, (int)DepthWrite.On);
                material.DisableKeyword(BaseStyles.alphaTestOnName);
                material.DisableKeyword(BaseStyles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)RenderQueue.Geometry;
                break;
            }

            case RenderingMode.Cutout:
            {
                material.SetOverrideTag(BaseStyles.renderTypeName, BaseStyles.renderingModeNames[(int)RenderingMode.Cutout]);
                material.SetInt(BaseStyles.customRenderingModeName, (int)CustomRenderingMode.Cutout);
                material.SetInt(BaseStyles.sourceBlendName, (int)BlendMode.One);
                material.SetInt(BaseStyles.destinationBlendName, (int)BlendMode.Zero);
                material.SetInt(BaseStyles.depthWriteName, (int)DepthWrite.On);
                material.EnableKeyword(BaseStyles.alphaTestOnName);
                material.DisableKeyword(BaseStyles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)RenderQueue.AlphaTest;
                break;
            }

            case RenderingMode.Fade:
            {
                material.SetOverrideTag(BaseStyles.renderTypeName, BaseStyles.renderingModeNames[(int)RenderingMode.Fade]);
                material.SetInt(BaseStyles.customRenderingModeName, (int)CustomRenderingMode.Fade);
                material.SetInt(BaseStyles.sourceBlendName, (int)BlendMode.SrcAlpha);
                material.SetInt(BaseStyles.destinationBlendName, (int)BlendMode.OneMinusSrcAlpha);
                material.SetInt(BaseStyles.depthWriteName, (int)DepthWrite.Off);
                material.DisableKeyword(BaseStyles.alphaTestOnName);
                material.EnableKeyword(BaseStyles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)RenderQueue.Transparent;
                break;
            }

            case RenderingMode.Transparent:
            {
                material.SetOverrideTag(BaseStyles.renderTypeName, BaseStyles.renderingModeNames[(int)RenderingMode.Fade]);
                material.SetInt(BaseStyles.customRenderingModeName, (int)CustomRenderingMode.Fade);
                material.SetInt(BaseStyles.sourceBlendName, (int)BlendMode.One);
                material.SetInt(BaseStyles.destinationBlendName, (int)BlendMode.OneMinusSrcAlpha);
                material.SetInt(BaseStyles.depthWriteName, (int)DepthWrite.Off);
                material.DisableKeyword(BaseStyles.alphaTestOnName);
                material.EnableKeyword(BaseStyles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)RenderQueue.Transparent;
                break;
            }

            case RenderingMode.Additive:
            {
                material.SetOverrideTag(BaseStyles.renderTypeName, BaseStyles.renderingModeNames[(int)RenderingMode.Fade]);
                material.SetInt(BaseStyles.customRenderingModeName, (int)CustomRenderingMode.Fade);
                material.SetInt(BaseStyles.sourceBlendName, (int)BlendMode.One);
                material.SetInt(BaseStyles.destinationBlendName, (int)BlendMode.One);
                material.SetInt(BaseStyles.depthWriteName, (int)DepthWrite.Off);
                material.DisableKeyword(BaseStyles.alphaTestOnName);
                material.EnableKeyword(BaseStyles.alphaBlendOnName);
                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : (int)RenderQueue.Transparent;
                break;
            }

            case RenderingMode.Custom:
            {
                material.SetOverrideTag(BaseStyles.renderTypeName, BaseStyles.customRenderingModeNames[(int)customMode]);
                // _SrcBlend, _DstBlend, _BlendOp, _ZTest, _ZWrite, _ColorWriteMask are controlled by UI.

                switch (customMode)
                {
                case CustomRenderingMode.Opaque:
                {
                    material.DisableKeyword(BaseStyles.alphaTestOnName);
                    material.DisableKeyword(BaseStyles.alphaBlendOnName);
                    break;
                }

                case CustomRenderingMode.Cutout:
                {
                    material.EnableKeyword(BaseStyles.alphaTestOnName);
                    material.DisableKeyword(BaseStyles.alphaBlendOnName);
                    break;
                }

                case CustomRenderingMode.Fade:
                {
                    material.DisableKeyword(BaseStyles.alphaTestOnName);
                    material.EnableKeyword(BaseStyles.alphaBlendOnName);
                    break;
                }
                }

                material.renderQueue = (renderQueueOverride >= 0) ? renderQueueOverride : material.renderQueue;
                break;
            }
            }
        }
        protected void FluentOptions(MaterialEditor materialEditor, Material material)
        {
            EditorGUILayout.Space();
            GUILayout.Label(Styles.fluentOptionsTitle, EditorStyles.boldLabel);
            RenderingMode       mode       = (RenderingMode)renderingMode.floatValue;
            CustomRenderingMode customMode = (CustomRenderingMode)customRenderingMode.floatValue;

            materialEditor.ShaderProperty(hoverLight, Styles.hoverLight);

            if (PropertyEnabled(hoverLight))
            {
                GUILayout.Box(string.Format(Styles.propertiesComponentHelp, nameof(HoverLight), Styles.hoverLight.text), EditorStyles.helpBox, new GUILayoutOption[0]);

                materialEditor.ShaderProperty(enableHoverColorOverride, Styles.enableHoverColorOverride, 2);

                if (PropertyEnabled(enableHoverColorOverride))
                {
                    materialEditor.ShaderProperty(hoverColorOverride, Styles.hoverColorOverride, 4);
                }
            }

            materialEditor.ShaderProperty(proximityLight, Styles.proximityLight);

            if (PropertyEnabled(proximityLight))
            {
                materialEditor.ShaderProperty(enableProximityLightColorOverride, Styles.enableProximityLightColorOverride, 2);

                if (PropertyEnabled(enableProximityLightColorOverride))
                {
                    materialEditor.ShaderProperty(proximityLightCenterColorOverride, Styles.proximityLightCenterColorOverride, 4);
                    materialEditor.ShaderProperty(proximityLightMiddleColorOverride, Styles.proximityLightMiddleColorOverride, 4);
                    materialEditor.ShaderProperty(proximityLightOuterColorOverride, Styles.proximityLightOuterColorOverride, 4);
                }

                materialEditor.ShaderProperty(proximityLightSubtractive, Styles.proximityLightSubtractive, 2);
                materialEditor.ShaderProperty(proximityLightTwoSided, Styles.proximityLightTwoSided, 2);
                GUILayout.Box(string.Format(Styles.propertiesComponentHelp, nameof(ProximityLight), Styles.proximityLight.text), EditorStyles.helpBox, new GUILayoutOption[0]);
            }

            if (PropertyEnabled(hoverLight) || PropertyEnabled(proximityLight))
            {
                materialEditor.ShaderProperty(fluentLightIntensity, Styles.fluentLightIntensity);
            }

            materialEditor.ShaderProperty(innerGlow, Styles.innerGlow);

            if (PropertyEnabled(innerGlow))
            {
                materialEditor.ShaderProperty(innerGlowColor, Styles.innerGlowColor, 2);
                materialEditor.ShaderProperty(innerGlowPower, Styles.innerGlowPower, 2);
            }

            materialEditor.ShaderProperty(environmentColoring, Styles.environmentColoring);

            if (PropertyEnabled(environmentColoring))
            {
                materialEditor.ShaderProperty(environmentColorThreshold, Styles.environmentColorThreshold, 2);
                materialEditor.ShaderProperty(environmentColorIntensity, Styles.environmentColorIntensity, 2);
                materialEditor.ShaderProperty(environmentColorX, Styles.environmentColorX, 2);
                materialEditor.ShaderProperty(environmentColorY, Styles.environmentColorY, 2);
                materialEditor.ShaderProperty(environmentColorZ, Styles.environmentColorZ, 2);
            }
        }