您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
159 行
4.6 KiB
159 行
4.6 KiB
using System;
|
|
using UnityEngine;
|
|
|
|
namespace UnityEditor.ShaderGraph
|
|
{
|
|
[Serializable]
|
|
public class SurfaceMaterialOptions
|
|
{
|
|
public enum BlendMode
|
|
{
|
|
One,
|
|
Zero,
|
|
SrcColor,
|
|
SrcAlpha,
|
|
DstColor,
|
|
DstAlpha,
|
|
OneMinusSrcColor,
|
|
OneMinusSrcAlpha,
|
|
OneMinusDstColor,
|
|
OneMinusDstAlpha,
|
|
}
|
|
|
|
public enum CullMode
|
|
{
|
|
Back,
|
|
Front,
|
|
Off
|
|
}
|
|
|
|
public enum ZTest
|
|
{
|
|
Less,
|
|
Greater,
|
|
LEqual,
|
|
GEqual,
|
|
Equal,
|
|
NotEqual,
|
|
Always
|
|
}
|
|
|
|
public enum ZWrite
|
|
{
|
|
On,
|
|
Off
|
|
}
|
|
|
|
public enum RenderQueue
|
|
{
|
|
Background,
|
|
Geometry,
|
|
Transparent,
|
|
Overlay,
|
|
}
|
|
|
|
public enum RenderType
|
|
{
|
|
Opaque,
|
|
Transparent,
|
|
TransparentCutout,
|
|
Background,
|
|
Overlay
|
|
}
|
|
|
|
[SerializeField]
|
|
private BlendMode m_SrcBlend = BlendMode.One;
|
|
|
|
[SerializeField]
|
|
private BlendMode m_DstBlend = BlendMode.Zero;
|
|
|
|
[SerializeField]
|
|
private CullMode m_CullMode = CullMode.Back;
|
|
|
|
[SerializeField]
|
|
private ZTest m_ZTest = ZTest.LEqual;
|
|
|
|
[SerializeField]
|
|
private ZWrite m_ZWrite = ZWrite.On;
|
|
|
|
[SerializeField]
|
|
private RenderQueue m_RenderQueue = RenderQueue.Geometry;
|
|
|
|
[SerializeField]
|
|
private RenderType m_RenderType = RenderType.Opaque;
|
|
|
|
[SerializeField]
|
|
private int m_LOD = 200;
|
|
|
|
public void Init()
|
|
{
|
|
srcBlend = BlendMode.One;
|
|
dstBlend = BlendMode.Zero;
|
|
cullMode = CullMode.Back;
|
|
zTest = ZTest.LEqual;
|
|
zWrite = ZWrite.On;
|
|
renderQueue = RenderQueue.Geometry;
|
|
renderType = RenderType.Opaque;
|
|
lod = 200;
|
|
}
|
|
|
|
public void GetTags(ShaderGenerator visitor)
|
|
{
|
|
visitor.AddShaderChunk("Tags", false);
|
|
visitor.AddShaderChunk("{", false);
|
|
visitor.Indent();
|
|
visitor.AddShaderChunk("\"RenderType\"=\"" + renderType + "\"", false);
|
|
visitor.AddShaderChunk("\"Queue\"=\"" + renderQueue + "\"", false);
|
|
visitor.Deindent();
|
|
visitor.AddShaderChunk("}", false);
|
|
}
|
|
|
|
public void GetBlend(ShaderGenerator visitor)
|
|
{
|
|
visitor.AddShaderChunk("Blend " + srcBlend + " " + dstBlend, false);
|
|
}
|
|
|
|
public void GetCull(ShaderGenerator visitor)
|
|
{
|
|
visitor.AddShaderChunk("Cull " + cullMode, false);
|
|
}
|
|
|
|
public void GetDepthWrite(ShaderGenerator visitor)
|
|
{
|
|
visitor.AddShaderChunk("ZWrite " + zWrite, false);
|
|
}
|
|
|
|
public void GetDepthTest(ShaderGenerator visitor)
|
|
{
|
|
visitor.AddShaderChunk("ZTest " + zTest, false);
|
|
}
|
|
|
|
/*private Vector2 m_ScrollPos;
|
|
public void DoGUI()
|
|
{
|
|
GUILayout.BeginVertical();
|
|
m_Expanded = MaterialGraphStyles.Header("Options", m_Expanded);
|
|
|
|
if (m_Expanded)
|
|
{
|
|
srcBlend = (BlendMode) EditorGUILayout.EnumPopup("Src Blend", srcBlend);
|
|
dstBlend = (BlendMode) EditorGUILayout.EnumPopup("Dst Blend", dstBlend);
|
|
cullMode = (CullMode) EditorGUILayout.EnumPopup("Cull Mode", cullMode);
|
|
zTest = (ZTest) EditorGUILayout.EnumPopup("Z Test", zTest);
|
|
zWrite = (ZWrite) EditorGUILayout.EnumPopup("Z Write", zWrite);
|
|
renderQueue = (RenderQueue) EditorGUILayout.EnumPopup("Render Queue", renderQueue);
|
|
renderType = (RenderType) EditorGUILayout.EnumPopup("Render Type", renderType);
|
|
}
|
|
GUILayout.EndVertical();
|
|
}*/
|
|
|
|
public BlendMode srcBlend { get { return m_SrcBlend; } set { m_SrcBlend = value; } }
|
|
public BlendMode dstBlend { get { return m_DstBlend; } set { m_DstBlend = value; } }
|
|
public CullMode cullMode { get { return m_CullMode; } set { m_CullMode = value; } }
|
|
public ZTest zTest { get { return m_ZTest; } set { m_ZTest = value; } }
|
|
public ZWrite zWrite { get { return m_ZWrite; } set { m_ZWrite = value; } }
|
|
public RenderQueue renderQueue { get { return m_RenderQueue; } set { m_RenderQueue = value; } }
|
|
public RenderType renderType { get { return m_RenderType; } set { m_RenderType = value; } }
|
|
public int lod { get { return m_LOD; } set { m_LOD = value; } }
|
|
}
|
|
}
|