55 lines
2.2 KiB
C#
55 lines
2.2 KiB
C#
|
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
|