summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Rendering/CustomRenderingPipeline.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Rendering/CustomRenderingPipeline.cs')
-rw-r--r--Assets/Scripts/Rendering/CustomRenderingPipeline.cs89
1 files changed, 0 insertions, 89 deletions
diff --git a/Assets/Scripts/Rendering/CustomRenderingPipeline.cs b/Assets/Scripts/Rendering/CustomRenderingPipeline.cs
deleted file mode 100644
index befeed87..00000000
--- a/Assets/Scripts/Rendering/CustomRenderingPipeline.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.Rendering;
-
-// 相机的自定义管线
-// 混合延迟渲染和前向渲染
-[RequireComponent(typeof(MainCamera))]
-public class CustomRenderingPipeline : MonoBehaviour
-{
- [Tooltip("开启自定义延迟渲染")]
- public bool enableDeferredRender;
-
- public delegate void RenderEventHandler();
- // UnitPreprocessing, UnitLensEffect, etc
- public event RenderEventHandler onPreCull;
- public event RenderEventHandler onPreRender;
- public event RenderEventHandler onPostRender;
-
- Camera m_Camera;
-
- // command buffers
- CommandBuffer m_CommandBufferAfterDepth;
-
- RenderTargetIdentifier[] m_GBuffer = new RenderTargetIdentifier[2];
- RenderTargetIdentifier m_DepthBuffer;
- RenderTexture m_GBufferTextureNormal;
- RenderTexture m_GBufferTexturePosition;
-
- void OnEnable()
- {
- m_Camera = GetComponent<Camera>();
-
- // command buffers
- m_CommandBufferAfterDepth = new CommandBuffer();
- m_CommandBufferAfterDepth.name = "Custom RenderPipeline GBuffer";
- m_Camera.AddCommandBuffer(CameraEvent.AfterDepthTexture, m_CommandBufferAfterDepth);
-
- // render targets
- int width = m_Camera.pixelWidth, height = m_Camera.pixelHeight;
- m_GBufferTextureNormal = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- m_GBufferTexturePosition = RenderTexture.GetTemporary(width, height, 24, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Linear);
- m_GBuffer[0] = m_GBufferTextureNormal.colorBuffer;
- m_GBuffer[1] = m_GBufferTexturePosition.colorBuffer;
- m_DepthBuffer = m_GBufferTextureNormal.depthBuffer;
- }
-
- void OnDisable()
- {
- m_Camera.RemoveAllCommandBuffers();
- }
-
- void OnPreCull()
- {
- m_CommandBufferAfterDepth.Clear();
-
- RenderGBuffer();
-
- onPreCull?.Invoke();
- }
-
- void OnPreRender()
- {
- onPreRender?.Invoke();
- }
-
- void OnPostRender()
- {
- onPostRender?.Invoke();
- }
-
- void RenderGBuffer()
- {
- CommandBuffer cb = m_CommandBufferAfterDepth;
- cb.SetRenderTarget(m_GBuffer, m_DepthBuffer);
- cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0));
- List<CustomRenderer> renderers = CustomRendererRegistry.Instance.renderers;
- Material mat = new Material(Shader.Find(StaticDefine.shaders[EShader.GBuffer].name));
- for(int i = 0; i < renderers.Count; ++i)
- {
- CustomRenderer renderer = renderers[i];
- if (renderer == null)
- continue;
- cb.DrawRenderer(renderer.renderer, mat);
- }
- }
-
-} \ No newline at end of file