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