暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

ScriptableRenderPass2D.cs 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace UnityEngine.Rendering.Universal
  5. {
  6. internal enum RenderPassEvent2D
  7. {
  8. None = -1,
  9. BeforeRendering = 0,
  10. BeforeRenderingLayer = 100,
  11. BeforeRenderingShadows = 200,
  12. BeforeRenderingNormals = 300,
  13. BeforeRenderingLights = 400,
  14. BeforeRenderingSprites = 500,
  15. AfterRenderingLayer = 600,
  16. BeforeRenderingPostProcessing = 700,
  17. AfterRenderingPostProcessing = 800,
  18. AfterRendering = 900,
  19. }
  20. #if USING_SCRIPTABLE_RENDERER_PASS_2D
  21. internal abstract class ScriptableRenderPass2D : ScriptableRenderPass
  22. {
  23. private RenderPassEvent2D m_RenderPassEvent2D = RenderPassEvent2D.None;
  24. private int m_RenderPassLayer2D = -1;
  25. internal RenderPassEvent2D renderPassEvent2D => m_RenderPassEvent2D;
  26. internal int renderPassLayer2D => m_RenderPassLayer2D;
  27. public ScriptableRenderPass2D(RenderPassEvent2D rpEvent, int rpLayer)
  28. {
  29. m_RenderPassEvent2D = rpEvent;
  30. m_RenderPassLayer2D = rpLayer;
  31. }
  32. }
  33. #endif
  34. static internal class ScriptableRenderPass2DExtension
  35. {
  36. static internal void GetInjectionPoint2D(this ScriptableRenderPass renderPass, out RenderPassEvent2D rpEvent, out int rpLayer)
  37. {
  38. #if USING_SCRIPTABLE_RENDERER_PASS_2D
  39. ScriptableRenderPass2D renderPass2D = renderPass as ScriptableRenderPass2D;
  40. if (renderPass2D == null || renderPass2D.renderPassEvent2D == RenderPassEvent2D.None)
  41. #endif
  42. {
  43. rpLayer = int.MinValue;
  44. if (renderPass.renderPassEvent <= RenderPassEvent.BeforeRenderingTransparents)
  45. rpEvent = RenderPassEvent2D.BeforeRendering;
  46. else if (renderPass.renderPassEvent <= RenderPassEvent.AfterRenderingTransparents)
  47. rpEvent = RenderPassEvent2D.BeforeRenderingPostProcessing;
  48. else if (renderPass.renderPassEvent <= RenderPassEvent.AfterRenderingPostProcessing)
  49. rpEvent = RenderPassEvent2D.AfterRenderingPostProcessing;
  50. else
  51. rpEvent = RenderPassEvent2D.AfterRendering;
  52. }
  53. #if USING_SCRIPTABLE_RENDERER_PASS_2D
  54. else
  55. {
  56. rpEvent = renderPass2D.renderPassEvent2D;
  57. rpLayer = renderPass2D.renderPassLayer2D;
  58. }
  59. # endif
  60. }
  61. }
  62. }