UnityEditor.StandardShaderGUI.SetMaterialKeywords C# (CSharp) Method

SetMaterialKeywords() private static method

private static SetMaterialKeywords ( Material material, WorkflowMode workflowMode ) : void
material UnityEngine.Material
workflowMode WorkflowMode
return void
        private static void SetMaterialKeywords(Material material, WorkflowMode workflowMode)
        {
            SetKeyword(material, "_NORMALMAP", (material.GetTexture("_BumpMap") != null) || ((bool) material.GetTexture("_DetailNormalMap")));
            if (workflowMode == WorkflowMode.Specular)
            {
                SetKeyword(material, "_SPECGLOSSMAP", (bool) material.GetTexture("_SpecGlossMap"));
            }
            else if (workflowMode == WorkflowMode.Metallic)
            {
                SetKeyword(material, "_METALLICGLOSSMAP", (bool) material.GetTexture("_MetallicGlossMap"));
            }
            SetKeyword(material, "_PARALLAXMAP", (bool) material.GetTexture("_ParallaxMap"));
            SetKeyword(material, "_DETAIL_MULX2", (material.GetTexture("_DetailAlbedoMap") != null) || ((bool) material.GetTexture("_DetailNormalMap")));
            bool state = ShouldEmissionBeEnabled(material, material.GetColor("_EmissionColor"));
            SetKeyword(material, "_EMISSION", state);
            if (material.HasProperty("_SmoothnessTextureChannel"))
            {
                SetKeyword(material, "_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A", GetSmoothnessMapChannel(material) == SmoothnessMapChannel.AlbedoAlpha);
            }
            MaterialGlobalIlluminationFlags globalIlluminationFlags = material.globalIlluminationFlags;
            if ((globalIlluminationFlags & (MaterialGlobalIlluminationFlags.BakedEmissive | MaterialGlobalIlluminationFlags.RealtimeEmissive)) != MaterialGlobalIlluminationFlags.None)
            {
                globalIlluminationFlags &= ~MaterialGlobalIlluminationFlags.EmissiveIsBlack;
                if (!state)
                {
                    globalIlluminationFlags |= MaterialGlobalIlluminationFlags.EmissiveIsBlack;
                }
                material.globalIlluminationFlags = globalIlluminationFlags;
            }
        }

Usage Example

        private static void MaterialChanged(Material material, StandardShaderGUI.WorkflowMode workflowMode)
        {
            if (material.GetFloat("_EmissionScaleUI") < 0f)
            {
                material.SetFloat("_EmissionScaleUI", 0f);
            }
            Color color = StandardShaderGUI.EvalFinalEmissionColor(material);

            material.SetColor("_EmissionColor", color);
            StandardShaderGUI.SetupMaterialWithBlendMode(material, (StandardShaderGUI.BlendMode)material.GetFloat("_Mode"));
            StandardShaderGUI.SetMaterialKeywords(material, workflowMode);
        }
All Usage Examples Of UnityEditor.StandardShaderGUI::SetMaterialKeywords