diff options
Diffstat (limited to 'Assets/Scripts/Unit/LensEffect/LensEffectBase.cs')
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffectBase.cs | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs deleted file mode 100644 index 94e5f6a7..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.Rendering;
-
-public class MaterialEntry
-{
- public string shader;
- public Material material;
-}
-
-// unit 镜头效果,和image effect的区别在于不光是后处理
-public abstract class LensEffectBase
-{
- public enum EStage
- {
- BeforeIterate, // 迭代之前
- Iterate, // 迭代renderer
- AfterIterate, // 迭代之后
- FinishRender, // 渲染角色之后(所有lens effect结束)
- }
-
- public abstract ERenderingEvent renderingEvents { get; }
-
- protected static Dictionary<string/*shaderName*/, List<MaterialEntry>> m_MaterailPool = new Dictionary<string, List<MaterialEntry>>();
-
- private List<MaterialEntry> m_InUseMaterials = new List<MaterialEntry>();
-
- #region upvalues
- public BodyPartRenderer curBodypartRenderer;
- public UnitController owner;
- #endregion
-
- private static MaterialEntry ClaimMaterial(string shader)
- {
- List<MaterialEntry> mats;
- if (m_MaterailPool.TryGetValue(shader, out mats) && mats.Count > 0)
- {
- MaterialEntry me = mats[mats.Count - 1];
- mats.RemoveAt(mats.Count - 1);
- return me;
- }
- Material mat = new Material(Shader.Find(shader));
- MaterialEntry entry = new MaterialEntry();
- entry.material = mat;
- entry.shader = shader;
- return entry;
- }
-
- private static void ReleaseMaterial(MaterialEntry entry)
- {
- List<MaterialEntry> mats;
- if (!m_MaterailPool.TryGetValue(entry.shader, out mats))
- {
- mats = new List<MaterialEntry>();
- m_MaterailPool.Add(entry.shader, mats);
- }
- mats.Add(entry);
- } - - protected MaterialEntry GetTempMaterial(string shader)
- {
- MaterialEntry entry = ClaimMaterial(shader);
- m_InUseMaterials.Add(entry);
- return entry;
- } - - protected void ReleaseAllInUsedMaterials()
- {
- for(int i = 0; i < m_InUseMaterials.Count; ++i)
- {
- ReleaseMaterial(m_InUseMaterials[i]);
- }
- m_InUseMaterials.Clear();
- } -
- public virtual void BeforeDepthTexture(EStage stage, CommandBuffer cb) { }
- public virtual void AfterDepthTexture(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeDepthNormalsTexture(EStage stage, CommandBuffer cb) { }
- public virtual void AfterDepthNormalsTexture(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeForwardOpaque(EStage stage, CommandBuffer cb) { }
- public virtual void AfterForwardOpaque(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeImageEffectsOpaque(EStage stage, CommandBuffer cb) { }
- public virtual void AfterImageEffectsOpaque(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeSkybox(EStage stage, CommandBuffer cb) { }
- public virtual void AfterSkybox(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeForwardAlpha(EStage stage, CommandBuffer cb) { }
- public virtual void AfterForwardAlpha(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeImageEffects(EStage stage, CommandBuffer cb) { }
- public virtual void AfterImageEffects(EStage stage, CommandBuffer cb) { }
-
- public virtual void BeforeEverything(EStage stage, CommandBuffer cb) { }
- public virtual void AfterEverything(EStage stage, CommandBuffer cb) { }
-
- public virtual bool CanDestroy() { return false; }
-
- public virtual void OnDestroy() { }
-
- // 角色渲染完毕
- public virtual void OnRenderFinish()
- {
- ReleaseAllInUsedMaterials();
- }
-
-}
\ No newline at end of file |