1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
-
- 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;
- 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(ScriptableRenderer renderer)
- {
- this.renderer = renderer;
- }
- 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);
-
- cmd.Blit(renderer.cameraColorTargetHandle, RenderTexture);
-
- context.ExecuteCommandBuffer(cmd);
- CommandBufferPool.Release(cmd);
- OnExecuteCallBack?.Invoke(context, renderingData, RenderTexture, renderer.cameraColorTargetHandle, 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;
- }
- }
- }
|