diff options
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Data/EnumDefine.cs | 3 | ||||
-rw-r--r-- | Assets/Scripts/Data/StaticDefine.cs | 2 | ||||
-rw-r--r-- | Assets/Scripts/Drone.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Managers/Physics.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Managers/UnitManager.cs | 2 | ||||
-rw-r--r-- | Assets/Scripts/Props.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Robot.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Scene.meta (renamed from Assets/Scripts/Curve3D.meta) | 2 | ||||
-rw-r--r-- | Assets/Scripts/Unit/AI/Actions.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/AI/Conditionals.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitLensEffect.cs | 17 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitPreprocessing.cs | 128 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Components/UnitPreprocessing.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/PCController.cs | 7 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/UnitController.cs | 7 | ||||
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs | 41 | ||||
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs | 3 |
18 files changed, 215 insertions, 67 deletions
diff --git a/Assets/Scripts/Data/EnumDefine.cs b/Assets/Scripts/Data/EnumDefine.cs index decba9c5..50e0baf5 100644 --- a/Assets/Scripts/Data/EnumDefine.cs +++ b/Assets/Scripts/Data/EnumDefine.cs @@ -15,8 +15,11 @@ public enum EShader { Blur, MotionBlur, + Buzz, SolidColor, + UnitDepth, + } diff --git a/Assets/Scripts/Data/StaticDefine.cs b/Assets/Scripts/Data/StaticDefine.cs index ca05d947..ae06f364 100644 --- a/Assets/Scripts/Data/StaticDefine.cs +++ b/Assets/Scripts/Data/StaticDefine.cs @@ -21,6 +21,8 @@ public static class StaticDefine { EShader.Blur, new ShaderDefine("Erika/Common/Image/Blur", "")},
{ EShader.MotionBlur, new ShaderDefine("Erika/Common/Image/MotionBlur", "")},
{ EShader.SolidColor, new ShaderDefine("Erika/Common/SolidColor", "") },
+ { EShader.UnitDepth, new ShaderDefine("Erika/Unit/Common/Depth", "") },
+ { EShader.Buzz, new ShaderDefine("Erika/Common/Image/Buzz", "") },
};
public static string bundleManifest = "bundles"; // Assets/Resources/bundles.json
diff --git a/Assets/Scripts/Drone.meta b/Assets/Scripts/Drone.meta deleted file mode 100644 index 694cff70..00000000 --- a/Assets/Scripts/Drone.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ec3412151f8a72a41b2ed21316763399 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Managers/Physics.meta b/Assets/Scripts/Managers/Physics.meta deleted file mode 100644 index 2296b3f8..00000000 --- a/Assets/Scripts/Managers/Physics.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 603d4624aaedd794cb89497954a83f4a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Managers/UnitManager.cs b/Assets/Scripts/Managers/UnitManager.cs index 6196e892..920cbe9e 100644 --- a/Assets/Scripts/Managers/UnitManager.cs +++ b/Assets/Scripts/Managers/UnitManager.cs @@ -26,7 +26,7 @@ public class UnitManager : Singleton<UnitManager> {
List<UnitSnapshot> snapshots;
UnitSnapshot snap = null;
- if (m_Snapshots.TryGetValue(unit, out snapshots))
+ if (m_Snapshots.TryGetValue(unit, out snapshots) && snapshots.Count > 0)
{
snap = snapshots[snapshots.Count - 1];
snapshots.RemoveAt(snapshots.Count - 1);
diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta deleted file mode 100644 index bb96602e..00000000 --- a/Assets/Scripts/Props.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f299520ed9fcf4a45858ad4ef5a8d5d1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Robot.meta b/Assets/Scripts/Robot.meta deleted file mode 100644 index 0b5a087e..00000000 --- a/Assets/Scripts/Robot.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7c09ca1609552d24bbe697d1516f8aa9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Curve3D.meta b/Assets/Scripts/Scene.meta index fef1c5e7..eb7a8716 100644 --- a/Assets/Scripts/Curve3D.meta +++ b/Assets/Scripts/Scene.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ad8b718b6b700d8419838dad07158567 +guid: eaee2d0f48cff9b40baf0686a8105600 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/Unit/AI/Actions.meta b/Assets/Scripts/Unit/AI/Actions.meta deleted file mode 100644 index 9b4ad463..00000000 --- a/Assets/Scripts/Unit/AI/Actions.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 971e9d55b8bc0894eb6a110fb962000b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/AI/Conditionals.meta b/Assets/Scripts/Unit/AI/Conditionals.meta deleted file mode 100644 index 70a86da5..00000000 --- a/Assets/Scripts/Unit/AI/Conditionals.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 85b7e0c7ed1d12f42a5178bfbf3d934c -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Unit/Components/UnitLensEffect.cs b/Assets/Scripts/Unit/Components/UnitLensEffect.cs index a3c5d2c8..ef8e6ee6 100644 --- a/Assets/Scripts/Unit/Components/UnitLensEffect.cs +++ b/Assets/Scripts/Unit/Components/UnitLensEffect.cs @@ -60,19 +60,20 @@ public class UnitLensEffect : UnitComponent } MainCamera.Instance.customRenderingPipeline.onPreCull += OnWillRenderUnit; - MainCamera.Instance.customRenderingPipeline.onPostRender += OnRenderUnit; - - ///// + MainCamera.Instance.customRenderingPipeline.onPostRender += OnRenderUnit;
+
+ /////
//m_Effects.Add(new LensEffect_MotionBlur());
- //m_Effects.Add(new LensEffect_BlurRim(Color.blue)); + //m_Effects.Add(new LensEffect_BlurRim(Color.blue));
+ m_Effects.Add(new LensEffect_Buzz());
} public override void Release() - { - base.Release(); - - MainCamera.Instance.customRenderingPipeline.onPreRender -= OnWillRenderUnit; + {
+ MainCamera.Instance.customRenderingPipeline.onPreCull -= OnWillRenderUnit; MainCamera.Instance.customRenderingPipeline.onPostRender -= OnRenderUnit; + + base.Release(); } private void OnWillRenderUnit() diff --git a/Assets/Scripts/Unit/Components/UnitPreprocessing.cs b/Assets/Scripts/Unit/Components/UnitPreprocessing.cs new file mode 100644 index 00000000..30357615 --- /dev/null +++ b/Assets/Scripts/Unit/Components/UnitPreprocessing.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +// 给每个角色准备一些特殊的前置渲染 +public class UnitPreprocessing : UnitComponent +{ + [Flags] + public enum EUnitPreprocessing + { + None , + DepthTexture, // Unit Depth Texture + WorldNormalTexture, // Unit World Normal Texture + } + + public EUnitPreprocessing preprocessing; + + public RenderTexture unitDepthTexture { get; private set; } + public RenderTexture unitWorldNormalTexture { get; private set; } + + private CommandBuffer m_CBBeforeDepthTexture; + + private Material m_MaterialDepth; + + public override void Initialize() + { + base.Initialize(); + } + + public override void OnPostInitialize() + { + base.OnPostInitialize(); + + MainCamera.Instance.customRenderingPipeline.onPreCull += OnWillRenderUnit; + MainCamera.Instance.customRenderingPipeline.onPostRender += OnRenderUnit; + + m_CBBeforeDepthTexture = new CommandBuffer(); + + PrepareRenderTextures(); + PrepareMaterials(); + } + + void PrepareRenderTextures() + { + int unitHash = owner.GetHashCode(); + + int width = MainCamera.Instance.camera.pixelWidth; + int height = MainCamera.Instance.camera.pixelHeight; + unitDepthTexture = new RenderTexture(width, height, 24, RenderTextureFormat.Depth, RenderTextureReadWrite.Linear); + unitDepthTexture.name = "UnitDepthTexture_" + owner.GetHashCode(); + } + + void PrepareMaterials() + { + m_MaterialDepth = new Material(Shader.Find(StaticDefine.shaders[EShader.UnitDepth].name)); + } + + public override void OnUpdate() + { + base.OnUpdate(); + } + + public override void Release() + { + MainCamera.Instance.customRenderingPipeline.onPreCull -= OnWillRenderUnit; + MainCamera.Instance.customRenderingPipeline.onPostRender -= OnRenderUnit; + + base.Release(); + } + + private void OnWillRenderUnit() + { + RenderDepthTexture(); + //RenderWorldNormal(); + + MainCamera.Instance.camera.AddCommandBuffer(CameraEvent.BeforeDepthTexture, m_CBBeforeDepthTexture); + } + + void RenderDepthTexture() + { + var cb = m_CBBeforeDepthTexture; + cb.Clear(); + cb.SetRenderTarget(unitDepthTexture); + cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0)); + + cb.SetGlobalVector("unity_LightShadowBias", Vector4.zero); + + foreach (var r in GetRenderers()) + { + BodyPartRenderer br = r as BodyPartRenderer; + if (br == null) + continue; + Renderer renderer = br.renderer as Renderer; + if (renderer == null) + continue; + cb.DrawRenderer(renderer, m_MaterialDepth); + } + } + + //void RenderWorldNormal() + //{ + // var cb = m_CBBeforeDepthTexture; + // cb.Clear(); + // cb.GetTemporaryRT(unitWorldNormalTextureID, -1, -1, 24, FilterMode.Point, RenderTextureFormat.RG16, RenderTextureReadWrite.Linear); + // cb.SetRenderTarget(unitWorldNormalTextureID); + // cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0)); + //} + + IEnumerable GetRenderers() + { + IBodyRendererAgent body = owner.unitRender.body; + if (body == null || body.renderers == null || body.renderers.Length == 0) + yield break; + for (int j = 0; j < body.renderers.Length; ++j) + { + yield return body.renderers[j]; + } + } + + private void OnRenderUnit() + { + //m_CBBeforeDepthTexture.ReleaseTemporaryRT(unitDepthTextureID); + + MainCamera.Instance.camera.RemoveCommandBuffer(CameraEvent.BeforeDepthTexture, m_CBBeforeDepthTexture); + } +}
\ No newline at end of file diff --git a/Assets/Scripts/Unit/Components/UnitPreprocessing.cs.meta b/Assets/Scripts/Unit/Components/UnitPreprocessing.cs.meta new file mode 100644 index 00000000..734df2f2 --- /dev/null +++ b/Assets/Scripts/Unit/Components/UnitPreprocessing.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1998e85be970d1541843ff6166f6c771 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/Controller/PCController.cs b/Assets/Scripts/Unit/Controller/PCController.cs index 90520017..35645d57 100644 --- a/Assets/Scripts/Unit/Controller/PCController.cs +++ b/Assets/Scripts/Unit/Controller/PCController.cs @@ -11,8 +11,7 @@ public class PCController : UnitController #region Unit的三种效果
public UnitAfterImage unitAfterImage;
public UnitImageEffect unitImageEffect;
- public UnitLensEffect unitLensEffect;
- #endregion
+ #endregion
public override UnitType type { get { return UnitType.PC; } }
@@ -36,10 +35,6 @@ public class PCController : UnitController unitImageEffect = GetOrAddUnitComponent<UnitImageEffect>();
unitImageEffect.Initialize();
-
- unitLensEffect = GetOrAddUnitComponent<UnitLensEffect>();
- unitLensEffect.Initialize();
-
}
public override void Update()
diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs index c75b32b3..971eea62 100644 --- a/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Assets/Scripts/Unit/Controller/UnitController.cs @@ -44,6 +44,8 @@ public class UnitController : MonoBehaviour/*, Interactable*/ public UnitLensEffect unitLensEffect;
+ public UnitPreprocessing unitPreprocessing;
+
public GameObject unitObj; // 角色模型
protected List<UnitComponent> unitComponents;
@@ -184,7 +186,10 @@ public class UnitController : MonoBehaviour/*, Interactable*/ unitLensEffect.Initialize();
unitDetail = gameObject.GetComponentInChildren<UnitDetail>();
- }
+
+ unitPreprocessing = GetOrAddUnitComponent<UnitPreprocessing>();
+ unitPreprocessing.Initialize();
+ }
private void OnPostInitailize()
{
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs new file mode 100644 index 00000000..55e8c772 --- /dev/null +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Rendering; + +// 蜂鸣 +public class LensEffect_Buzz : LensEffectBase +{ + public override ERenderingEvent renderingEvents => ERenderingEvent.AfterForwardAlpha; + + public LensEffect_Buzz() : base() + { + + } + + public override void AfterForwardAlpha(EStage stage, CommandBuffer cb) + { + if(stage == EStage.Before) + { + Before(cb); + } + else if(stage == EStage.After) + { + After(cb); + } + } + + void Before(CommandBuffer cb) + { + MaterialEntry buzz = ClaimMaterial(StaticDefine.shaders[EShader.Buzz].name); + + cb.SetGlobalTexture("_UnitDepthTexture", owner.unitPreprocessing.unitDepthTexture); + cb.Blit(BuiltinRenderTextureType.CameraTarget, BuiltinRenderTextureType.CameraTarget, buzz.material); + } + + void After(CommandBuffer cb) + { + + } + +}
\ No newline at end of file diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta new file mode 100644 index 00000000..24b527a2 --- /dev/null +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Buzz.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d76bd4e3298fc574e9f90efa626f6e17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs index 84f8edcb..61bb08fa 100644 --- a/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs +++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Dash.cs @@ -19,12 +19,11 @@ public class LensEffect_Dash : LensEffectBase public LensEffect_Dash(Color color, float lifeTime, float angle, UnitSnapshotInfo snapshot) : base() { rimColor = color; - tempID = Shader.PropertyToID("_BlurRim_RT0"); + tempID = Shader.PropertyToID("RT_Dash"); this.lifeTime = lifeTime; trs = snapshot.trs; this.snapshot = UnitManager.Instance.ClaimSnapshotSolo(snapshot); this.angle = angle; - } public override void AfterForwardOpaque(EStage stage, CommandBuffer cb) |