diff options
Diffstat (limited to 'Assets/Scripts/Camera')
-rw-r--r-- | Assets/Scripts/Camera/CustomRenderingPipeline.cs | 99 | ||||
-rw-r--r-- | Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta (renamed from Assets/Scripts/Camera/LensEffectHandler.cs.meta) | 2 | ||||
-rw-r--r-- | Assets/Scripts/Camera/LensEffectHandler.cs | 35 | ||||
-rw-r--r-- | Assets/Scripts/Camera/MainCamera.cs | 13 |
4 files changed, 107 insertions, 42 deletions
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<ERenderingEvent, CameraEvent> RenderingEventToCameraEvent = new Dictionary<ERenderingEvent, CameraEvent> {
+ {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<Camera>();
+ } + + 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/LensEffectHandler.cs.meta b/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta index cf914200..1a3cac2c 100644 --- a/Assets/Scripts/Camera/LensEffectHandler.cs.meta +++ b/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 058dffdf2041d7d43902a7c301296bb2 +guid: aaca34c56e4ce4f41a13d30db14959aa MonoImporter: externalObjects: {} serializedVersion: 2 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<Camera>(); - } - - private void OnPreCull() - { - onPreCull?.Invoke(); - } - - private void OnPreRender() - { - onPreRender?.Invoke(); - } - - private void OnPostRender() - { - onPostRender?.Invoke(); - } - -} 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<MainCamera> { #region inspector @@ -32,14 +33,14 @@ public class MainCamera : SingletonMB<MainCamera> [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<LensEffectHandler>(); - return m_LensEffectHandler; + if (m_CustomRenderingPipeline == null)
+ m_CustomRenderingPipeline = this.gameObject.GetOrAddComponent<CustomRenderingPipeline>(); + return m_CustomRenderingPipeline; } } |