From b5645c779a3e3c4ca758400cd9a718a7bc0c2bc6 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 20 Sep 2021 22:44:08 +0800 Subject: *command buffer --- Assets/Art/Models/Characters/Default.meta | 8 + Assets/Art/Models/Characters/Erika2.meta | 8 + .../AbstractWiresEffect/Scripts.meta | 8 + Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta | 8 + Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta | 8 + Assets/Bundle/Materials/Common.meta | 8 - Assets/Bundle/Materials/Unit/Effect.meta | 8 + Assets/Bundle/Models.meta | 8 + Assets/Bundle/Prefabs.meta | 8 + Assets/Bundle/Scenes/Demo/AnimationEditScene.unity | 94 +----------- Assets/Bundle/Shaders/Unit/Effect.meta | 8 + Assets/Bundle/UI.meta | 8 + .../Unit/Monster/Robots_Prowler/ActionData.meta | 8 + .../Unit/Monster/Robots_Prowler/UnitData.meta | 8 + Assets/Bundle/Unit/NPC.meta | 8 + Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta | 8 - Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta | 8 + Assets/Bundle/Unit/PC/Erika/Models.meta | 8 + Assets/Bundle/Unit/PC/Erika/UnitData.meta | 8 + Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta | 8 - Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta | 8 + .../Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta | 8 + .../Bundle/Unit/PC/ErikaCyborg/AnimationData.meta | 8 + .../Unit/PC/ErikaCyborg/Materials/AfterImage.meta | 8 + .../Unit/PC/ErikaCyborg/Materials/Normal.meta | 8 + Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta | 8 + Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta | 8 + Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta | 8 + Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta | 8 + Assets/Bundle/Unit/Prop.meta | 8 + Assets/Data/RootMotionData.meta | 8 - Assets/Scripts/Camera/CustomRenderingPipeline.cs | 99 ++++++++++++ .../Scripts/Camera/CustomRenderingPipeline.cs.meta | 11 ++ Assets/Scripts/Camera/LensEffectHandler.cs | 35 ----- Assets/Scripts/Camera/LensEffectHandler.cs.meta | 11 -- Assets/Scripts/Camera/MainCamera.cs | 13 +- Assets/Scripts/Curve3D.meta | 8 + Assets/Scripts/Drone.meta | 8 + Assets/Scripts/Managers/Physics.meta | 8 + Assets/Scripts/Props.meta | 8 + Assets/Scripts/Robot.meta | 8 + Assets/Scripts/Scene.meta | 8 - Assets/Scripts/Unit/AI/Actions.meta | 8 + Assets/Scripts/Unit/AI/Conditionals.meta | 8 + Assets/Scripts/Unit/Components/UnitLensEffect.cs | 129 +++++++++++----- Assets/Scripts/Unit/LensEffect/LensEffectBase.cs | 101 +++++++++++++ .../Scripts/Unit/LensEffect/LensEffectBase.cs.meta | 11 ++ .../Scripts/Unit/LensEffect/LensEffect_Glitch.cs | 18 +++ .../Unit/LensEffect/LensEffect_Glitch.cs.meta | 11 ++ .../Unit/LensEffect/LensEffect_MotionBlur.cs | 64 ++++++++ .../Unit/LensEffect/LensEffect_MotionBlur.cs.meta | 11 ++ Assets/Scripts/Unit/LensEffect/LensEffects.cs | 166 --------------------- Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta | 11 -- 53 files changed, 687 insertions(+), 402 deletions(-) create mode 100644 Assets/Art/Models/Characters/Default.meta create mode 100644 Assets/Art/Models/Characters/Erika2.meta create mode 100644 Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta create mode 100644 Assets/Art/Vfx/GrabSquaresEffect/Scripts.meta create mode 100644 Assets/Art/Vfx/GrabSquaresEffect/Shaders.meta delete mode 100644 Assets/Bundle/Materials/Common.meta create mode 100644 Assets/Bundle/Materials/Unit/Effect.meta create mode 100644 Assets/Bundle/Models.meta create mode 100644 Assets/Bundle/Prefabs.meta create mode 100644 Assets/Bundle/Shaders/Unit/Effect.meta create mode 100644 Assets/Bundle/UI.meta create mode 100644 Assets/Bundle/Unit/Monster/Robots_Prowler/ActionData.meta create mode 100644 Assets/Bundle/Unit/Monster/Robots_Prowler/UnitData.meta create mode 100644 Assets/Bundle/Unit/NPC.meta delete mode 100644 Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta create mode 100644 Assets/Bundle/Unit/PC/Erika/Materials/Normal.meta create mode 100644 Assets/Bundle/Unit/PC/Erika/Models.meta create mode 100644 Assets/Bundle/Unit/PC/Erika/UnitData.meta delete mode 100644 Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/ActionData.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/AnimationClip.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/AnimationData.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Materials/AfterImage.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Materials/Normal.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Models.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/RootMotion.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/UnitData.meta create mode 100644 Assets/Bundle/Unit/PC/ErikaCyborg/Weapons.meta create mode 100644 Assets/Bundle/Unit/Prop.meta delete mode 100644 Assets/Data/RootMotionData.meta create mode 100644 Assets/Scripts/Camera/CustomRenderingPipeline.cs create mode 100644 Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta delete mode 100644 Assets/Scripts/Camera/LensEffectHandler.cs delete mode 100644 Assets/Scripts/Camera/LensEffectHandler.cs.meta create mode 100644 Assets/Scripts/Curve3D.meta create mode 100644 Assets/Scripts/Drone.meta create mode 100644 Assets/Scripts/Managers/Physics.meta create mode 100644 Assets/Scripts/Props.meta create mode 100644 Assets/Scripts/Robot.meta delete mode 100644 Assets/Scripts/Scene.meta create mode 100644 Assets/Scripts/Unit/AI/Actions.meta create mode 100644 Assets/Scripts/Unit/AI/Conditionals.meta create mode 100644 Assets/Scripts/Unit/LensEffect/LensEffectBase.cs create mode 100644 Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta create mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs create mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_Glitch.cs.meta create mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs create mode 100644 Assets/Scripts/Unit/LensEffect/LensEffect_MotionBlur.cs.meta delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffects.cs delete mode 100644 Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta (limited to 'Assets') diff --git a/Assets/Art/Models/Characters/Default.meta b/Assets/Art/Models/Characters/Default.meta new file mode 100644 index 00000000..43499fc7 --- /dev/null +++ b/Assets/Art/Models/Characters/Default.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8a40298dd4efd14c9f90a63734ca39b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Models/Characters/Erika2.meta b/Assets/Art/Models/Characters/Erika2.meta new file mode 100644 index 00000000..fd7369d9 --- /dev/null +++ b/Assets/Art/Models/Characters/Erika2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 077f81003f9fc564791cce182048c2b0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta new file mode 100644 index 00000000..b76e98a5 --- /dev/null +++ b/Assets/Art/Vfx/GrabSquaresEffect/AbstractWiresEffect/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20381b3eecfbfe34a9d9222868969d29 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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/Materials/Common.meta b/Assets/Bundle/Materials/Common.meta deleted file mode 100644 index 2dc8c0c1..00000000 --- a/Assets/Bundle/Materials/Common.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ad166fa278dd3ad41a25aaeec66d37ab -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Bundle/Materials/Unit/Effect.meta b/Assets/Bundle/Materials/Unit/Effect.meta new file mode 100644 index 00000000..fdf8c1db --- /dev/null +++ b/Assets/Bundle/Materials/Unit/Effect.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0525fec1eb7cc94458170e9e106955d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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/Effect.meta b/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta deleted file mode 100644 index 855459bb..00000000 --- a/Assets/Bundle/Unit/PC/Erika/Materials/Effect.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3ab09dc0a18f20b4ea29507887e11428 -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/Erika/Weapons/Materials.meta b/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta deleted file mode 100644 index be6badd6..00000000 --- a/Assets/Bundle/Unit/PC/Erika/Weapons/Materials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2c46a5a23283c7d428ae8bb13663ab6a -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/Data/RootMotionData.meta b/Assets/Data/RootMotionData.meta deleted file mode 100644 index 14abf402..00000000 --- a/Assets/Data/RootMotionData.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5cfee9bde9754254f83510f88dd2a19b -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 RenderingEventToCameraEvent = new Dictionary { + {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(); + } + + 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/CustomRenderingPipeline.cs.meta b/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta new file mode 100644 index 00000000..1a3cac2c --- /dev/null +++ b/Assets/Scripts/Camera/CustomRenderingPipeline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aaca34c56e4ce4f41a13d30db14959aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: 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(); - } - - private void OnPreCull() - { - onPreCull?.Invoke(); - } - - private void OnPreRender() - { - onPreRender?.Invoke(); - } - - private void OnPostRender() - { - onPostRender?.Invoke(); - } - -} diff --git a/Assets/Scripts/Camera/LensEffectHandler.cs.meta b/Assets/Scripts/Camera/LensEffectHandler.cs.meta deleted file mode 100644 index cf914200..00000000 --- a/Assets/Scripts/Camera/LensEffectHandler.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 058dffdf2041d7d43902a7c301296bb2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: 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 { #region inspector @@ -32,14 +33,14 @@ public class MainCamera : SingletonMB [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(); - return m_LensEffectHandler; + if (m_CustomRenderingPipeline == null) + m_CustomRenderingPipeline = this.gameObject.GetOrAddComponent(); + 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 m_CommandBufferPool; - private List m_Effects; + private List m_Effects; - private CommandBuffer m_CommandBuffer; - - static UnitLensEffect() + private Dictionary m_InUseCommandBuffers; + private Dictionary m_CachedCommandBuffers; + + static UnitLensEffect() { m_CommandBufferPool = new ObjectPool(null, null); } @@ -28,8 +30,10 @@ public class UnitLensEffect : UnitComponent base.Initialize(); renderers = new List(); - m_Effects = new List(); - } + m_Effects = new List(); + m_InUseCommandBuffers = new Dictionary(); + m_CachedCommandBuffers = new Dictionary(); + } 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> m_MaterailPool = new Dictionary>(); + + private List m_InUseMaterials = new List(); + + private static MaterialEntry _ClaimMaterial(string shader) + { + List 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 mats; + if (!m_MaterailPool.TryGetValue(entry.shader, out mats)) + { + mats = new List(); + 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/LensEffectBase.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta new file mode 100644 index 00000000..d0d0d81b --- /dev/null +++ b/Assets/Scripts/Unit/LensEffect/LensEffectBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 548560041d20266478078df50edab4e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: 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().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> m_MaterailPool; - - public static LensEffect Create(Func create) - { - return create(); - } - - static LensEffect() - { - m_MaterailPool = new Dictionary>(); - } - - static MaterialEntry ClaimMaterial(string shader) - { - List 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 mats; - if (!m_MaterailPool.TryGetValue(entry.shader, out mats)) - { - mats = new List(); - m_MaterailPool.Add(entry.shader, mats); - } - mats.Add(entry); - } - - #region LensEffects - - public static LensEffect MotionBlur() - { - LensEffect eff = LensEffect.Create(() => - { - LensEffect e = new LensEffect(); - - List materials = ListPool.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().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 -} diff --git a/Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta b/Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta deleted file mode 100644 index ec32bb75..00000000 --- a/Assets/Scripts/Unit/LensEffect/LensEffects.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c5acf04ae1e72ed42a1d20ee038ac73e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -- cgit v1.1-26-g67d0