diff options
| author | chai <215380520@qq.com> | 2023-11-02 11:51:31 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2023-11-02 11:51:31 +0800 |
| commit | 7f493f682503f5186308de7b8f74b5b49233cfe4 (patch) | |
| tree | 8a91e2056bc79788ee4735dce88b8d516ba12beb /GameCode/CustomPostProcess.cs | |
+init
Diffstat (limited to 'GameCode/CustomPostProcess.cs')
| -rw-r--r-- | GameCode/CustomPostProcess.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/GameCode/CustomPostProcess.cs b/GameCode/CustomPostProcess.cs new file mode 100644 index 0000000..6b88bfc --- /dev/null +++ b/GameCode/CustomPostProcess.cs @@ -0,0 +1,62 @@ +using System; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +public class CustomPostProcess : ScriptableRendererFeature +{ + private class CustomRenderPass : ScriptableRenderPass + { + public RenderTargetIdentifier source; + + private Material mat; + + private RenderTargetHandle tempRenderTargetHandle; + + public CustomRenderPass(Material _mat) + { + mat = _mat; + tempRenderTargetHandle.Init("_TemporaryColorTexture"); + } + + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + CommandBuffer commandBuffer = CommandBufferPool.Get(); + commandBuffer.GetTemporaryRT(tempRenderTargetHandle.id, renderingData.cameraData.cameraTargetDescriptor); + Blit(commandBuffer, source, tempRenderTargetHandle.Identifier(), mat); + Blit(commandBuffer, tempRenderTargetHandle.Identifier(), source); + context.ExecuteCommandBuffer(commandBuffer); + CommandBufferPool.Release(commandBuffer); + } + + public override void OnCameraCleanup(CommandBuffer cmd) + { + } + } + + [Serializable] + public class Settings + { + public Material material; + } + + private CustomRenderPass m_ScriptablePass; + + public Settings settings; + + public override void Create() + { + m_ScriptablePass = new CustomRenderPass(settings.material); + m_ScriptablePass.renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing; + } + + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + m_ScriptablePass.source = renderer.cameraColorTarget; + renderer.EnqueuePass(m_ScriptablePass); + } +} |
