暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UniversalCanvasSubTarget.cs 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using UnityEditor.ShaderGraph;
  2. using UnityEngine;
  3. using static UnityEditor.Rendering.BuiltIn.ShaderUtils;
  4. using UnityEditor.Rendering.BuiltIn;
  5. using System;
  6. using UnityEngine.UIElements;
  7. using UnityEditor.Rendering.Canvas.ShaderGraph;
  8. namespace UnityEditor.Rendering.Universal.ShaderGraph
  9. {
  10. class UniversalCanvasSubTarget: CanvasSubTarget<UniversalTarget>, IRequiresData<CanvasData>, IHasMetadata
  11. {
  12. static readonly GUID kSourceCodeGuid = new GUID("f7075c3a804b49bf86535f6f86615132"); // UniversalCanvasSubTarget.cs
  13. static readonly string kCanvasPass = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/CanvasPass.hlsl";
  14. public override void Setup(ref TargetSetupContext context)
  15. {
  16. base.Setup(ref context);
  17. context.AddAssetDependency(kSourceCodeGuid, AssetCollection.Flags.SourceDependency);
  18. }
  19. public override bool IsActive() => true;
  20. // We don't need the save context / update materials for now
  21. public override object saveContext => null;
  22. protected override string pipelineTag => UniversalTarget.kPipelineTag;
  23. protected override IncludeCollection pregraphIncludes => new IncludeCollection
  24. {
  25. { CoreIncludes.CorePregraph },
  26. { kInstancing, IncludeLocation.Pregraph },
  27. { CoreIncludes.ShaderGraphPregraph },
  28. };
  29. protected override IncludeCollection postgraphIncludes => new IncludeCollection
  30. {
  31. {kCanvasPass, IncludeLocation.Postgraph},
  32. };
  33. public UniversalCanvasSubTarget()
  34. {
  35. displayName = "Canvas";
  36. }
  37. protected override DefineCollection GetAdditionalDefines()
  38. {
  39. var result = new DefineCollection();
  40. if (canvasData.alphaClip)
  41. result.Add(CoreKeywordDescriptors.AlphaTestOn, 1);
  42. result.Add(base.GetAdditionalDefines());
  43. return result;
  44. }
  45. public override void GetActiveBlocks(ref TargetActiveBlockContext context)
  46. {
  47. base.GetActiveBlocks(ref context);
  48. context.AddBlock(BlockFields.SurfaceDescription.AlphaClipThreshold, canvasData.alphaClip);
  49. }
  50. public override void GetFields(ref TargetFieldContext context)
  51. {
  52. base.GetFields(ref context);
  53. if (canvasData.alphaClip)
  54. context.AddField(UnityEditor.ShaderGraph.Fields.AlphaTest);
  55. }
  56. public override void CollectShaderProperties(PropertyCollector collector, GenerationMode generationMode)
  57. {
  58. base.CollectShaderProperties(collector, generationMode);
  59. if (canvasData.alphaClip)
  60. collector.AddShaderProperty(CanvasProperties.AlphaTest);
  61. }
  62. }
  63. }