浏览代码

Override GradientShaderProperty declaration for preview rendering

/main
Matt Dean 6 年前
当前提交
2a3637d0
共有 2 个文件被更改,包括 49 次插入9 次删除
  1. 55
      com.unity.shadergraph/Editor/Data/Graphs/GradientShaderProperty.cs
  2. 3
      com.unity.shadergraph/Editor/Data/Nodes/Input/Gradient/GradientAssetNode.cs

55
com.unity.shadergraph/Editor/Data/Graphs/GradientShaderProperty.cs


alphas[i] = GetAlphaKey(i, gradient.alphaKeys[i].alpha, gradient.alphaKeys[i].time);
s.AppendLine("Gradient g;");
s.AppendLine("g.type = 0;");
s.AppendLine("g.type = {0};",
(int)gradient.mode);
s.AppendLine("g.colorsLength = {0};",
gradient.colorKeys.Length);
s.AppendLine("g.alphasLength = {0};",

public static bool CheckEquivalency(Gradient A, Gradient B)
{
var currentMode = A.mode;
var newMode = B.mode;
if (currentColorKeys.Length != newColorKeys.Length || currentAlphaKeys.Length != newAlphaKeys.Length)
if (currentMode != newMode || currentColorKeys.Length != newColorKeys.Length || currentAlphaKeys.Length != newAlphaKeys.Length)
{
return false;
}

value = new Gradient();
}
private bool m_OverrideMembers = false;
private string m_OverrideSlotName;
public override PropertyType propertyType
{
get { return PropertyType.Gradient; }

{
return string.Empty;
}
public void OverrideMembers(string slotName)
{
m_OverrideMembers = true;
m_OverrideSlotName = slotName;
}
ShaderStringBuilder s = new ShaderStringBuilder();
s.AppendLine("Gradient Unity{0} ()", referenceName);
using (s.BlockScope())
if(m_OverrideMembers)
{
ShaderStringBuilder s = new ShaderStringBuilder();
s.AppendLine("Gradient Unity{0} ()",
referenceName);
using (s.BlockScope())
{
s.AppendLine("Gradient g;");
s.AppendLine("g.type = {0}_Type;", m_OverrideSlotName);
s.AppendLine("g.colorsLength = {0}_ColorsLength;", m_OverrideSlotName);
s.AppendLine("g.alphasLength = {0}_AlphasLength;", m_OverrideSlotName);
for(int i = 0; i < 8; i++)
{
s.AppendLine("g.colors[{0}] = {1}_ColorKey{0};", i, m_OverrideSlotName);
}
for(int i = 0; i < 8; i++)
{
s.AppendLine("g.alphas[{0}] = {1}_AlphaKey{0};", i, m_OverrideSlotName);
}
s.AppendLine("return g;", true);
}
return s.ToString();
}
else
GradientUtils.GetGradientDeclaration(value, ref s);
s.AppendLine("return g;", true);
ShaderStringBuilder s = new ShaderStringBuilder();
s.AppendLine("Gradient Unity{0} ()", referenceName);
using (s.BlockScope())
{
GradientUtils.GetGradientDeclaration(value, ref s);
s.AppendLine("return g;", true);
}
return s.ToString();
return s.ToString();
}
public override PreviewProperty GetPreviewMaterialProperty()

3
com.unity.shadergraph/Editor/Data/Nodes/Input/Gradient/GradientAssetNode.cs


var newAlphaKeys = value.alphaKeys;
m_Gradient.SetKeys(newColorKeys, newAlphaKeys);
m_Gradient.mode = value.mode;
Dirty(ModificationScope.Node);
}
}

properties.Add(new PreviewProperty(PropertyType.Vector1)
{
name = string.Format("_{0}_Type", GetVariableNameForNode()),
floatValue = 0
floatValue = (int)m_Gradient.mode
});
properties.Add(new PreviewProperty(PropertyType.Vector1)

正在加载...
取消
保存