123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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;
- }
- }
- }
|