using UnityEditor.Rendering.Universal.ShaderGraph; using UnityEngine; using UnityEngine.Rendering; using static Unity.Rendering.Universal.ShaderUtils; namespace UnityEditor { // Used for ShaderGraph Lit shaders class SixWayGUI : ShaderGraphLitGUI { private MaterialProperty useColorAbsorption; /// /// Container for the text and tooltips used to display the shader. /// protected class SixWayStyles { // Categories /// /// The text and tooltip for the surface options GUI. /// public static readonly GUIContent UseColorAbsorptionText = EditorGUIUtility.TrTextContent("Use Color Absorption", "When enabled, the lightmaps are used to simulate color absorption whose strength can be tuned with the Absorption Strength parameter."); } // collect properties from the material properties public override void FindProperties(MaterialProperty[] properties) { base.FindProperties(properties); useColorAbsorption = FindProperty(UniversalSixWaySubTarget.SixWayProperties.UseColorAbsorption, properties, false); } public override void DrawSurfaceOptions(Material material) { base.DrawSurfaceOptions(material); if(useColorAbsorption != null) materialEditor.ShaderProperty(useColorAbsorption, SixWayStyles.UseColorAbsorptionText); } public static void UpdateSixWayKeywords(Material material) { bool useColorAbsorptionValue = false; if (material.HasProperty(UniversalSixWaySubTarget.SixWayProperties.UseColorAbsorption)) useColorAbsorptionValue = material.GetFloat(UniversalSixWaySubTarget.SixWayProperties.UseColorAbsorption) > 0.0f; CoreUtils.SetKeyword(material, "_SIX_WAY_COLOR_ABSORPTION", useColorAbsorptionValue); } public override void ValidateMaterial(Material material) { base.ValidateMaterial(material); UpdateSixWayKeywords(material); } } } // namespace UnityEditor