diff options
Diffstat (limited to 'Assets/Scripts/Rendering/CustomRenderingPipeline.cs')
-rw-r--r-- | Assets/Scripts/Rendering/CustomRenderingPipeline.cs | 89 |
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 |