123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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;
-
- /// <summary>
- /// Container for the text and tooltips used to display the shader.
- /// </summary>
- protected class SixWayStyles
- {
- // Categories
- /// <summary>
- /// The text and tooltip for the surface options GUI.
- /// </summary>
- 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
|