summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Camera
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Camera')
-rw-r--r--Assets/Scripts/Camera/CustomRenderingPipeline.cs99
-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.cs35
-rw-r--r--Assets/Scripts/Camera/MainCamera.cs13
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;
}
}