AmbientNode.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using UnityEditor.Graphing;
  2. using UnityEditor.ShaderGraph.Internal;
  3. using UnityEngine;
  4. namespace UnityEditor.ShaderGraph
  5. {
  6. [Title("Input", "Lighting", "Ambient")]
  7. class AmbientNode : AbstractMaterialNode
  8. {
  9. const string kOutputSlotName = "Color/Sky";
  10. const string kOutputSlot1Name = "Equator";
  11. const string kOutputSlot2Name = "Ground";
  12. public const int OutputSlotId = 0;
  13. public const int OutputSlot1Id = 1;
  14. public const int OutputSlot2Id = 2;
  15. public AmbientNode()
  16. {
  17. name = "Ambient";
  18. UpdateNodeAfterDeserialization();
  19. }
  20. public sealed override void UpdateNodeAfterDeserialization()
  21. {
  22. AddSlot(new ColorRGBMaterialSlot(OutputSlotId, kOutputSlotName, kOutputSlotName, SlotType.Output, Vector4.zero, ColorMode.Default));
  23. AddSlot(new ColorRGBMaterialSlot(OutputSlot1Id, kOutputSlot1Name, kOutputSlot1Name, SlotType.Output, Vector4.zero, ColorMode.Default));
  24. AddSlot(new ColorRGBMaterialSlot(OutputSlot2Id, kOutputSlot2Name, kOutputSlot2Name, SlotType.Output, Vector4.zero, ColorMode.Default));
  25. RemoveSlotsNameNotMatching(new[] { OutputSlotId, OutputSlot1Id, OutputSlot2Id });
  26. }
  27. public override string GetVariableNameForSlot(int slotId)
  28. {
  29. switch (slotId)
  30. {
  31. case OutputSlot1Id:
  32. return "SHADERGRAPH_AMBIENT_EQUATOR";
  33. case OutputSlot2Id:
  34. return "SHADERGRAPH_AMBIENT_GROUND";
  35. default:
  36. return "SHADERGRAPH_AMBIENT_SKY";
  37. }
  38. }
  39. }
  40. }