Blit.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Collections.Generic;
  2. using UnityEngine.Serialization;
  3. namespace UnityEngine.Rendering.LWRP
  4. {
  5. public class Blit : UnityEngine.Rendering.Universal.ScriptableRendererFeature
  6. {
  7. [System.Serializable]
  8. public class BlitSettings
  9. {
  10. public UnityEngine.Rendering.Universal.RenderPassEvent Event = UnityEngine.Rendering.Universal.RenderPassEvent.AfterRenderingOpaques;
  11. public Material blitMaterial = null;
  12. public int blitMaterialPassIndex = -1;
  13. public Target destination = Target.Color;
  14. public string textureId = "_BlitPassTexture";
  15. }
  16. public enum Target
  17. {
  18. Color,
  19. Texture
  20. }
  21. public BlitSettings settings = new BlitSettings();
  22. UnityEngine.Rendering.Universal.RenderTargetHandle m_RenderTextureHandle;
  23. BlitPass blitPass;
  24. public override void Create()
  25. {
  26. var passIndex = settings.blitMaterial != null ? settings.blitMaterial.passCount - 1 : 1;
  27. settings.blitMaterialPassIndex = Mathf.Clamp(settings.blitMaterialPassIndex, -1, passIndex);
  28. blitPass = new BlitPass(settings.Event, settings.blitMaterial, settings.blitMaterialPassIndex, name);
  29. m_RenderTextureHandle.Init(settings.textureId);
  30. }
  31. public override void AddRenderPasses(UnityEngine.Rendering.Universal.ScriptableRenderer renderer, ref UnityEngine.Rendering.Universal.RenderingData renderingData)
  32. {
  33. var src = renderer.cameraColorTarget;
  34. var dest = (settings.destination == Target.Color) ? UnityEngine.Rendering.Universal.RenderTargetHandle.CameraTarget : m_RenderTextureHandle;
  35. if (settings.blitMaterial == null)
  36. {
  37. Debug.LogWarningFormat("Missing Blit Material. {0} blit pass will not execute. Check for missing reference in the assigned renderer.", GetType().Name);
  38. return;
  39. }
  40. blitPass.Setup(src, dest);
  41. renderer.EnqueuePass(blitPass);
  42. }
  43. }
  44. }