ScreenNode.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using UnityEditor.Graphing;
  2. using UnityEngine;
  3. namespace UnityEditor.ShaderGraph
  4. {
  5. [Title("Input", "Scene", "Screen")]
  6. sealed class ScreenNode : AbstractMaterialNode
  7. {
  8. const string kOutputSlotName = "Width";
  9. const string kOutputSlot1Name = "Height";
  10. public const int OutputSlotId = 0;
  11. public const int OutputSlot1Id = 1;
  12. public ScreenNode()
  13. {
  14. name = "Screen";
  15. UpdateNodeAfterDeserialization();
  16. }
  17. public override void UpdateNodeAfterDeserialization()
  18. {
  19. AddSlot(new Vector1MaterialSlot(OutputSlotId, kOutputSlotName, kOutputSlotName, SlotType.Output, 0));
  20. AddSlot(new Vector1MaterialSlot(OutputSlot1Id, kOutputSlot1Name, kOutputSlot1Name, SlotType.Output, 0));
  21. RemoveSlotsNameNotMatching(new[] { OutputSlotId, OutputSlot1Id });
  22. }
  23. public override string GetVariableNameForSlot(int slotId)
  24. {
  25. switch (slotId)
  26. {
  27. case OutputSlot1Id:
  28. return "_ScreenParams.y";
  29. default:
  30. return "_ScreenParams.x";
  31. }
  32. }
  33. }
  34. }