MyBlitFeature.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using UnityEngine;
  2. using UnityEngine.Rendering.Universal;
  3. public class MyBlitFeature : ScriptableRendererFeature
  4. {
  5. [System.Serializable]
  6. public class MyFeatureSettings
  7. {
  8. // we're free to put whatever we want here, public fields will be exposed in the inspector
  9. public bool IsEnabled = true;
  10. public RenderPassEvent WhenToInsert = RenderPassEvent.AfterRendering;
  11. public Material MaterialToBlit;
  12. }
  13. // MUST be named "settings" (lowercase) to be shown in the Render Features inspector
  14. public MyFeatureSettings settings = new MyFeatureSettings();
  15. RenderTargetHandle renderTextureHandle;
  16. MyBlitRenderPass myRenderPass;
  17. public override void Create()
  18. {
  19. myRenderPass = new MyBlitRenderPass(
  20. "My custom pass",
  21. settings.WhenToInsert,
  22. settings.MaterialToBlit
  23. );
  24. }
  25. // called every frame once per camera
  26. public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
  27. {
  28. if (!settings.IsEnabled)
  29. {
  30. // we can do nothing this frame if we want
  31. return;
  32. }
  33. // Gather up and pass any extra information our pass will need.
  34. // In this case we're getting the camera's color buffer target
  35. var cameraColorTargetIdent = renderer.cameraColorTarget;
  36. myRenderPass.Setup(cameraColorTargetIdent);
  37. // Ask the renderer to add our pass.
  38. // Could queue up multiple passes and/or pick passes to use
  39. renderer.EnqueuePass(myRenderPass);
  40. }
  41. }