summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-20 22:44:08 +0800
committerchai <chaifix@163.com>2021-09-20 22:44:08 +0800
commitb5645c779a3e3c4ca758400cd9a718a7bc0c2bc6 (patch)
tree828efe2db3a371499e34ee6c2126cdb8d95f2244
parent4551d1d12fc3029fcf553cfdeb10402e42de705d (diff)
*command buffer
-rw-r--r--Assets/Art/Models/Characters/Default.meta (renamed from Assets/Bundle/Materials/Common.meta)2
-rw-r--r--Assets/Art/Models/Characters/Erika2.meta (renamed from Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta)2
-rw-r--r--Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta (renamed from Assets/Data/RootMotionData.meta)2
-rw-r--r--Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta8
-rw-r--r--Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta8
-rw-r--r--Assets/Bundle/Materials/Unit/Effect.meta (renamed from Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta)2
-rw-r--r--Assets/Bundle/Models.meta8
-rw-r--r--Assets/Bundle/Prefabs.meta8
-rw-r--r--Assets/Bundle/Scenes/Demo/AnimationEditScene.unity94
-rw-r--r--Assets/Bundle/Shaders/Unit/Effect.meta8
-rw-r--r--Assets/Bundle/UI.meta8
-rw-r--r--Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta8
-rw-r--r--Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta8
-rw-r--r--Assets/Bundle/Unit/NPC.meta8
-rw-r--r--Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta8
-rw-r--r--Assets/Bundle/Unit/PC/Erika/Models.meta8
-rw-r--r--Assets/Bundle/Unit/PC/Erika/UnitData.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta8
-rw-r--r--Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta8
-rw-r--r--Assets/Bundle/Unit/Prop.meta8
-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
-rw-r--r--Assets/Scripts/Curve3D.meta8
-rw-r--r--Assets/Scripts/Drone.meta8
-rw-r--r--Assets/Scripts/Managers/Physics.meta8
-rw-r--r--Assets/Scripts/Props.meta8
-rw-r--r--Assets/Scripts/Robot.meta8
-rw-r--r--Assets/Scripts/Scene.meta8
-rw-r--r--Assets/Scripts/Unit/AI/Actions.meta8
-rw-r--r--Assets/Scripts/Unit/AI/Conditionals.meta8
-rw-r--r--Assets/Scripts/Unit/Components/UnitLensEffect.cs129
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffectBase.cs101
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta (renamed from Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta)2
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs18
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta11
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs64
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta11
-rw-r--r--Assets/Scripts/Unit/LensEffect/LensEffects.cs166
47 files changed, 639 insertions, 354 deletions
diff --git a/Assets/Bundle/Materials/Common.meta b/Assets/Art/Models/Characters/Default.meta
index 2dc8c0c1..43499fc7 100644
--- a/Assets/Bundle/Materials/Common.meta
+++ b/Assets/Art/Models/Characters/Default.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: ad166fa278dd3ad41a25aaeec66d37ab
+guid: e8a40298dd4efd14c9f90a63734ca39b
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta b/Assets/Art/Models/Characters/Erika2.meta
index be6badd6..fd7369d9 100644
--- a/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta
+++ b/Assets/Art/Models/Characters/Erika2.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 2c46a5a23283c7d428ae8bb13663ab6a
+guid: 077f81003f9fc564791cce182048c2b0
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Data/RootMotionData.meta b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta
index 14abf402..b76e98a5 100644
--- a/Assets/Data/RootMotionData.meta
+++ b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5cfee9bde9754254f83510f88dd2a19b
+guid: 20381b3eecfbfe34a9d9222868969d29
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta b/Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta
new file mode 100644
index 00000000..41200932
--- /dev/null
+++ b/Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: abff7cb61c760094f8ab9437379e0f2c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta b/Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta
new file mode 100644
index 00000000..fa9e76cd
--- /dev/null
+++ b/Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e38cb65072bb4a64cbe162792de9bec2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta b/Assets/Bundle/Materials/Unit/Effect.meta
index 855459bb..fdf8c1db 100644
--- a/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta
+++ b/Assets/Bundle/Materials/Unit/Effect.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3ab09dc0a18f20b4ea29507887e11428
+guid: 0525fec1eb7cc94458170e9e106955d5
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Assets/Bundle/Models.meta b/Assets/Bundle/Models.meta
new file mode 100644
index 00000000..c9b5bf44
--- /dev/null
+++ b/Assets/Bundle/Models.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: adab1ca5f61452c4c90f19e7c11adf0e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Prefabs.meta b/Assets/Bundle/Prefabs.meta
new file mode 100644
index 00000000..82588fb1
--- /dev/null
+++ b/Assets/Bundle/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dac6442cad7539149a7527510665d510
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity b/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
index 0b7a7e01..2ab354bf 100644
--- a/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
+++ b/Assets/Bundle/Scenes/Demo/AnimationEditScene.unity
@@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571328, b: 0.3069217, a: 1}
+ m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
@@ -19263,96 +19263,6 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
vectorLabel1_3: W
---- !u!1001 &276673123
-PrefabInstance:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_Modification:
- m_TransformParent: {fileID: 0}
- m_Modifications:
- - target: {fileID: 5512425670061407962, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_Renderers.Array.size
- value: 2
- objectReference: {fileID: 0}
- - target: {fileID: 5512425670061407962, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_Renderers.Array.data[1].renderer
- value:
- objectReference: {fileID: 276673124}
- - target: {fileID: 5512425670061407962, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_Renderers.Array.data[1].tag
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 6928033330946439154, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_Name
- value: Erika_Robot
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalPosition.x
- value: 3.54
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalPosition.y
- value: 3.34
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalPosition.z
- value: -12.52
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalRotation.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalRotation.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalRotation.z
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalRotation.w
- value: 1
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_RootOrder
- value: 11
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalEulerAnglesHint.x
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalEulerAnglesHint.y
- value: 0
- objectReference: {fileID: 0}
- - target: {fileID: 6930345995811640846, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- propertyPath: m_LocalEulerAnglesHint.z
- value: 0
- objectReference: {fileID: 0}
- m_RemovedComponents: []
- m_SourcePrefab: {fileID: 100100000, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7, type: 3}
---- !u!23 &276673124 stripped
-MeshRenderer:
- m_CorrespondingSourceObject: {fileID: 1357685699, guid: 0b08ee7afb9df4649b0dd2cd0a3eeac7,
- type: 3}
- m_PrefabInstance: {fileID: 276673123}
- m_PrefabAsset: {fileID: 0}
--- !u!1 &278122006
GameObject:
m_ObjectHideFlags: 0
@@ -67616,7 +67526,7 @@ MonoBehaviour:
m_GameObject: {fileID: 861741897}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 058dffdf2041d7d43902a7c301296bb2, type: 3}
+ m_Script: {fileID: 11500000, guid: aaca34c56e4ce4f41a13d30db14959aa, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &861741903
diff --git a/Assets/Bundle/Shaders/Unit/Effect.meta b/Assets/Bundle/Shaders/Unit/Effect.meta
new file mode 100644
index 00000000..7df9a033
--- /dev/null
+++ b/Assets/Bundle/Shaders/Unit/Effect.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9cc4684b9f432f149b16a51f148c9490
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/UI.meta b/Assets/Bundle/UI.meta
new file mode 100644
index 00000000..0914914c
--- /dev/null
+++ b/Assets/Bundle/UI.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4392471259b05a74a82a4bc72b510eb1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta b/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta
new file mode 100644
index 00000000..ca7266b0
--- /dev/null
+++ b/Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a1d7b6e0d8fb1a642a65011fb6cd7d89
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta b/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta
new file mode 100644
index 00000000..142f5872
--- /dev/null
+++ b/Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6ad7401709700f34db2b795830937d76
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/NPC.meta b/Assets/Bundle/Unit/NPC.meta
new file mode 100644
index 00000000..eeea13e1
--- /dev/null
+++ b/Assets/Bundle/Unit/NPC.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8ced034d375cdfa488814663ea17a79b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta b/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta
new file mode 100644
index 00000000..8c41a6b2
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5dc1b71affc68b54594096a1b96a5c00
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/Erika/Models.meta b/Assets/Bundle/Unit/PC/Erika/Models.meta
new file mode 100644
index 00000000..11148d17
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/Erika/Models.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0d712421d808a43438a43d8a5d34effe
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/Erika/UnitData.meta b/Assets/Bundle/Unit/PC/Erika/UnitData.meta
new file mode 100644
index 00000000..7d4b13eb
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/Erika/UnitData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 922befa8a94692845b88500a23229d7f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta
new file mode 100644
index 00000000..f5434a00
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 07c3b2bf6cb8cc2498422bbb105cbad8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta
new file mode 100644
index 00000000..4ed2c938
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 827d77abe87680a47ae2d71a9e953a18
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta
new file mode 100644
index 00000000..43a52cd1
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7a2b72fbb41383047ac45e6c22ea9663
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta
new file mode 100644
index 00000000..85d58a8c
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b2b0838fb0603964e99904eefe81ad7f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta
new file mode 100644
index 00000000..dd867045
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1c8a678ea9e801f439a1003d04f33cf5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta
new file mode 100644
index 00000000..dc530723
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ebf636c7cf7b1934b885298ce1f5f42e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta
new file mode 100644
index 00000000..b28b6f04
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2022e8298d3a8624992143eb57c0f8ac
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta
new file mode 100644
index 00000000..eeca0d3b
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f6aa859c834c51f498ef0b3c3b83a0f5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta b/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta
new file mode 100644
index 00000000..7f91da28
--- /dev/null
+++ b/Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: df69962f5b01e444a8bea87e31c7d0a4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Bundle/Unit/Prop.meta b/Assets/Bundle/Unit/Prop.meta
new file mode 100644
index 00000000..affd6eed
--- /dev/null
+++ b/Assets/Bundle/Unit/Prop.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dafc173db1ebeab4c80641cc3d4fa528
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
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;
}
}
diff --git a/Assets/Scripts/Curve3D.meta b/Assets/Scripts/Curve3D.meta
new file mode 100644
index 00000000..fef1c5e7
--- /dev/null
+++ b/Assets/Scripts/Curve3D.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ad8b718b6b700d8419838dad07158567
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Drone.meta b/Assets/Scripts/Drone.meta
new file mode 100644
index 00000000..694cff70
--- /dev/null
+++ b/Assets/Scripts/Drone.meta
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 00000000..2296b3f8
--- /dev/null
+++ b/Assets/Scripts/Managers/Physics.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 603d4624aaedd794cb89497954a83f4a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta
new file mode 100644
index 00000000..bb96602e
--- /dev/null
+++ b/Assets/Scripts/Props.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f299520ed9fcf4a45858ad4ef5a8d5d1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Robot.meta b/Assets/Scripts/Robot.meta
new file mode 100644
index 00000000..0b5a087e
--- /dev/null
+++ b/Assets/Scripts/Robot.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7c09ca1609552d24bbe697d1516f8aa9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Scene.meta b/Assets/Scripts/Scene.meta
deleted file mode 100644
index eb7a8716..00000000
--- a/Assets/Scripts/Scene.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: eaee2d0f48cff9b40baf0686a8105600
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Scripts/Unit/AI/Actions.meta b/Assets/Scripts/Unit/AI/Actions.meta
new file mode 100644
index 00000000..9b4ad463
--- /dev/null
+++ b/Assets/Scripts/Unit/AI/Actions.meta
@@ -0,0 +1,8 @@
+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
new file mode 100644
index 00000000..70a86da5
--- /dev/null
+++ b/Assets/Scripts/Unit/AI/Conditionals.meta
@@ -0,0 +1,8 @@
+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 5a6a309e..18328fc8 100644
--- a/Assets/Scripts/Unit/Components/UnitLensEffect.cs
+++ b/Assets/Scripts/Unit/Components/UnitLensEffect.cs
@@ -1,4 +1,5 @@
using System;
+using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -14,11 +15,12 @@ public class UnitLensEffect : UnitComponent
private static ObjectPool<CommandBuffer> m_CommandBufferPool;
- private List<LensEffect> m_Effects;
+ private List<LensEffectBase> m_Effects;
- private CommandBuffer m_CommandBuffer;
-
- static UnitLensEffect()
+ private Dictionary<ERenderingEvent, CommandBuffer> m_InUseCommandBuffers;
+ private Dictionary<ERenderingEvent, CommandBuffer> m_CachedCommandBuffers;
+
+ static UnitLensEffect()
{
m_CommandBufferPool = new ObjectPool<CommandBuffer>(null, null);
}
@@ -28,8 +30,10 @@ public class UnitLensEffect : UnitComponent
base.Initialize();
renderers = new List<RendererProxy>();
- m_Effects = new List<LensEffect>();
- }
+ m_Effects = new List<LensEffectBase>();
+ m_InUseCommandBuffers = new Dictionary<ERenderingEvent, CommandBuffer>();
+ m_CachedCommandBuffers = new Dictionary<ERenderingEvent, CommandBuffer>();
+ }
public override void OnPostInitialize()
{
@@ -50,58 +54,68 @@ public class UnitLensEffect : UnitComponent
renderers.Add(proxy);
}
- m_CommandBuffer = ClaimCommandBuffer();
- m_CommandBuffer.name = "Unit Render";
-
- MainCamera.Instance.lensEffectHandler.onPreCull += OnWillRenderUnit;
- MainCamera.Instance.lensEffectHandler.onPostRender += OnRenderUnit;
+ MainCamera.Instance.customRenderingPipeline.onPreCull += OnWillRenderUnit;
+ MainCamera.Instance.customRenderingPipeline.onPostRender += OnRenderUnit;
/////
- m_Effects.Add(LensEffect.MotionBlur());
+ m_Effects.Add(new LensEffect_MotionBlur());
}
public override void Release()
{
base.Release();
- MainCamera.Instance.lensEffectHandler.onPreRender -= OnWillRenderUnit;
- MainCamera.Instance.lensEffectHandler.onPostRender -= OnRenderUnit;
+ MainCamera.Instance.customRenderingPipeline.onPreRender -= OnWillRenderUnit;
+ MainCamera.Instance.customRenderingPipeline.onPostRender -= OnRenderUnit;
}
private void OnWillRenderUnit()
{
- IBodyRendererAgent body = owner.unitRender.body;
+ PrepareCommandBuffers();
+
+ IBodyRendererAgent body = owner.unitRender.body;
if (body == null || body.renderers == null)
return;
if (m_Effects == null || m_Effects.Count == 0)
- return;
-
- m_CommandBuffer.Clear();
-
- for (int i = 0; i < m_Effects.Count; ++i)
- {
- m_Effects[i].beforeIterate(m_CommandBuffer);
- for (int j = 0; j < body.renderers.Length; ++j)
- {
- var renderer = body.renderers[j];
- if (renderer == null)
- continue;
- m_Effects[i].iterate(m_CommandBuffer,renderer);
- }
- m_Effects[i].afterIterate(m_CommandBuffer);
- }
-
- MainCamera.Instance.camera.AddCommandBuffer(CameraEvent.AfterImageEffectsOpaque, m_CommandBuffer);
+ return;
+ foreach (var cb in m_InUseCommandBuffers)
+ {
+ cb.Value.Clear();
+ ERenderingEvent re = cb.Key;
+ CameraEvent ce = CustomRenderingPipeline.RenderingEventToCameraEvent[re];
+ for (int i = 0; i < m_Effects.Count; ++i)
+ {
+ LensEffectBase eff = m_Effects[i];
+ if (!eff.renderingEvents.HasFlag(re))
+ continue;
+ MethodInfo method = eff.GetType().GetMethod(re.ToString(), BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(LensEffectBase.EStage), typeof(CommandBuffer), typeof(BodyPartRenderer) }, null);
+ if (method == null)
+ continue;
+ method.Invoke(eff, new object[] { LensEffectBase.EStage.Before, cb.Value, null });
+ for (int j = 0; j < body.renderers.Length; ++j)
+ {
+ var renderer = body.renderers[j];
+ if (renderer == null)
+ continue;
+ method.Invoke(eff, new object[] { LensEffectBase.EStage.Iterate, cb.Value, renderer });
+ }
+ method.Invoke(eff, new object[] { LensEffectBase.EStage.After, cb.Value, null });
+ }
+ MainCamera.Instance.camera.AddCommandBuffer(ce, cb.Value);
+ }
}
private void OnRenderUnit()
- {
- MainCamera.Instance.camera.RemoveCommandBuffer(CameraEvent.AfterImageEffectsOpaque, m_CommandBuffer);
- for(int i = 0; i < m_Effects.Count; ++i)
- {
- m_Effects[i].finishRender?.Invoke();
- }
- }
+ {
+ foreach(var cb in m_InUseCommandBuffers)
+ {
+ CameraEvent ce = CustomRenderingPipeline.RenderingEventToCameraEvent[cb.Key];
+ MainCamera.Instance.camera.RemoveCommandBuffer(ce, cb.Value);
+ }
+ var temp = m_CachedCommandBuffers;
+ m_CachedCommandBuffers = m_InUseCommandBuffers;
+ m_InUseCommandBuffers = temp;
+ }
private void OnWillRenderObj(BodyPartRenderer renderer)
{
@@ -111,7 +125,40 @@ public class UnitLensEffect : UnitComponent
{
}
- static CommandBuffer ClaimCommandBuffer()
+ void PrepareCommandBuffers()
+ {
+ ERenderingEvent usedEvent = ERenderingEvent.None;
+ for (int i = 0; i < m_Effects.Count; ++i)
+ {
+ usedEvent |= m_Effects[i].renderingEvents;
+ }
+ foreach(ERenderingEvent evt in Enum.GetValues(typeof(ERenderingEvent)))
+ {
+ if (evt == ERenderingEvent.None)
+ continue;
+ if(usedEvent.HasFlag(evt))
+ {
+ CommandBuffer cb;
+ if(m_CachedCommandBuffers.TryGetValue(evt, out cb))
+ {
+ m_CachedCommandBuffers.Remove(evt);
+ }
+ else
+ {
+ cb = m_CommandBufferPool.Get();
+ cb.name = evt.ToString();
+ }
+ m_InUseCommandBuffers.Add(evt, cb);
+ }
+ }
+ foreach(var cb in m_CachedCommandBuffers)
+ {
+ m_CommandBufferPool.Release(cb.Value);
+ }
+ m_CachedCommandBuffers.Clear();
+ }
+
+ static CommandBuffer ClaimCommandBuffer()
{
CommandBuffer cb = m_CommandBufferPool.Get();
cb.Clear();
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs
new file mode 100644
index 00000000..08e20217
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs
@@ -0,0 +1,101 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Rendering;
+
+public class MaterialEntry
+{
+ public string shader;
+ public Material material;
+}
+
+public abstract class LensEffectBase : MonoBehaviour
+{
+ public enum EStage
+ {
+ Before ,
+ Iterate ,
+ After ,
+ Finished ,
+ }
+
+ 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>();
+
+ 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 ClaimMaterial(string shader)
+ {
+ MaterialEntry entry = _ClaimMaterial(shader);
+ m_InUseMaterials.Add(entry);
+ return entry;
+ }
+
+ protected void ReleaseMaterial(MaterialEntry entry)
+ {
+ m_InUseMaterials.Remove(entry);
+ _ReleaseMaterial(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, BodyPartRenderer renderer = null) { }
+ public virtual void AfterDepthTexture(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeDepthNormalsTexture(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterDepthNormalsTexture(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeForwardOpaque(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterForwardOpaque(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeImageEffectsOpaque(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterImageEffectsOpaque(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeSkybox(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterSkybox(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeForwardAlpha(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterForwardAlpha(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeImageEffects(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterImageEffects(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+ public virtual void BeforeEverything(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+ public virtual void AfterEverything(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null) { }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta
index ec32bb75..d0d0d81b 100644
--- a/Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta
+++ b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: c5acf04ae1e72ed42a1d20ee038ac73e
+guid: 548560041d20266478078df50edab4e9
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs
new file mode 100644
index 00000000..00763a37
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class LensEffect_Glitch : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta
new file mode 100644
index 00000000..88e5b0de
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 48bd0d7bffad03a44a281ccb6f21f188
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs
new file mode 100644
index 00000000..9ec7d056
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs
@@ -0,0 +1,64 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Rendering;
+
+public class LensEffect_MotionBlur : LensEffectBase
+{
+ int tempID;
+
+ public LensEffect_MotionBlur()
+ {
+ }
+
+ public override ERenderingEvent renderingEvents => ERenderingEvent.AfterImageEffectsOpaque;
+
+ public override void AfterImageEffectsOpaque(EStage stage, CommandBuffer cb, BodyPartRenderer renderer = null)
+ {
+ if(stage == EStage.Before)
+ {
+ tempID = Shader.PropertyToID("_Temp1");
+
+ cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear);
+ cb.SetRenderTarget(tempID);
+ cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0));
+ }
+ else if(stage == EStage.Iterate)
+ {
+ Matrix4x4 obj2Wod = Matrix4x4.identity;
+ int subMeshCount = 0;
+ if (renderer.renderer is SkinnedMeshRenderer)
+ {
+ SkinnedMeshRenderer smr = renderer.renderer as SkinnedMeshRenderer;
+ Vector3 pos = smr.rootBone.transform.position;
+ Quaternion rot = smr.rootBone.transform.rotation;
+ obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot);
+ subMeshCount = smr.sharedMesh.subMeshCount;
+ }
+ else if (renderer.renderer is MeshRenderer)
+ {
+ obj2Wod = renderer.renderer.transform.localToWorldMatrix;
+ subMeshCount = renderer.renderer.GetComponent<MeshFilter>().sharedMesh.subMeshCount;
+ }
+
+ for (int i = 0; i < subMeshCount; ++i)
+ {
+ MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name);
+ mat.material.SetColor("_Color", Color.red);
+ mat.material.SetMatrix("_ObjectToWorld", obj2Wod);
+
+ cb.DrawRenderer(renderer.renderer, mat.material, i);
+ }
+ }
+ else if(stage == EStage.After)
+ {
+ MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name);
+ cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
+ }
+ else if(stage == EStage.Finished)
+ {
+ ReleaseAllInUsedMaterials();
+ }
+ }
+
+} \ No newline at end of file
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta
new file mode 100644
index 00000000..364e3d30
--- /dev/null
+++ b/Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 499c4e25bc0f4d641b99f688e91c495f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Unit/LensEffect/LensEffects.cs b/Assets/Scripts/Unit/LensEffect/LensEffects.cs
deleted file mode 100644
index 4083eb88..00000000
--- a/Assets/Scripts/Unit/LensEffect/LensEffects.cs
+++ /dev/null
@@ -1,166 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEngine.Rendering;
-
-public class MaterialEntry
-{
- public Material material;
- public string shader;
-}
-
-public struct ScaleOffset
-{
- public Vector2 scale;
- public Vector2 offset;
-}
-
-public class LensEffect
-{
- #region callbacks
- public delegate void BeforeIterateHandler(CommandBuffer cb);
- public BeforeIterateHandler beforeIterate;
-
- public delegate void IterationHandler(CommandBuffer cb, BodyPartRenderer renderer);
- public IterationHandler iterate;
-
- public delegate void AfterIterateHandler(CommandBuffer cb);
- public AfterIterateHandler afterIterate;
-
- // 这一帧的这个特效结束
- public delegate void FinishRenderHandler();
- public FinishRenderHandler finishRender;
- #endregion
-
- private static Dictionary<string/*shaderName*/, List<MaterialEntry>> m_MaterailPool;
-
- public static LensEffect Create(Func<LensEffect> create)
- {
- return create();
- }
-
- static LensEffect()
- {
- m_MaterailPool = new Dictionary<string, List<MaterialEntry>>();
- }
-
- 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;
- }
-
- 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);
- }
-
- #region LensEffects
-
- public static LensEffect MotionBlur()
- {
- LensEffect eff = LensEffect.Create(() =>
- {
- LensEffect e = new LensEffect();
-
- List<MaterialEntry> materials = ListPool<MaterialEntry>.Get();
- int tempID = Shader.PropertyToID("_Temp1");
-
- ScaleOffset scaleOffset = new ScaleOffset();
-
- e.beforeIterate = (CommandBuffer cb) =>
- {
- cb.GetTemporaryRT(tempID, -1, -1, 24, FilterMode.Bilinear);
- cb.SetRenderTarget(tempID);
- cb.ClearRenderTarget(true, true, new Color(0, 0, 0, 0));
- };
- e.iterate = (CommandBuffer cb, BodyPartRenderer renderer) =>
- {
- Matrix4x4 obj2Wod = Matrix4x4.identity;
- int subMeshCount = 0;
- if (renderer.renderer is SkinnedMeshRenderer)
- {
- SkinnedMeshRenderer smr = renderer.renderer as SkinnedMeshRenderer;
- Vector3 pos = smr.rootBone.transform.position;
- Quaternion rot = smr.rootBone.transform.rotation;
- obj2Wod = MatrixUtility.RotateAndTranslate(pos, rot);
- subMeshCount = smr.sharedMesh.subMeshCount;
- }
- else if (renderer.renderer is MeshRenderer)
- {
- obj2Wod = renderer.renderer.transform.localToWorldMatrix;
- subMeshCount = renderer.renderer.GetComponent<MeshFilter>().sharedMesh.subMeshCount;
- }
-
- for (int i = 0; i < subMeshCount; ++i)
- {
- MaterialEntry mat = ClaimMaterial(StaticDefine.shaders[EShader.SolidColor].name);
- materials.Add(mat);
- mat.material.SetColor("_Color", Color.red);
- mat.material.SetMatrix("_ObjectToWorld", obj2Wod);
-
- cb.DrawRenderer(renderer.renderer, mat.material, i);
- }
- };
- e.afterIterate = (CommandBuffer cb) =>
- {
- MaterialEntry blur = ClaimMaterial(StaticDefine.shaders[EShader.Blur].name);
- materials.Add(blur);
-
- cb.Blit(tempID, BuiltinRenderTextureType.CameraTarget, blur.material);
- };
- e.finishRender = () =>
- {
- for (int i = materials.Count - 1; i >= 0; --i)
- {
- MaterialEntry mat = materials[i];
- ReleaseMaterial(mat);
- materials.RemoveAt(i);
- }
- };
- return e;
- });
- return eff;
- }
-
- public static LensEffect Glitch()
- {
-
- return null;
- }
-
- public static LensEffect OutLine()
- {
-
- return null;
- }
-
- public static LensEffect RimLight()
- {
- return null;
- }
-
- public static LensEffect Decals()
- {
- return null;
- }
-
- #endregion
-}