diff --git a/Assets/Scenes/Oasis/OasisScene.unity b/Assets/Scenes/Oasis/OasisScene.unity index 0b73440..28072af 100644 --- a/Assets/Scenes/Oasis/OasisScene.unity +++ b/Assets/Scenes/Oasis/OasisScene.unity @@ -376,6 +376,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: e0307081c164aaf4a90933f08206654c, type: 3} m_PrefabInstance: {fileID: 16137617} m_PrefabAsset: {fileID: 0} +--- !u!1 &16288157 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7646894525478430618, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &16288159 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 16288157} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.06 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: 0.2, z: 0} --- !u!1001 &16809590 PrefabInstance: m_ObjectHideFlags: 0 @@ -2052,6 +2080,34 @@ Transform: - {fileID: 1986950423} m_Father: {fileID: 284166188} m_LocalEulerAnglesHint: {x: 0, y: 123.226, z: 0} +--- !u!1 &155078580 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6588263712964672146, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &155078582 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155078580} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.05 + m_Height: 0.4 + m_Direction: 1 + m_Center: {x: 0, y: 0.1, z: 0} --- !u!43 &156464892 Mesh: m_ObjectHideFlags: 0 @@ -3183,6 +3239,81 @@ Transform: m_CorrespondingSourceObject: {fileID: 7548273142197716425, guid: 74aeec6002edd31428364ee5a1c44741, type: 3} m_PrefabInstance: {fileID: 212415847} m_PrefabAsset: {fileID: 0} +--- !u!1 &217261638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 217261640} + - component: {fileID: 217261639} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &217261639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217261638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 18dca6cc0a0961049ba14d81b04c5678, type: 3} + m_Name: + m_EditorClassIdentifier: + TestLightTrans: {fileID: 634813099} + TestCharacterTrans: {fileID: 1880735404} + TestW: 1 +--- !u!4 &217261640 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217261638} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -15.869873, y: -8.55654, z: -127.40423} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &221918180 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 726316068312649072, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &221918182 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 221918180} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.06 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: -0.2, z: 0} --- !u!1001 &224593616 PrefabInstance: m_ObjectHideFlags: 0 @@ -3517,6 +3648,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: 6d3e30d12bb32d545b4735d5456a5597, type: 3} m_PrefabInstance: {fileID: 244337793} m_PrefabAsset: {fileID: 0} +--- !u!1 &248131133 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9132198516135759330, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &248131135 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 248131133} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.15 + m_Height: 0.6 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} --- !u!1001 &250216734 PrefabInstance: m_ObjectHideFlags: 0 @@ -4611,6 +4770,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 923183666} m_Modifications: + - target: {fileID: 726847751471669454, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2119775930974504096, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} propertyPath: m_LocalPosition.x value: -2.1526937 @@ -4719,6 +4882,36 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 974238578668270704, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} insertIndex: 5 addedObject: {fileID: 1880735403} + - targetCorrespondingSourceObject: {fileID: 7646894525478430618, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 16288159} + - targetCorrespondingSourceObject: {fileID: 6914555784360000931, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 392442271} + - targetCorrespondingSourceObject: {fileID: 726316068312649072, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 221918182} + - targetCorrespondingSourceObject: {fileID: 5659908917665969580, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 1627800589} + - targetCorrespondingSourceObject: {fileID: 9132198516135759330, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 248131135} + - targetCorrespondingSourceObject: {fileID: 124843582331875961, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 760015824} + - targetCorrespondingSourceObject: {fileID: 6588263712964672146, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 155078582} + - targetCorrespondingSourceObject: {fileID: 2568582057033876513, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 687245747} + - targetCorrespondingSourceObject: {fileID: 4222942335510494491, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 907298662} + - targetCorrespondingSourceObject: {fileID: 6266682369814660209, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + insertIndex: -1 + addedObject: {fileID: 858172680} m_SourcePrefab: {fileID: 100100000, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} --- !u!1001 &314797079 PrefabInstance: @@ -6327,6 +6520,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 7107073529148260412, guid: bc81300db299d274dac8ed5b40994572, type: 3} m_PrefabInstance: {fileID: 390621313} m_PrefabAsset: {fileID: 0} +--- !u!1 &392442269 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6914555784360000931, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &392442271 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 392442269} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.06 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: 0.2, z: 0} --- !u!1001 &393591539 PrefabInstance: m_ObjectHideFlags: 0 @@ -10691,6 +10912,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 7548273142197716425, guid: 0789421bfb938644babec4c8798c163c, type: 3} m_PrefabInstance: {fileID: 683165268} m_PrefabAsset: {fileID: 0} +--- !u!1 &687245745 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2568582057033876513, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &687245747 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687245745} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.08 + m_Height: 0.2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} --- !u!1001 &687906363 PrefabInstance: m_ObjectHideFlags: 0 @@ -11456,6 +11705,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 5060791035251562319, guid: d0951faa8cb830b4780fb7bb92974214, type: 3} m_PrefabInstance: {fileID: 740467519} m_PrefabAsset: {fileID: 0} +--- !u!1 &760015822 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 124843582331875961, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &760015824 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760015822} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.05 + m_Height: 0.4 + m_Direction: 1 + m_Center: {x: 0, y: 0.1, z: 0} --- !u!1001 &766643854 PrefabInstance: m_ObjectHideFlags: 0 @@ -12699,6 +12976,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 1895808927420028092, guid: 7cb78e83e6bfa414f972dedaff480361, type: 3} m_PrefabInstance: {fileID: 857137368} m_PrefabAsset: {fileID: 0} +--- !u!1 &858172678 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 6266682369814660209, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &858172680 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 858172678} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.05 + m_Height: 0.4 + m_Direction: 1 + m_Center: {x: 0, y: -0.1, z: 0} --- !u!1001 &858961373 PrefabInstance: m_ObjectHideFlags: 0 @@ -13250,6 +13555,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: 95cf80858ee0c4940b72f62b17aefd41, type: 3} m_PrefabInstance: {fileID: 896709644} m_PrefabAsset: {fileID: 0} +--- !u!1 &907298660 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4222942335510494491, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &907298662 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 907298660} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.05 + m_Height: 0.4 + m_Direction: 1 + m_Center: {x: 0, y: -0.1, z: 0} --- !u!1001 &911513622 PrefabInstance: m_ObjectHideFlags: 0 @@ -14779,9 +15112,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: targetCamera: {fileID: 2077227757} - showCullingSpheres: 1 + showCullingSpheres: 0 showCameraFrustums: 0 - showCascadeFrustums: 1 + showCascadeFrustums: 0 showMaxCascade: 4 cascadeColors: - {r: 1, g: 0, b: 0, a: 0.5} @@ -24426,6 +24759,34 @@ Transform: m_CorrespondingSourceObject: {fileID: 599465214307944399, guid: 6d3e30d12bb32d545b4735d5456a5597, type: 3} m_PrefabInstance: {fileID: 1619228713} m_PrefabAsset: {fileID: 0} +--- !u!1 &1627800587 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5659908917665969580, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} +--- !u!136 &1627800589 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1627800587} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Radius: 0.06 + m_Height: 0.5 + m_Direction: 1 + m_Center: {x: 0, y: -0.2, z: 0} --- !u!1001 &1630315300 PrefabInstance: m_ObjectHideFlags: 0 @@ -28703,6 +29064,11 @@ MonoBehaviour: analogMovement: 0 cursorLocked: 1 cursorInputForLook: 1 +--- !u!4 &1880735404 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 490576248761790154, guid: c708a3b79cd542b42bbfedb17e213bc1, type: 3} + m_PrefabInstance: {fileID: 304572533} + m_PrefabAsset: {fileID: 0} --- !u!1001 &1886587897 PrefabInstance: m_ObjectHideFlags: 0 @@ -34325,3 +34691,4 @@ SceneRoots: - {fileID: 915045435} - {fileID: 1641590535} - {fileID: 1415788265} + - {fileID: 217261640} diff --git a/Assets/Settings/Mobile/Mobile_High_Renderer.asset b/Assets/Settings/Mobile/Mobile_High_Renderer.asset index 54dde27..8727226 100644 --- a/Assets/Settings/Mobile/Mobile_High_Renderer.asset +++ b/Assets/Settings/Mobile/Mobile_High_Renderer.asset @@ -120,13 +120,32 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d34dacd53c1ace84a8c6ac5ff4afb555, type: 3} m_Name: AutoExposure m_EditorClassIdentifier: - m_Active: 1 + m_Active: 0 settings: HistogramRenderPassEvent: 300 AutoExposureRenderPassEvent: 550 BlitMat: {fileID: 2100000, guid: b04591ed716b35e41857f554d491ef4b, type: 2} ComputeHistogramComputeShader: {fileID: 7200000, guid: b140e27dc74a1fb4d9ae30f8566b8919, type: 3} AutoExposureComputeShader: {fileID: 7200000, guid: 6febb5a945f3510429c58ed4a45c1846, type: 3} +--- !u!114 &-5770411415856688072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1eadf15e5222b6546b5c84a97197f414, type: 3} + m_Name: CapsuleAO + m_EditorClassIdentifier: + m_Active: 1 + settings: + RenderPassEvent: 450 + AmbientIntensity: 0.32 + ShadowIntensity: 0.28 + ShadowSharpness: 0.27 + CapsuleAOMat: {fileID: 2100000, guid: c90d40f0d9828744b916dbed0eed9db6, type: 2} --- !u!114 &-5418649131825517062 MonoBehaviour: m_ObjectHideFlags: 0 @@ -357,7 +376,8 @@ MonoBehaviour: - {fileID: 5808157236138506604} - {fileID: -5418649131825517062} - {fileID: -7143664486661302651} - m_RendererFeatureMap: bc3f630842f2e70dd6a559c442a94bfd4529d15534f2d3de228858dca8d12222716523fbf3439fdb7a327b7bff4bdd446ac59dfa966ffa88ca6373cd5da9013d6cff55ca297e5e908a7b3653203b82383b2141bb05fbe69aec5704e48e2763e90bc6ff9f19caa7686c79a6bb3bb89a50faad0fe75217cdb485d6fa85ff9adc9c + - {fileID: -5770411415856688072} + m_RendererFeatureMap: bc3f630842f2e70dd6a559c442a94bfd4529d15534f2d3de228858dca8d12222716523fbf3439fdb7a327b7bff4bdd446ac59dfa966ffa88ca6373cd5da9013d6cff55ca297e5e908a7b3653203b82383b2141bb05fbe69aec5704e48e2763e90bc6ff9f19caa7686c79a6bb3bb89a50faad0fe75217cdb485d6fa85ff9adc9c38d400e66361ebaf m_UseNativeRenderPass: 0 postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} shaders: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion.meta b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion.meta new file mode 100644 index 0000000..145dfde --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9903d27781b459a4084b253699fff228 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/CapsuleAO.cs b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/CapsuleAO.cs new file mode 100644 index 0000000..57ef4c7 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/CapsuleAO.cs @@ -0,0 +1,129 @@ +using System; +using System.Runtime.InteropServices; +using Unity.Collections.LowLevel.Unsafe; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +namespace X.Rendering.Feature +{ + [StructLayout(LayoutKind.Sequential)] + public struct Capsule + { + public Vector3 a, b; + public float radius; + } + + [StructLayout(LayoutKind.Sequential)] + public struct Character + { + public Vector3 position; + public float radius; + public Vector4 lightDir; //xyz:lightDir, w:根据lightColor 算个系数 + public int startID, endID; + } + + public class CapsuleAO : ScriptableRendererFeature + { + [Serializable] + public class Settings + { + public RenderPassEvent RenderPassEvent = RenderPassEvent.BeforeRenderingTransparents; + public float AmbientIntensity = 0.2f; + public float ShadowIntensity = 0.4f; + public float ShadowSharpness = 20; + public Material CapsuleAOMat; + } + + [SerializeField] + Settings settings; + CapsuleAOPass capsuleAOPass; + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + if (renderingData.cameraData.cameraType == CameraType.Game) + { + renderer.EnqueuePass(capsuleAOPass); + } + } + + public override void Create() + { + capsuleAOPass = new(settings); + } + + class CapsuleAOPass : ScriptableRenderPass, IDisposable + { + private Settings settings; + private GraphicsBuffer capsuleDataBuffer; + private GraphicsBuffer characterDataBuffer; + private ProfilingSampler profiler; + + + + public CapsuleAOPass(Settings settings) + { + this.settings = settings; + profiler = new (nameof(CapsuleAOPass)); + renderPassEvent = settings.RenderPassEvent; + } + + + public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor) + { + base.Configure(cmd, cameraTextureDescriptor); + ConfigureInput(ScriptableRenderPassInput.Depth | ScriptableRenderPassInput.Normal); + } + + public void Dispose() + { + capsuleDataBuffer?.Dispose(); + capsuleDataBuffer = null; + characterDataBuffer?.Dispose(); + characterDataBuffer = null; + } + + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + if (!XRenderFeatureManager.Instance) + { + return; + } + ref var characterArray = ref XRenderFeatureManager.Instance.CharacterArray; + ref var capsuleArray = ref XRenderFeatureManager.Instance.CapsuleArray; + if (!capsuleArray.IsCreated) + { + return; + } + + if(capsuleDataBuffer == null || capsuleDataBuffer.count != capsuleArray.Length) + { + capsuleDataBuffer?.Release(); + capsuleDataBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Structured, capsuleArray.Length, UnsafeUtility.SizeOf()); + } + + if (characterDataBuffer == null || characterDataBuffer.count != characterArray.Length) + { + characterDataBuffer?.Release(); + characterDataBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Structured, characterArray.Length, UnsafeUtility.SizeOf()); + } + + capsuleDataBuffer.SetData(capsuleArray); + characterDataBuffer.SetData(characterArray); + + var cmd = renderingData.commandBuffer; + using var scp = new ProfilingScope(cmd, profiler); + cmd.SetGlobalBuffer("_CapsuleData", capsuleDataBuffer); + cmd.SetGlobalBuffer("_CharacterData", characterDataBuffer); + cmd.SetGlobalInt("_CapsulesCount", capsuleArray.Length); + cmd.SetGlobalInt("_CharactersCount", characterArray.Length); + cmd.SetGlobalFloat("_AmbientIntensity", settings.AmbientIntensity); + cmd.SetGlobalFloat("_ShadowIntensity", settings.ShadowIntensity); + cmd.SetGlobalFloat("_ShadowSharpness", settings.ShadowSharpness); + var renderer = renderingData.cameraData.renderer; + + cmd.SetRenderTarget(renderer.cameraColorTargetHandle, loadAction: RenderBufferLoadAction.Load, storeAction: RenderBufferStoreAction.Store); + cmd.DrawProcedural(Matrix4x4.identity, settings.CapsuleAOMat, 0, MeshTopology.Triangles, 3); + } + } + } +} \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/CapsuleAO.cs.meta b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/CapsuleAO.cs.meta new file mode 100644 index 0000000..bde7602 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/CapsuleAO.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1eadf15e5222b6546b5c84a97197f414 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader.meta b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader.meta new file mode 100644 index 0000000..f432d94 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 77bc625bade3844478f784ee7024ab69 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/CapsuleAO.shader b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/CapsuleAO.shader new file mode 100644 index 0000000..2155d39 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/CapsuleAO.shader @@ -0,0 +1,176 @@ +Shader "XRP/CapsuleAO" +{ + SubShader + { + Pass + { + Cull Off + ZWrite Off + ZTest Always + Blend Zero SrcAlpha + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + + #pragma enable_d3d11_debug_symbols + + #pragma multi_compile _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" + + struct Capsule + { + float3 a; + float3 b; + float radius; + }; + + struct Character + { + float3 position; + float radius; + float4 lightDir; + int startID; + int endID; + }; + + + StructuredBuffer _CapsuleData; + uint _CapsulesCount; + StructuredBuffer _CharacterData; + uint _CharactersCount; + float _AmbientIntensity; + float _ShadowIntensity; + float _ShadowSharpness; + + + Varyings vert(uint vertexID: SV_VertexID) + { + Varyings o; + o.positionCS = GetFullScreenTriangleVertexPosition(vertexID); + o.texcoord = GetFullScreenTriangleTexCoord(vertexID); + return o; + } + + float CalcCapsuleShadowByIndex(float3 ro, float3 rd, uint s, uint e, in float k, float intensity) + { + float shadow = 1.0; + for (uint i = s; i < e; ++i) + { + Capsule c = _CapsuleData[i]; + float3 a = c.a; + float3 b = c.b; + float r = c.radius; + float3 ba = b - a; + float3 oa = ro - a; + + float oad = dot(oa, rd); + float dba = dot(rd, ba); + float baba = dot(ba, ba); + float oaba = dot(oa, ba); + float2 th = float2(-oad * baba + dba * oaba, oaba - oad * dba) / (baba - dba * dba); + + th.x = max(th.x, 0.0001); + th.y = saturate(th.y); + + float3 p = a + ba * th.y; + float3 q = ro + rd * th.x; + float d = length(p - q) - r; + + float s = saturate(k * d / th.x + 0.3); + s = s * s * (3.0 - 2.0 * s); + shadow *= s; + } + + shadow = saturate(lerp(shadow, 1, intensity)); + return saturate(lerp(shadow, 1, _ShadowIntensity)); + } + + float CalcCapsuleOcclusionByIndex(float3 p, float3 n, uint s, uint e, float intensity) + { + float ao = 1.0; + for (uint i = s; i < e; ++i) + { + Capsule capsule = _CapsuleData[i]; + float3 a = capsule.a; + float3 b = capsule.b; + float r = capsule.radius; + float3 ba = b - a; + float3 pa = p - a; + float h = saturate(dot(pa, ba) / dot(ba, ba)); + float3 d = pa - h * ba; + float l = length(d); + float o = 1.0 - max(0.0, dot(-d, n)) * r * r / (l * l * l); + o = sqrt(o * o * o); + ao *= o; + } + + ao = saturate(lerp(ao, 1, intensity)); + return saturate(lerp(ao, 1, _AmbientIntensity)); + } + + bool IsInBounds(float3 p, float3 c, float b, out float intensity) + { + float3 diff = abs(p - c); + if (diff.x < b && diff.y < b && diff.z < b) + { + intensity = saturate(dot(diff, diff) / dot(b, b)); + return true; + } + intensity = 0; + return false; + } + + float CalcAmbientOcclusion(float3 worldPos, float3 worldNormal) + { + float shadow = 1.0; + float occlusion = 1.0; + for (uint i = 0; i < _CharactersCount; ++i) + { + float intensity; + Character c = _CharacterData[i]; + if (IsInBounds(worldPos, c.position, c.radius, intensity)) + { + float tempIntensity = intensity / saturate(1 * smoothstep(0.001, 1, c.lightDir.w)); + float tempShadow = CalcCapsuleShadowByIndex(worldPos, _MainLightPosition.xyz, c.startID, c.endID, _ShadowSharpness, tempIntensity); + shadow = min(shadow, tempShadow); + occlusion *= CalcCapsuleOcclusionByIndex(worldPos, worldNormal, c.startID, c.endID, intensity); + } + } + return shadow * occlusion; + } + + float4 frag(Varyings input) : SV_Target + { + const float2 uv = input.texcoord; + float depth = SampleSceneDepth(uv); + #if !UNITY_REVERSED_Z + depth = depth * 2.0 - 1.0; + #endif + + float2 sceneUV = uv; + sceneUV.y = 1 - sceneUV.y; + sceneUV = sceneUV * 2 - 1; + + float4 worldPos = mul(UNITY_MATRIX_I_VP, float4(sceneUV, depth, 1)); + worldPos /= worldPos.w; + float3 worldNormal = SampleSceneNormals(uv); + float ao = CalcAmbientOcclusion(worldPos.xyz, worldNormal); + + // float4 shadowCoord = TransformWorldToShadowCoord(worldPos.xyz); + // Light mainLight = GetMainLight(shadowCoord, worldPos.xyz, half4(1, 1, 1, 1)); + // //只在阴影处产生AO + // ao = lerp(ao, 1, step(0.5, mainLight.shadowAttenuation)); + + return half4(1, 0, 0, ao); + } + + ENDHLSL + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/CapsuleAO.shader.meta b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/CapsuleAO.shader.meta new file mode 100644 index 0000000..26ba28e --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/CapsuleAO.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1a25077d410e0844dbf6a3067a4967aa +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/XRP_CapsuleAO.mat b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/XRP_CapsuleAO.mat new file mode 100644 index 0000000..e4efe88 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/XRP_CapsuleAO.mat @@ -0,0 +1,29 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRP_CapsuleAO + m_Shader: {fileID: 4800000, guid: 1a25077d410e0844dbf6a3067a4967aa, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Ints: [] + m_Floats: [] + m_Colors: [] + m_BuildTextureStacks: [] diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/XRP_CapsuleAO.mat.meta b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/XRP_CapsuleAO.mat.meta new file mode 100644 index 0000000..c0cec94 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/AmbientOcclusion/Shader/XRP_CapsuleAO.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c90d40f0d9828744b916dbed0eed9db6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/Shaders/SoftShadowMask.shader b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/Shaders/SoftShadowMask.shader index e67245a..0be26de 100644 --- a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/Shaders/SoftShadowMask.shader +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/Shaders/SoftShadowMask.shader @@ -12,7 +12,7 @@ Shader "XRP/SoftShadowMask" #pragma vertex vert #pragma fragment frag - #pragma enable_d3d11_debug_symbols + // #pragma enable_d3d11_debug_symbols #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/XRenderFeatureManager.cs b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/XRenderFeatureManager.cs new file mode 100644 index 0000000..dbf190d --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/XRenderFeatureManager.cs @@ -0,0 +1,116 @@ +using System.Collections.Generic; +using Unity.Collections; +using UnityEngine; +namespace X.Rendering.Feature +{ + public class XRenderFeatureManager : MonoBehaviour + { + public static XRenderFeatureManager Instance + { + get; private set; + } + + #region CapsuleAO + public NativeArray CharacterArray; + public NativeArray CapsuleArray; + + public Transform TestLightTrans; + public Transform TestCharacterTrans; + public float TestW; + + private Dictionary characterTransform2CapsuleCollider = new(); + private int capsuleColliderCount = 0; + + public void AddCapsuleAOCharacter(Transform transform) + { + var oldCapsuleArray = CapsuleArray; + var oldCharacterArray = CharacterArray; + + var capsules = transform.GetComponentsInChildren(true); + characterTransform2CapsuleCollider.Add(transform, capsules); + capsuleColliderCount += capsules.Length; + CapsuleArray = new (capsuleColliderCount, Allocator.Persistent); + CharacterArray = new (characterTransform2CapsuleCollider.Count, Allocator.Persistent); + + if (oldCharacterArray.IsCreated) + { + oldCharacterArray.Dispose(); + oldCapsuleArray.Dispose(); + } + } + + public void RemoveCapsuleAOCharacter(Transform transform) + { + capsuleColliderCount -= characterTransform2CapsuleCollider[transform].Length; + characterTransform2CapsuleCollider.Remove(transform); + var oldCapsuleArray = CapsuleArray; + var oldCharacterArray = CharacterArray; + + CapsuleArray = new(capsuleColliderCount, Allocator.Persistent); + CharacterArray = new(characterTransform2CapsuleCollider.Count, Allocator.Persistent); + + if (oldCharacterArray.IsCreated) + { + oldCharacterArray.Dispose(); + oldCapsuleArray.Dispose(); + } + } + + #endregion + + private void Awake() + { + Instance = this; + } + + + private void Start() + { + AddCapsuleAOCharacter(TestCharacterTrans); + } + + private void Update() + { + Transform transform = null; + int capsuleArrayIndex = 0; + int characterArrayIndex = 0; + int startID = 0; + Instance = this; + + foreach (var item in characterTransform2CapsuleCollider) + { + for (int i = 0; i < item.Value.Length; i++) + { + var capsule = item.Value[i]; + //capsule.direction + var a = capsule.center - new Vector3(0, capsule.height / 2, 0); + var b = capsule.center + new Vector3(0, capsule.height / 2, 0); + a = capsule.transform.TransformPoint(a); + b = capsule.transform.TransformPoint(b); + CapsuleArray[capsuleArrayIndex++] = new() + { + a = a, + b = b, + radius = capsule.radius, + }; + } + + if (transform != item.Key) + { + transform = item.Key; + CharacterArray[characterArrayIndex++] = new() + { + position = transform.position, + radius = 5, + lightDir = -new Vector4(TestLightTrans.position.x, TestLightTrans.position.y, TestLightTrans.position.z, -TestW), + startID = startID, + endID = capsuleArrayIndex, + }; + startID = capsuleArrayIndex; + } + + } + } + + } +} diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/XRenderFeatureManager.cs.meta b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/XRenderFeatureManager.cs.meta new file mode 100644 index 0000000..fe1387a --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/XRenderFeatures/XRenderFeatureManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18dca6cc0a0961049ba14d81b04c5678 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: