mathe/Library/PackageCache/com.unity.shadergraph@14.0.8/Editor/Data/Util/RGBANodeOutput.cs
2024-09-20 20:30:10 +02:00

73 lines
2.5 KiB
C#

using System.Linq;
using UnityEngine;
using UnityEditor.Graphing;
using UnityEditor.ShaderGraph.Drawing.Controls;
using UnityEditor.ShaderGraph.Internal;
namespace UnityEditor.ShaderGraph
{
internal struct RGBANodeOutput
{
const string kRGBAName = "RGBA";
const string kRName = "R";
const string kGName = "G";
const string kBName = "B";
const string kAName = "A";
public int rgbaOutput;
public int rOutput;
public int gOutput;
public int bOutput;
public int aOutput;
public MaterialSlot rgba;
public MaterialSlot r;
public MaterialSlot g;
public MaterialSlot b;
public MaterialSlot a;
public ShaderStageCapability capabilities;
public static RGBANodeOutput NewDefault()
{
return new RGBANodeOutput()
{
rgba = null,
r = null,
g = null,
b = null,
a = null,
capabilities = ShaderStageCapability.None
};
}
public void CreateNodes(AbstractMaterialNode node, ShaderStageCapability newCapabilities, int rgbaSlot, int rSlot, int gSlot, int bSlot, int aSlot)
{
capabilities = newCapabilities;
rgbaOutput = rgbaSlot;
rOutput = rSlot;
gOutput = gSlot;
bOutput = bSlot;
aOutput = aSlot;
rgba = node.AddSlot(new Vector4MaterialSlot(rgbaOutput, kRGBAName, kRGBAName, SlotType.Output, Vector4.zero, capabilities));
r = node.AddSlot(new Vector1MaterialSlot(rOutput, kRName, kRName, SlotType.Output, 0.0f, capabilities));
g = node.AddSlot(new Vector1MaterialSlot(gOutput, kGName, kGName, SlotType.Output, 0.0f, capabilities));
b = node.AddSlot(new Vector1MaterialSlot(bOutput, kBName, kBName, SlotType.Output, 0.0f, capabilities));
a = node.AddSlot(new Vector1MaterialSlot(aOutput, kAName, kAName, SlotType.Output, 0.0f, capabilities));
}
public void SetCapabilities(ShaderStageCapability newCapabilities)
{
if (newCapabilities == capabilities)
return;
capabilities = newCapabilities;
rgba.stageCapability = capabilities;
r.stageCapability = capabilities;
g.stageCapability = capabilities;
b.stageCapability = capabilities;
a.stageCapability = capabilities;
}
}
}