123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
-
- using UnityEngine;
- using UnityEngine.Experimental.Rendering;
- using UnityEngine.Rendering;
- using UnityEngine.Rendering.Universal;
- using UnityEngine.Serialization;
- namespace Fort23.Mono.Test
- {
- [System.Serializable]
- public class InterceptGamePass : ScriptableRenderPass
- {
- private static bool isIntercept;
- // private RenderTextureDescriptor RenderTextureDescriptor;
- private static RenderTexture RenderTexture;
- private const string m_ProfilerTag = "Intercept";
-
- public RenderTargetHandle m_Destination;
- private static System.Action _finish;
- private static int count;
- private RenderTextureDescriptor cameraTextureDescriptor;
- private static System.Action<ScriptableRenderContext, RenderingData, RenderTexture, RenderTargetIdentifier, RenderTextureDescriptor> OnExecuteCallBack;
- // private ScriptableRenderer renderer;
- private RTHandle _rtHandle;
- public static void SetRenderTexture(RenderTexture renderTexture, System.Action finish,
- System.Action<ScriptableRenderContext, RenderingData, RenderTexture, RenderTargetIdentifier, RenderTextureDescriptor> executeCallBack = null)
- {
- // Debug.Log("开始准备背景界面");
- // finish?.Invoke();
- // return;
- RenderTexture = renderTexture;
- _finish+= finish;
- isIntercept = true;
- OnExecuteCallBack = executeCallBack;
- count = 1;
- }
- public InterceptGamePass(RenderPassEvent evt)
- {
- renderPassEvent = evt;
- }
- public void Setup(RTHandle rtHandle)
- {
- this._rtHandle = rtHandle;
- }
- public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
- {
- if (isIntercept)
- {
- // Debug.Log("执行背景背景界面");
- count--;
- // 执行拷贝命令
- CommandBuffer cmd = CommandBufferPool.Get(m_ProfilerTag);
- // var descriptor = RenderTextureDescriptor;
- // descriptor.depthBufferBits = 0;
- //
- // RenderTargetIdentifier renderTargetIdentifier = new RenderTargetIdentifier(RenderTexture);
- // m_Destination.Init(renderTargetIdentifier);
-
- Blit(cmd,_rtHandle, RenderTexture);
-
- context.ExecuteCommandBuffer(cmd);
- CommandBufferPool.Release(cmd);
- OnExecuteCallBack?.Invoke(context, renderingData, RenderTexture,_rtHandle, cameraTextureDescriptor);
- }
- }
- public override void OnFinishCameraStackRendering(CommandBuffer cmd)
- {
- // if (m_Destination != RenderTargetHandle.CameraTarget)
- // {
- // // m_Destination = RenderTargetHandle.CameraTarget;
- // }
- if (count <= 0&&isIntercept)
- {
- // Debug.Log("完成背景界面");
- isIntercept = false;
- _finish?.Invoke();
- _finish = null;
- }
- }
- public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor)
- {
- this.cameraTextureDescriptor = cameraTextureDescriptor;
- }
- }
- }
|