From b5645c779a3e3c4ca758400cd9a718a7bc0c2bc6 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 20 Sep 2021 22:44:08 +0800 Subject: *command buffer --- Assets/Scripts/Camera/CustomRenderingPipeline.cs | 99 ++++++++++++++++++++++ .../Scripts/Camera/CustomRenderingPipeline.cs.meta | 11 +++ Assets/Scripts/Camera/LensEffectHandler.cs | 35 -------- Assets/Scripts/Camera/LensEffectHandler.cs.meta | 11 --- Assets/Scripts/Camera/MainCamera.cs | 13 +-- 5 files changed, 117 insertions(+), 52 deletions(-) create mode 100644 Assets/Scripts/Camera/CustomRenderingPipeline.cs create mode 100644 Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta delete mode 100644 Assets/Scripts/Camera/LensEffectHandler.cs delete mode 100644 Assets/Scripts/Camera/LensEffectHandler.cs.meta (limited to 'Assets/Scripts/Camera') diff --git a/Assets/Scripts/Camera/CustomRenderingPipeline.cs b/Assets/Scripts/Camera/CustomRenderingPipeline.cs new file mode 100644 index 00000000..c11cc785 --- /dev/null +++ b/Assets/Scripts/Camera/CustomRenderingPipeline.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +// https://docs.unity3d.com/ScriptReference/Rendering.CameraEvent.html +// 前向渲染的camera events +// * DepthTexture +// * DepthNormalTexture +// * ForwardOpaque +// * ImageEffectsOpaque +// * Skybox +// * ForwardAlpha +// * ImageEffects +// * Everything + +[Flags] +public enum ERenderingEvent +{ + None = 0, + BeforeDepthTexture = 1, + BeforeDepthNormalsTexture = 1 << 1, + BeforeForwardOpaque = 1 << 2, + BeforeImageEffectsOpaque = 1 << 3, + BeforeSkybox = 1 << 4, + BeforeForwardAlpha = 1 << 5, + BeforeImageEffects = 1 << 6, + //BeforeEverything = 1 << 7, + AfterDepthTexture = 1 << 8, + AfterDepthNormalsTexture = 1 << 9, + AfterForwardOpaque = 1 << 10, + AfterImageEffectsOpaque = 1 << 11, + AfterSkybox = 1 << 12, + AfterForwardAlpha = 1 << 13, + AfterImageEffects = 1 << 14, + AfterEverything = 1 << 15, +} + +[RequireComponent(typeof(MainCamera))] +public class CustomRenderingPipeline : MonoBehaviour +{ + public static Dictionary RenderingEventToCameraEvent = new Dictionary { + {ERenderingEvent.BeforeDepthTexture, CameraEvent.BeforeDepthTexture }, + {ERenderingEvent.BeforeDepthNormalsTexture, CameraEvent.BeforeDepthNormalsTexture }, + {ERenderingEvent.BeforeForwardOpaque, CameraEvent.BeforeForwardOpaque }, + {ERenderingEvent.BeforeImageEffectsOpaque, CameraEvent.BeforeImageEffectsOpaque }, + {ERenderingEvent.BeforeSkybox, CameraEvent.BeforeSkybox }, + {ERenderingEvent.BeforeForwardAlpha, CameraEvent.BeforeForwardAlpha }, + {ERenderingEvent.BeforeImageEffects, CameraEvent.BeforeImageEffects }, + {ERenderingEvent.AfterDepthTexture, CameraEvent.AfterDepthTexture }, + {ERenderingEvent.AfterDepthNormalsTexture, CameraEvent.AfterDepthNormalsTexture }, + {ERenderingEvent.AfterForwardOpaque, CameraEvent.AfterForwardOpaque }, + {ERenderingEvent.AfterImageEffectsOpaque, CameraEvent.AfterImageEffectsOpaque }, + {ERenderingEvent.AfterSkybox, CameraEvent.AfterSkybox }, + {ERenderingEvent.AfterForwardAlpha, CameraEvent.AfterForwardAlpha }, + {ERenderingEvent.AfterImageEffects, CameraEvent.AfterImageEffects }, + {ERenderingEvent.AfterEverything, CameraEvent.AfterEverything }, + }; + + Camera m_Camera; + + public delegate void RenderEventHandler(); + public event RenderEventHandler onPreCull; + public event RenderEventHandler onPreRender; + public event RenderEventHandler onPostRender; + + private void OnEable() + { + m_Camera = GetComponent(); + } + + private void Start() + { + + } + + private void OnPreCull() + { + onPreCull?.Invoke(); + } + + private void OnPreRender() + { + onPreRender?.Invoke(); + } + + private void OnPostRender() + { + onPostRender?.Invoke(); + } + + #region 贴图 + + #endregion + + + +} \ No newline at end of file diff --git a/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta b/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta new file mode 100644 index 00000000..1a3cac2c --- /dev/null +++ b/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aaca34c56e4ce4f41a13d30db14959aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera/LensEffectHandler.cs b/Assets/Scripts/Camera/LensEffectHandler.cs deleted file mode 100644 index 63114535..00000000 --- a/Assets/Scripts/Camera/LensEffectHandler.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -[RequireComponent(typeof(Camera))] -public class LensEffectHandler : MonoBehaviour -{ - Camera m_Camera; - - public delegate void RenderEventHandler(); - public event RenderEventHandler onPreCull; - public event RenderEventHandler onPreRender; - public event RenderEventHandler onPostRender; - - private void OnEable() - { - m_Camera = GetComponent(); - } - - private void OnPreCull() - { - onPreCull?.Invoke(); - } - - private void OnPreRender() - { - onPreRender?.Invoke(); - } - - private void OnPostRender() - { - onPostRender?.Invoke(); - } - -} diff --git a/Assets/Scripts/Camera/LensEffectHandler.cs.meta b/Assets/Scripts/Camera/LensEffectHandler.cs.meta deleted file mode 100644 index cf914200..00000000 --- a/Assets/Scripts/Camera/LensEffectHandler.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 058dffdf2041d7d43902a7c301296bb2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Camera/MainCamera.cs b/Assets/Scripts/Camera/MainCamera.cs index f439cf22..4d65fa18 100644 --- a/Assets/Scripts/Camera/MainCamera.cs +++ b/Assets/Scripts/Camera/MainCamera.cs @@ -5,6 +5,7 @@ using UnityEngine; // 主相机 [ExecuteAlways] +[RequireComponent(typeof(Camera))] public class MainCamera : SingletonMB { #region inspector @@ -32,14 +33,14 @@ public class MainCamera : SingletonMB [SerializeField] private float threshold; #endregion - private LensEffectHandler m_LensEffectHandler; - public LensEffectHandler lensEffectHandler - { + private CustomRenderingPipeline m_CustomRenderingPipeline; + public CustomRenderingPipeline customRenderingPipeline + { get { - if (m_LensEffectHandler == null) - m_LensEffectHandler = this.gameObject.GetOrAddComponent(); - return m_LensEffectHandler; + if (m_CustomRenderingPipeline == null) + m_CustomRenderingPipeline = this.gameObject.GetOrAddComponent(); + return m_CustomRenderingPipeline; } } -- cgit v1.1-26-g67d0