From fa4474f6d4b7de4712807dbfe12e27667245b02e Mon Sep 17 00:00:00 2001 From: MelekTaus Moribundus Date: Mon, 22 Jun 2026 12:03:24 +0200 Subject: [PATCH] Initial commit: Unity mesh painter project Unity 6000.3 (URP) project with live mesh painting in play mode. - MeshPainter.cs: paint a SkinnedMesh with the mouse, seamless across UV islands via 3D-space painting, GPU and CPU backends (switchable), edge-padding/dilation against bilinear seam bleed - FrameRateLimiter.cs: simple frame rate limiting component - MeshPaintBrush / MeshPaintDilate shaders for the GPU paint path - Unity-specific .gitignore and .gitattributes Co-Authored-By: Claude Opus 4.8 --- .gitattributes | 49 + .gitignore | 79 ++ Assets/InputSystem_Actions.inputactions | 1057 +++++++++++++++++ Assets/InputSystem_Actions.inputactions.meta | 14 + Assets/Scenes.meta | 8 + Assets/Scenes/SampleScene.unity | 581 +++++++++ Assets/Scenes/SampleScene.unity.meta | 7 + Assets/Scripts.meta | 8 + Assets/Scripts/FrameRateLimiter.cs | 86 ++ Assets/Scripts/FrameRateLimiter.cs.meta | 2 + Assets/Scripts/MeshPainter.cs | 760 ++++++++++++ Assets/Scripts/MeshPainter.cs.meta | 2 + Assets/Settings.meta | 8 + Assets/Settings/DefaultVolumeProfile.asset | 982 +++++++++++++++ .../Settings/DefaultVolumeProfile.asset.meta | 8 + Assets/Settings/Mobile_RPAsset.asset | 143 +++ Assets/Settings/Mobile_RPAsset.asset.meta | 8 + Assets/Settings/Mobile_Renderer.asset | 52 + Assets/Settings/Mobile_Renderer.asset.meta | 8 + Assets/Settings/PC_RPAsset.asset | 143 +++ Assets/Settings/PC_RPAsset.asset.meta | 8 + Assets/Settings/PC_Renderer.asset | 95 ++ Assets/Settings/PC_Renderer.asset.meta | 8 + Assets/Settings/SampleSceneProfile.asset | 185 +++ Assets/Settings/SampleSceneProfile.asset.meta | 8 + ...niversalRenderPipelineGlobalSettings.asset | 433 +++++++ ...salRenderPipelineGlobalSettings.asset.meta | 8 + Assets/Shaders.meta | 8 + Assets/Shaders/MeshPaintBrush.shader | 74 ++ Assets/Shaders/MeshPaintBrush.shader.meta | 9 + Assets/Shaders/MeshPaintDilate.shader | 72 ++ Assets/Shaders/MeshPaintDilate.shader.meta | 9 + Assets/paintman_UV.FBX | Bin 0 -> 150752 bytes Assets/paintman_UV.FBX.meta | 110 ++ Packages/manifest.json | 32 + Packages/packages-lock.json | 375 ++++++ ProjectSettings/AudioManager.asset | 19 + ProjectSettings/ClusterInputManager.asset | 6 + ProjectSettings/DynamicsManager.asset | 36 + ProjectSettings/EditorBuildSettings.asset | 13 + ProjectSettings/EditorSettings.asset | 50 + ProjectSettings/GraphicsSettings.asset | 69 ++ ProjectSettings/InputManager.asset | 487 ++++++++ ProjectSettings/MemorySettings.asset | 35 + ProjectSettings/MultiplayerManager.asset | 7 + ProjectSettings/NavMeshAreas.asset | 91 ++ ProjectSettings/PackageManagerSettings.asset | 43 + ProjectSettings/Physics2DSettings.asset | 56 + ProjectSettings/PresetManager.asset | 7 + ProjectSettings/ProjectSettings.asset | 943 +++++++++++++++ ProjectSettings/ProjectVersion.txt | 2 + ProjectSettings/QualitySettings.asset | 134 +++ ProjectSettings/SceneTemplateSettings.json | 121 ++ ProjectSettings/ShaderGraphSettings.asset | 19 + ProjectSettings/TagManager.asset | 76 ++ ProjectSettings/TimeManager.asset | 9 + ProjectSettings/URPProjectSettings.asset | 16 + ProjectSettings/UnityConnectSettings.asset | 40 + ProjectSettings/VFXManager.asset | 12 + ProjectSettings/VersionControlSettings.asset | 8 + ProjectSettings/XRSettings.asset | 10 + 61 files changed, 7748 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Assets/InputSystem_Actions.inputactions create mode 100644 Assets/InputSystem_Actions.inputactions.meta create mode 100644 Assets/Scenes.meta create mode 100644 Assets/Scenes/SampleScene.unity create mode 100644 Assets/Scenes/SampleScene.unity.meta create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/FrameRateLimiter.cs create mode 100644 Assets/Scripts/FrameRateLimiter.cs.meta create mode 100644 Assets/Scripts/MeshPainter.cs create mode 100644 Assets/Scripts/MeshPainter.cs.meta create mode 100644 Assets/Settings.meta create mode 100644 Assets/Settings/DefaultVolumeProfile.asset create mode 100644 Assets/Settings/DefaultVolumeProfile.asset.meta create mode 100644 Assets/Settings/Mobile_RPAsset.asset create mode 100644 Assets/Settings/Mobile_RPAsset.asset.meta create mode 100644 Assets/Settings/Mobile_Renderer.asset create mode 100644 Assets/Settings/Mobile_Renderer.asset.meta create mode 100644 Assets/Settings/PC_RPAsset.asset create mode 100644 Assets/Settings/PC_RPAsset.asset.meta create mode 100644 Assets/Settings/PC_Renderer.asset create mode 100644 Assets/Settings/PC_Renderer.asset.meta create mode 100644 Assets/Settings/SampleSceneProfile.asset create mode 100644 Assets/Settings/SampleSceneProfile.asset.meta create mode 100644 Assets/Settings/UniversalRenderPipelineGlobalSettings.asset create mode 100644 Assets/Settings/UniversalRenderPipelineGlobalSettings.asset.meta create mode 100644 Assets/Shaders.meta create mode 100644 Assets/Shaders/MeshPaintBrush.shader create mode 100644 Assets/Shaders/MeshPaintBrush.shader.meta create mode 100644 Assets/Shaders/MeshPaintDilate.shader create mode 100644 Assets/Shaders/MeshPaintDilate.shader.meta create mode 100644 Assets/paintman_UV.FBX create mode 100644 Assets/paintman_UV.FBX.meta create mode 100644 Packages/manifest.json create mode 100644 Packages/packages-lock.json create mode 100644 ProjectSettings/AudioManager.asset create mode 100644 ProjectSettings/ClusterInputManager.asset create mode 100644 ProjectSettings/DynamicsManager.asset create mode 100644 ProjectSettings/EditorBuildSettings.asset create mode 100644 ProjectSettings/EditorSettings.asset create mode 100644 ProjectSettings/GraphicsSettings.asset create mode 100644 ProjectSettings/InputManager.asset create mode 100644 ProjectSettings/MemorySettings.asset create mode 100644 ProjectSettings/MultiplayerManager.asset create mode 100644 ProjectSettings/NavMeshAreas.asset create mode 100644 ProjectSettings/PackageManagerSettings.asset create mode 100644 ProjectSettings/Physics2DSettings.asset create mode 100644 ProjectSettings/PresetManager.asset create mode 100644 ProjectSettings/ProjectSettings.asset create mode 100644 ProjectSettings/ProjectVersion.txt create mode 100644 ProjectSettings/QualitySettings.asset create mode 100644 ProjectSettings/SceneTemplateSettings.json create mode 100644 ProjectSettings/ShaderGraphSettings.asset create mode 100644 ProjectSettings/TagManager.asset create mode 100644 ProjectSettings/TimeManager.asset create mode 100644 ProjectSettings/URPProjectSettings.asset create mode 100644 ProjectSettings/UnityConnectSettings.asset create mode 100644 ProjectSettings/VFXManager.asset create mode 100644 ProjectSettings/VersionControlSettings.asset create mode 100644 ProjectSettings/XRSettings.asset diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5380ccb --- /dev/null +++ b/.gitattributes @@ -0,0 +1,49 @@ +# Unity .gitattributes +# Normalize line endings: text files use LF in the repo, native on checkout. +* text=auto + +# Unity YAML / text-based assets (serialized as text) +*.cs text diff=csharp +*.shader text +*.cginc text +*.hlsl text +*.compute text +*.meta text eol=lf +*.unity text eol=lf merge=union +*.asset text eol=lf merge=union +*.prefab text eol=lf merge=union +*.mat text eol=lf merge=union +*.anim text eol=lf merge=union +*.controller text eol=lf merge=union +*.physicMaterial text eol=lf merge=union +*.inputactions text eol=lf +*.json text +*.txt text +*.md text + +# Binary assets — never apply line-ending or text conversion +*.fbx binary +*.FBX binary +*.obj binary +*.blend binary +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.tga binary +*.psd binary +*.tif binary +*.tiff binary +*.exr binary +*.hdr binary +*.wav binary +*.mp3 binary +*.ogg binary +*.aif binary +*.ttf binary +*.otf binary +*.unitypackage binary +*.dll binary +*.so binary +*.a binary +*.dylib binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ecded6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,79 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ +/[Mm]emoryCaptures/ + +# Recordings can get excessive in size +/[Rr]ecordings/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.slnx +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage +*.app + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* + +# Visual Studio Code settings +.vscode/ + +# Rider settings +.idea/ + +# VS configuration +.vsconfig diff --git a/Assets/InputSystem_Actions.inputactions b/Assets/InputSystem_Actions.inputactions new file mode 100644 index 0000000..1a12cb9 --- /dev/null +++ b/Assets/InputSystem_Actions.inputactions @@ -0,0 +1,1057 @@ +{ + "name": "InputSystem_Actions", + "maps": [ + { + "name": "Player", + "id": "df70fa95-8a34-4494-b137-73ab6b9c7d37", + "actions": [ + { + "name": "Move", + "type": "Value", + "id": "351f2ccd-1f9f-44bf-9bec-d62ac5c5f408", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Look", + "type": "Value", + "id": "6b444451-8a00-4d00-a97e-f47457f736a8", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Attack", + "type": "Button", + "id": "6c2ab1b8-8984-453a-af3d-a3c78ae1679a", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Interact", + "type": "Button", + "id": "852140f2-7766-474d-8707-702459ba45f3", + "expectedControlType": "Button", + "processors": "", + "interactions": "Hold", + "initialStateCheck": false + }, + { + "name": "Crouch", + "type": "Button", + "id": "27c5f898-bc57-4ee1-8800-db469aca5fe3", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Jump", + "type": "Button", + "id": "f1ba0d36-48eb-4cd5-b651-1c94a6531f70", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Previous", + "type": "Button", + "id": "2776c80d-3c14-4091-8c56-d04ced07a2b0", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Next", + "type": "Button", + "id": "b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Sprint", + "type": "Button", + "id": "641cd816-40e6-41b4-8c3d-04687c349290", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403", + "path": "/leftStick", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "WASD", + "id": "00ca640b-d935-4593-8157-c05846ea39b3", + "path": "Dpad", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9", + "path": "/w", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9", + "path": "/upArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "320bffee-a40b-4347-ac70-c210eb8bc73a", + "path": "/s", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1", + "path": "/downArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc", + "path": "/a", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "2e46982e-44cc-431b-9f0b-c11910bf467a", + "path": "/leftArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400", + "path": "/d", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "77bff152-3580-4b21-b6de-dcd0c7e41164", + "path": "/rightArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8", + "path": "/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3ea4d645-4504-4529-b061-ab81934c3752", + "path": "/stick", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235", + "path": "/rightStick", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8c8e490b-c610-4785-884f-f04217b23ca4", + "path": "/delta", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse;Touch", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3e5f5442-8668-4b27-a940-df99bad7e831", + "path": "/{Hatswitch}", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91", + "path": "/buttonWest", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "05f6913d-c316-48b2-a6bb-e225f14c7960", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "886e731e-7071-4ae4-95c0-e61739dad6fd", + "path": "/primaryTouch/tap", + "interactions": "", + "processors": "", + "groups": ";Touch", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ee3d0cd2-254e-47a7-a8cb-bc94d9658c54", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8255d333-5683-4943-a58a-ccb207ff1dce", + "path": "/{PrimaryAction}", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7", + "path": "/enter", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "cbac6039-9c09-46a1-b5f2-4e5124ccb5ed", + "path": "/2", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e15ca19d-e649-4852-97d5-7fe8ccc44e94", + "path": "/dpad/right", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f2e9ba44-c423-42a7-ad56-f20975884794", + "path": "/leftShift", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6", + "path": "/leftStickPress", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d8bf24bf-3f2f-4160-a97c-38ec1eb520ba", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "eb40bb66-4559-4dfa-9a2f-820438abb426", + "path": "/space", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6", + "path": "/buttonSouth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "603f3daf-40bd-4854-8724-93e8017f59e3", + "path": "/secondaryButton", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1534dc16-a6aa-499d-9c3a-22b47347b52a", + "path": "/1", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Previous", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "25060bbd-a3a6-476e-8fba-45ae484aad05", + "path": "/dpad/left", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Previous", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1c04ea5f-b012-41d1-a6f7-02e963b52893", + "path": "/e", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b3f66d0b-7751-423f-908b-a11c5bd95930", + "path": "/buttonNorth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4f4649ac-64a8-4a73-af11-b3faef356a4d", + "path": "/buttonEast", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Crouch", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "36e52cba-0905-478e-a818-f4bfcb9f3b9a", + "path": "/c", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Crouch", + "isComposite": false, + "isPartOfComposite": false + } + ] + }, + { + "name": "UI", + "id": "272f6d14-89ba-496f-b7ff-215263d3219f", + "actions": [ + { + "name": "Navigate", + "type": "PassThrough", + "id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Submit", + "type": "Button", + "id": "7607c7b6-cd76-4816-beef-bd0341cfe950", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Cancel", + "type": "Button", + "id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Point", + "type": "PassThrough", + "id": "32b35790-4ed0-4e9a-aa41-69ac6d629449", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Click", + "type": "PassThrough", + "id": "3c7022bf-7922-4f7c-a998-c437916075ad", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "RightClick", + "type": "PassThrough", + "id": "44b200b1-1557-4083-816c-b22cbdf77ddf", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "MiddleClick", + "type": "PassThrough", + "id": "dad70c86-b58c-4b17-88ad-f5e53adf419e", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "ScrollWheel", + "type": "PassThrough", + "id": "0489e84a-4833-4c40-bfae-cea84b696689", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "TrackedDevicePosition", + "type": "PassThrough", + "id": "24908448-c609-4bc3-a128-ea258674378a", + "expectedControlType": "Vector3", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "TrackedDeviceOrientation", + "type": "PassThrough", + "id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be", + "expectedControlType": "Quaternion", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "Gamepad", + "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf", + "path": "/leftStick/up", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81", + "path": "/rightStick/up", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "2db08d65-c5fb-421b-983f-c71163608d67", + "path": "/leftStick/down", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "58748904-2ea9-4a80-8579-b500e6a76df8", + "path": "/rightStick/down", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "8ba04515-75aa-45de-966d-393d9bbd1c14", + "path": "/leftStick/left", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921", + "path": "/rightStick/left", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "fcd248ae-a788-4676-a12e-f4d81205600b", + "path": "/leftStick/right", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20", + "path": "/rightStick/right", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90", + "path": "/dpad", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "Joystick", + "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "3db53b26-6601-41be-9887-63ac74e79d19", + "path": "/stick/up", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f", + "path": "/stick/down", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835", + "path": "/stick/left", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc", + "path": "/stick/right", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Keyboard", + "id": "ff527021-f211-4c02-933e-5976594c46ed", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0", + "path": "/w", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "eb480147-c587-4a33-85ed-eb0ab9942c43", + "path": "/upArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "2bf42165-60bc-42ca-8072-8c13ab40239b", + "path": "/s", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac", + "path": "/downArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "74214943-c580-44e4-98eb-ad7eebe17902", + "path": "/a", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "cea9b045-a000-445b-95b8-0c171af70a3b", + "path": "/leftArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "8607c725-d935-4808-84b1-8354e29bab63", + "path": "/d", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b", + "path": "/rightArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc", + "path": "*/{Submit}", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", + "action": "Submit", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e", + "path": "*/{Cancel}", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", + "action": "Cancel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "5693e57a-238a-46ed-b5ae-e64e6e574302", + "path": "/touch*/position", + "interactions": "", + "processors": "", + "groups": "Touch", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace", + "path": "/tip", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59", + "path": "/touch*/press", + "interactions": "", + "processors": "", + "groups": "Touch", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "38c99815-14ea-4617-8627-164d27641299", + "path": "/scroll", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "ScrollWheel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4c191405-5738-4d4b-a523-c6a301dbf754", + "path": "/rightButton", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "RightClick", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "24066f69-da47-44f3-a07e-0015fb02eb2e", + "path": "/middleButton", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "MiddleClick", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77", + "path": "/devicePosition", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "TrackedDevicePosition", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb", + "path": "/deviceRotation", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "TrackedDeviceOrientation", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], + "controlSchemes": [ + { + "name": "Keyboard&Mouse", + "bindingGroup": "Keyboard&Mouse", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + }, + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Gamepad", + "bindingGroup": "Gamepad", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Touch", + "bindingGroup": "Touch", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Joystick", + "bindingGroup": "Joystick", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "XR", + "bindingGroup": "XR", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + } + ] +} \ No newline at end of file diff --git a/Assets/InputSystem_Actions.inputactions.meta b/Assets/InputSystem_Actions.inputactions.meta new file mode 100644 index 0000000..6b38b04 --- /dev/null +++ b/Assets/InputSystem_Actions.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 052faaac586de48259a63d0c4782560b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 0 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..334f927 --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a61cc0054eb1e0b47b62aa8ee533c6cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity new file mode 100644 index 0000000..8d5ec2e --- /dev/null +++ b/Assets/Scenes/SampleScene.unity @@ -0,0 +1,581 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &330585543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 330585546} + - component: {fileID: 330585545} + - component: {fileID: 330585544} + - component: {fileID: 330585547} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &330585544 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 +--- !u!20 &330585545 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.13333334, g: 0.2, b: 0.26666668, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &330585546 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.67, z: -1.3} + 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!114 &330585547 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330585543} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 + m_Version: 2 +--- !u!1 &410087039 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 410087041} + - component: {fileID: 410087040} + - component: {fileID: 410087042} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &410087040 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410087039} + m_Enabled: 1 + serializedVersion: 12 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize2D: {x: 10, y: 10} + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 5000 + m_UseColorTemperature: 1 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &410087041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410087039} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &410087042 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410087039} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_CustomShadowLayers: 0 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 1 + m_RenderingLayersMask: + serializedVersion: 0 + m_Bits: 1 + m_ShadowRenderingLayersMask: + serializedVersion: 0 + m_Bits: 1 + m_Version: 4 + m_LightLayerMask: 1 + m_ShadowLayerMask: 1 + m_RenderingLayers: 1 + m_ShadowRenderingLayers: 1 +--- !u!1 &682237518 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: -8278657895335465921, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + m_PrefabInstance: {fileID: 821516643} + m_PrefabAsset: {fileID: 0} +--- !u!114 &682237521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 682237518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5fc799adb27d5ea45990b5522b75ddda, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::MeshPainter + useGpu: 1 + brushColor: {r: 0, g: 0, b: 0, a: 1} + brushSize: 2 + textureSize: 1024 + baseColor: {r: 0.8, g: 0.8, b: 0.8, a: 1} + paddingTexels: 1 + paintCamera: {fileID: 0} + updateColliderEveryFrame: 0 + brushShader: {fileID: 0} + dilateShader: {fileID: 0} +--- !u!1001 &821516643 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -90 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + propertyPath: m_Name + value: paintman_UV + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: -8278657895335465921, guid: 554c0bdf86263754d862d7effd04045b, type: 3} + insertIndex: -1 + addedObject: {fileID: 682237521} + m_SourcePrefab: {fileID: 100100000, guid: 554c0bdf86263754d862d7effd04045b, type: 3} +--- !u!1 &832575517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832575519} + - component: {fileID: 832575518} + m_Layer: 0 + m_Name: Global Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &832575518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832575517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2} +--- !u!4 &832575519 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832575517} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + 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 &2009475132 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2009475134} + - component: {fileID: 2009475133} + m_Layer: 0 + m_Name: FrameRateLimiter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2009475133 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009475132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dd08e354312b3b14d8f2573ae830c513, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::FrameRateLimiter + limitFrameRate: 1 + targetFps: 60 + disableVSyncWhenLimiting: 1 + vSyncCountWhenUnlimited: 0 + toggleLimitKey: 94 + cyclePresetKey: 95 + presets: 1e0000003c0000007800000090000000 +--- !u!4 &2009475134 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2009475132} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + 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!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 2009475134} + - {fileID: 330585546} + - {fileID: 410087041} + - {fileID: 832575519} + - {fileID: 821516643} diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 0000000..9531828 --- /dev/null +++ b/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 99c9720ab356a0642a771bea13969a05 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..7acba05 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6815f328a3dc14a4cbc94ae4f77216b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/FrameRateLimiter.cs b/Assets/Scripts/FrameRateLimiter.cs new file mode 100644 index 0000000..638a203 --- /dev/null +++ b/Assets/Scripts/FrameRateLimiter.cs @@ -0,0 +1,86 @@ +using UnityEngine; + +/// +/// Limits the game's frame rate. +/// +/// Sets and adjusts VSync +/// () accordingly. IMPORTANT: as long as +/// VSync is active, Unity ignores targetFrameRate - the limit then only takes +/// effect when VSync is off. This script therefore disables VSync automatically +/// as soon as an FPS limit is set (see ). +/// +/// Changes apply live: in the editor via OnValidate (also in Play mode while +/// tweaking values in the Inspector). +/// +/// Simply attach to any (ideally persistent) GameObject in the scene. +/// +[DisallowMultipleComponent] +public class FrameRateLimiter : MonoBehaviour +{ + [Header("Limit")] + [Tooltip("ON = the frame rate is capped to 'Target FPS'. OFF = unlimited " + + "(targetFrameRate = -1, platform default).")] + public bool limitFrameRate = true; + + [Tooltip("Target frame rate in frames per second when the limit is active.")] + [Range(1, 360)] + public int targetFps = 60; + + [Header("VSync")] + [Tooltip("When an FPS limit is set, disable VSync automatically. " + + "Otherwise VSync would override targetFrameRate and the limit " + + "would have no effect. Normally leave this ON.")] + public bool disableVSyncWhenLimiting = true; + + [Tooltip("VSync count to use when NO limit is active " + + "(0 = VSync off, 1 = every screen refresh, 2 = every second refresh).")] + [Range(0, 2)] + public int vSyncCountWhenUnlimited = 0; + + void OnEnable() + { + Apply(); + } + + void OnValidate() + { + // Live adjustment when changing values in the Inspector (also in Play mode). + if (Application.isPlaying) + Apply(); + } + + /// + /// Applies the current limit (FPS + VSync) to the Unity settings. + /// Can also be called externally. + /// + public void Apply() + { + if (limitFrameRate) + { + if (disableVSyncWhenLimiting) + QualitySettings.vSyncCount = 0; + + Application.targetFrameRate = Mathf.Max(1, targetFps); + } + else + { + QualitySettings.vSyncCount = vSyncCountWhenUnlimited; + Application.targetFrameRate = -1; // platform default / unlimited + } + } + + /// Enable/disable the limit (e.g. for UI buttons). + public void SetLimitEnabled(bool enabled) + { + limitFrameRate = enabled; + Apply(); + } + + /// Set the target FPS and enable the limit (e.g. for UI sliders). + public void SetTargetFps(int fps) + { + targetFps = Mathf.Max(1, fps); + limitFrameRate = true; + Apply(); + } +} diff --git a/Assets/Scripts/FrameRateLimiter.cs.meta b/Assets/Scripts/FrameRateLimiter.cs.meta new file mode 100644 index 0000000..b3a8ab6 --- /dev/null +++ b/Assets/Scripts/FrameRateLimiter.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: dd08e354312b3b14d8f2573ae830c513 \ No newline at end of file diff --git a/Assets/Scripts/MeshPainter.cs b/Assets/Scripts/MeshPainter.cs new file mode 100644 index 0000000..0841fd4 --- /dev/null +++ b/Assets/Scripts/MeshPainter.cs @@ -0,0 +1,760 @@ +using System.Collections.Generic; +using UnityEngine; +#if ENABLE_INPUT_SYSTEM +using UnityEngine.InputSystem; +#endif + +/// +/// Live mesh painting in Play mode. +/// Paints a fixed color (brush) onto the mesh's texture with the mouse. +/// +/// TWO BACKENDS (switchable via , also live in Play mode): +/// +/// * GPU (default): True shader painting into a RenderTexture. The brush is +/// drawn via a vertex/fragment shader - the mesh is unwrapped into the texture +/// layout using its UVs, and per texel the actual 3D position is tested against +/// the brush sphere. Edge padding against seams runs as a GPU blit. +/// Fast, because the GPU rasterizes all texels in parallel. +/// +/// * CPU: Rasterization of the hit triangles on the CPU; per texel the 3D +/// position is computed barycentrically and tested against the brush sphere. +/// Edge padding via CPU dilation. Identical visual result, but more expensive. +/// +/// BOTH backends paint seamlessly: a 3D sphere around the hit point captures +/// triangles on both sides of a UV seam at once (front/back share the same 3D +/// edge), no matter where they lie in the UV layout. +/// +/// Simply attach to the GameObject you want to paint (e.g. paintman_UV/paintman_UV). +/// +[DisallowMultipleComponent] +public class MeshPainter : MonoBehaviour +{ + [Header("Backend")] + [Tooltip("ON = GPU painting (shader/RenderTexture, fast). OFF = CPU painting. " + + "Can be toggled live in Play mode - the painted content is carried over.")] + public bool useGpu = true; + + [Header("Brush")] + [Tooltip("Color used for painting.")] + public Color brushColor = Color.red; + + [Tooltip("Brush radius in texels (visual size). Converted into a 3D radius per hit.")] + [Range(1, 256)] + public int brushSize = 16; + + [Header("Canvas")] + [Tooltip("Resolution of the paint texture (square).")] + public int textureSize = 1024; + + [Tooltip("Base color of the texture at startup (if none exists).")] + public Color baseColor = Color.white; + + [Tooltip("Edge padding (texels) against visible UV seams. The color is 'bled' beyond the " + + "UV island edges so that bilinear sampling there does not pull in the unpainted " + + "base color. 0 = off.")] + [Range(0, 16)] + public int paddingTexels = 4; + + [Header("Setup")] + [Tooltip("Camera for the mouse ray. Empty = Camera.main.")] + public Camera paintCamera; + + [Tooltip("Only for animated meshes: re-bake the collider every frame (expensive!).")] + public bool updateColliderEveryFrame = false; + + // --- shared references --- + private Renderer _renderer; + private SkinnedMeshRenderer _skinned; + private MeshCollider _collider; + private Mesh _bakedMesh; + private Material _materialInstance; + + // Mesh caches (in the transform's local space = collider space). + private Vector3[] _verts; + private int[] _tris; + private Vector2[] _uvs; + private Vector3[] _triCenter; // centroid per triangle (for fast CPU culling) + private float[] _triRadius; // circumscribed radius per triangle (for fast CPU culling) + private float _avgUvToLocal = 1f; // average conversion: UV unit -> local unit + + private bool _hasLastScreen; + private Vector2 _lastScreen; + private bool _gpuActive; // currently configured backend + private bool _setupValid; + + // --- CPU backend --- + private Texture2D _paintTexture; + private Color32[] _pixels; + private bool[] _painted; // true = painted by the brush (persistent dilation source) + private int[] _fillStamp; // transient marker for padding texels per dilation call + private int _dilateStamp; // incremented per call -> padding from previous frames does not count as a source + private readonly List _dilateScratch = new List(512); + private int _dx0, _dy0, _dx1, _dy1; // dirty rectangle (CPU upload) + + // --- GPU backend --- + public Shader brushShader; // optional; otherwise Shader.Find("Hidden/MeshPaintBrush") + public Shader dilateShader; // optional; otherwise Shader.Find("Hidden/MeshPaintDilate") + private Material _brushMat; + private Material _dilateMat; + private RenderTexture _displayRT; // assigned to the material as _BaseMap + private RenderTexture _tempRT; // scratch for the dilation blit (ping-pong) + private bool _drewThisStroke; + private bool _prevSRGB; + + // Step size (in screen pixels) for interpolation along the mouse movement. + private const float ScreenStepPixels = 5f; + // Upper bound of raycasts per frame (safeguard for very fast movements). + private const int MaxStepsPerFrame = 256; + + private static readonly int BaseMapId = Shader.PropertyToID("_BaseMap"); + private static readonly int MainTexId = Shader.PropertyToID("_MainTex"); + private static readonly int BaseColorId = Shader.PropertyToID("_BaseColor"); + private static readonly int ColorId = Shader.PropertyToID("_Color"); + private static readonly int BrushColorId = Shader.PropertyToID("_BrushColor"); + private static readonly int BrushCenterId = Shader.PropertyToID("_BrushCenter"); + private static readonly int BrushRadiusId = Shader.PropertyToID("_BrushRadius"); + private static readonly int PadId = Shader.PropertyToID("_Pad"); + + private void Start() + { + if (paintCamera == null) paintCamera = Camera.main; + + _renderer = GetComponent(); + _skinned = GetComponent(); + if (_renderer == null) + { + Debug.LogError("[MeshPainter] No Renderer found on this GameObject.", this); + enabled = false; + return; + } + + textureSize = Mathf.Clamp(textureSize, 32, 4096); + + SetupCollider(); + BuildMeshCaches(); + + if (_uvs == null || _uvs.Length == 0) + { + Debug.LogError("[MeshPainter] Mesh has no UVs - painting not possible.", this); + enabled = false; + return; + } + + // Own material instance so the shared asset is not modified. + _materialInstance = _renderer.material; // automatically creates an instance + // Tint to white so the painted color appears unaltered. + if (_materialInstance.HasProperty(BaseColorId)) _materialInstance.SetColor(BaseColorId, Color.white); + else if (_materialInstance.HasProperty(ColorId)) _materialInstance.SetColor(ColorId, Color.white); + + SetupBackend(useGpu, fromColor32: BuildBaseColors()); + _setupValid = true; + + Debug.Log($"[MeshPainter] Ready ({(_gpuActive ? "GPU" : "CPU")} painting, seamless). " + + "Hold the left mouse button and drag over the mesh.", this); + } + + // ------------------------------------------------------------------ + // Setup (shared) + // ------------------------------------------------------------------ + + private void SetupCollider() + { + _collider = GetComponent(); + if (_collider == null) _collider = gameObject.AddComponent(); + _collider.convex = false; // non-convex provides triangleIndex / textureCoord + + _bakedMesh = new Mesh { name = "MeshPainter_Baked" }; + BakeColliderMesh(); + } + + private void BakeColliderMesh() + { + if (_skinned != null) + { + // Static skinned mesh: bake into local coordinates (scale = 1). + _skinned.BakeMesh(_bakedMesh); + _collider.sharedMesh = null; + _collider.sharedMesh = _bakedMesh; + } + else + { + var mf = GetComponent(); + if (mf != null) _collider.sharedMesh = mf.sharedMesh; + } + } + + /// Reads vertices/triangles/UVs of the collider mesh and computes culling data. + private void BuildMeshCaches() + { + Mesh m = _collider.sharedMesh; + if (m == null) return; + + _verts = m.vertices; + _tris = m.triangles; + _uvs = m.uv; + + // Fallback: UVs from the original mesh (BakeMesh usually keeps them, but better safe than sorry). + if ((_uvs == null || _uvs.Length != _verts.Length) && _skinned != null && _skinned.sharedMesh != null) + _uvs = _skinned.sharedMesh.uv; + + if (_uvs == null || _uvs.Length != _verts.Length) return; + + int triCount = _tris.Length / 3; + _triCenter = new Vector3[triCount]; + _triRadius = new float[triCount]; + + double sumArea3D = 0.0, sumAreaUv = 0.0; + + for (int t = 0; t < triCount; t++) + { + int i0 = _tris[t * 3], i1 = _tris[t * 3 + 1], i2 = _tris[t * 3 + 2]; + Vector3 a = _verts[i0], b = _verts[i1], c = _verts[i2]; + + Vector3 center = (a + b + c) / 3f; + _triCenter[t] = center; + float ra = (a - center).sqrMagnitude; + float rb = (b - center).sqrMagnitude; + float rc = (c - center).sqrMagnitude; + _triRadius[t] = Mathf.Sqrt(Mathf.Max(ra, Mathf.Max(rb, rc))); + + sumArea3D += 0.5 * Vector3.Cross(b - a, c - a).magnitude; + Vector2 ua = _uvs[i0], ub = _uvs[i1], uc = _uvs[i2]; + sumAreaUv += 0.5 * Mathf.Abs(Cross2D(ub - ua, uc - ua)); + } + + if (sumAreaUv > 1e-9) _avgUvToLocal = (float)System.Math.Sqrt(sumArea3D / sumAreaUv); + } + + /// Builds the base-color texels (copy of the existing material texture or baseColor). + private Color32[] BuildBaseColors() + { + var px = new Color32[textureSize * textureSize]; + + Texture sourceTex = null; + var shared = _renderer.sharedMaterial; + if (shared != null) + { + if (shared.HasProperty(BaseMapId)) sourceTex = shared.GetTexture(BaseMapId); + if (sourceTex == null && shared.HasProperty(MainTexId)) sourceTex = shared.GetTexture(MainTexId); + } + + var src = sourceTex as Texture2D; + if (src != null) + { + try + { + if (src.width == textureSize && src.height == textureSize && src.isReadable) + return src.GetPixels32(); + } + catch { /* not readable -> fall back to baseColor */ } + } + + Color32 c = baseColor; + for (int i = 0; i < px.Length; i++) px[i] = c; + return px; + } + + // ------------------------------------------------------------------ + // Backend selection / switching + // ------------------------------------------------------------------ + + /// Sets up the desired backend and carries over the initial image content. + private void SetupBackend(bool gpu, Color32[] fromColor32) + { + if (gpu) SetupGpu(fromColor32); + else SetupCpu(fromColor32); + _gpuActive = gpu; + } + + /// Switches the backend at runtime and carries over the currently painted content. + private void SwitchBackend(bool toGpu) + { + // save the current content as Color32 + Color32[] current = (_gpuActive ? ReadGpuPixels() : (Color32[])_pixels.Clone()); + + if (_gpuActive) TeardownGpu(); + else TeardownCpu(); + + SetupBackend(toGpu, current); + _hasLastScreen = false; + + Debug.Log($"[MeshPainter] Backend switched -> {(toGpu ? "GPU" : "CPU")} painting.", this); + } + + // ------------------------------------------------------------------ + // CPU backend + // ------------------------------------------------------------------ + + private void SetupCpu(Color32[] initial) + { + _paintTexture = new Texture2D(textureSize, textureSize, TextureFormat.RGBA32, false, false) + { + name = "MeshPainter_Canvas", + wrapMode = TextureWrapMode.Clamp, + filterMode = FilterMode.Bilinear + }; + + _pixels = (initial != null && initial.Length == textureSize * textureSize) + ? initial + : BuildBaseColors(); + + _painted = new bool[textureSize * textureSize]; + _fillStamp = new int[textureSize * textureSize]; + _dilateStamp = 0; + + _paintTexture.SetPixels32(_pixels); + _paintTexture.Apply(false); + + AssignTextureToMaterial(_paintTexture); + } + + private void TeardownCpu() + { + if (_paintTexture != null) { Destroy(_paintTexture); _paintTexture = null; } + _pixels = null; + _painted = null; + _fillStamp = null; + } + + // ------------------------------------------------------------------ + // GPU backend + // ------------------------------------------------------------------ + + private void SetupGpu(Color32[] initial) + { + if (brushShader == null) brushShader = Shader.Find("Hidden/MeshPaintBrush"); + if (dilateShader == null) dilateShader = Shader.Find("Hidden/MeshPaintDilate"); + + if (brushShader == null || dilateShader == null) + { + Debug.LogError("[MeshPainter] GPU shaders not found (Hidden/MeshPaintBrush or " + + "Hidden/MeshPaintDilate). Falling back to CPU painting.", this); + useGpu = false; + SetupCpu(initial); + _gpuActive = false; + return; + } + + _brushMat = new Material(brushShader) { hideFlags = HideFlags.HideAndDontSave }; + _dilateMat = new Material(dilateShader) { hideFlags = HideFlags.HideAndDontSave }; + + _displayRT = CreateRT("MeshPainter_DisplayRT"); + _tempRT = CreateRT("MeshPainter_TempRT"); + + // Bring the initial image content into the display RT. Alpha = 0 marks "unpainted" + // (so the base color is not mistaken for a dilation source). + var seed = initial ?? BuildBaseColors(); + UploadColorsToRT(seed, _displayRT, paintedAlpha: false); + + AssignTextureToMaterial(_displayRT); + } + + private void TeardownGpu() + { + if (_displayRT != null) { _displayRT.Release(); Destroy(_displayRT); _displayRT = null; } + if (_tempRT != null) { _tempRT.Release(); Destroy(_tempRT); _tempRT = null; } + if (_brushMat != null) { Destroy(_brushMat); _brushMat = null; } + if (_dilateMat != null) { Destroy(_dilateMat); _dilateMat = null; } + } + + private RenderTexture CreateRT(string rtName) + { + var rt = new RenderTexture(textureSize, textureSize, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB) + { + name = rtName, + wrapMode = TextureWrapMode.Clamp, + filterMode = FilterMode.Bilinear, + antiAliasing = 1, + useMipMap = false, + autoGenerateMips = false + }; + rt.Create(); + return rt; + } + + /// Writes Color32 data into a RenderTexture via a temporary texture. + private void UploadColorsToRT(Color32[] colors, RenderTexture rt, bool paintedAlpha) + { + var tmp = new Texture2D(textureSize, textureSize, TextureFormat.RGBA32, false, false); + if (paintedAlpha) + { + // mark the entire content as "painted" (alpha = 255) -> no dilation needed. + for (int i = 0; i < colors.Length; i++) colors[i].a = 255; + } + else + { + // mark the base color as "unpainted" (alpha = 0). + for (int i = 0; i < colors.Length; i++) colors[i].a = 0; + } + tmp.SetPixels32(colors); + tmp.Apply(false); + Graphics.Blit(tmp, rt); + Destroy(tmp); + } + + /// Reads the display RT back as Color32 (for the backend switch). + private Color32[] ReadGpuPixels() + { + var prev = RenderTexture.active; + RenderTexture.active = _displayRT; + var tex = new Texture2D(textureSize, textureSize, TextureFormat.RGBA32, false, false); + tex.ReadPixels(new Rect(0, 0, textureSize, textureSize), 0, 0, false); + tex.Apply(false); + RenderTexture.active = prev; + var px = tex.GetPixels32(); + Destroy(tex); + return px; + } + + // ------------------------------------------------------------------ + // Material + // ------------------------------------------------------------------ + + private void AssignTextureToMaterial(Texture tex) + { + if (_materialInstance == null) return; + if (_materialInstance.HasProperty(BaseMapId)) _materialInstance.SetTexture(BaseMapId, tex); + if (_materialInstance.HasProperty(MainTexId)) _materialInstance.SetTexture(MainTexId, tex); + } + + // ------------------------------------------------------------------ + // Update / input + // ------------------------------------------------------------------ + + private void Update() + { + if (!_setupValid) return; + + // Live backend switching. + if (useGpu != _gpuActive) SwitchBackend(useGpu); + + if (updateColliderEveryFrame && _skinned != null) + { + BakeColliderMesh(); + BuildMeshCaches(); + } + + if (!TryGetMouse(out bool pressed, out Vector2 screenPos)) + return; + + if (!pressed) + { + _hasLastScreen = false; + return; + } + + if (paintCamera == null) return; + + if (_gpuActive) BeginGpuStroke(); + else { _dx0 = textureSize; _dy0 = textureSize; _dx1 = -1; _dy1 = -1; } + + if (_hasLastScreen) + { + // Interpolate along the mouse movement in screen space and re-raycast at + // each step -> the stroke follows the mesh surface. + float dist = Vector2.Distance(_lastScreen, screenPos); + int steps = Mathf.Clamp(Mathf.CeilToInt(dist / ScreenStepPixels), 1, MaxStepsPerFrame); + for (int s = 1; s <= steps; s++) + PaintAtScreen(Vector2.Lerp(_lastScreen, screenPos, s / (float)steps)); + } + else + { + PaintAtScreen(screenPos); + } + + if (_gpuActive) EndGpuStroke(); + else + { + if (paddingTexels > 0) DilatePadding(paddingTexels); + FlushDirty(); + } + + _lastScreen = screenPos; + _hasLastScreen = true; + } + + /// + /// Raycast at a screen position. If the ray hits the mesh, a 3D sphere is painted + /// around the hit point (seamless) - via GPU or CPU depending on the backend. + /// + private void PaintAtScreen(Vector2 screenPos) + { + Ray ray = paintCamera.ScreenPointToRay(screenPos); + if (!(Physics.Raycast(ray, out RaycastHit hit, 1000f) && hit.collider == _collider)) + return; + if (_verts == null || hit.triangleIndex < 0) return; + + // Bring the hit point into local mesh space (= collider/vertex space). + Vector3 pLocal = transform.InverseTransformPoint(hit.point); + + // Convert the brush radius (texels) into a local 3D radius using the UV + // density of the hit triangle -> the brush stays visually the same size. + float scale = _avgUvToLocal; + int t = hit.triangleIndex; + if (t * 3 + 2 < _tris.Length) + { + int i0 = _tris[t * 3], i1 = _tris[t * 3 + 1], i2 = _tris[t * 3 + 2]; + float area3D = 0.5f * Vector3.Cross(_verts[i1] - _verts[i0], _verts[i2] - _verts[i0]).magnitude; + float areaUv = 0.5f * Mathf.Abs(Cross2D(_uvs[i1] - _uvs[i0], _uvs[i2] - _uvs[i0])); + if (areaUv > 1e-9f) + { + float s = Mathf.Sqrt(area3D / areaUv); + // guard against degenerate UVs: keep close to the average. + scale = Mathf.Clamp(s, _avgUvToLocal * 0.25f, _avgUvToLocal * 4f); + } + } + + float radiusLocal = (brushSize / (float)textureSize) * scale; + if (radiusLocal <= 0f) return; + + if (_gpuActive) DrawBrushGpu(pLocal, radiusLocal); + else PaintSphere3D(pLocal, radiusLocal); + } + + // ------------------------------------------------------------------ + // GPU painting + // ------------------------------------------------------------------ + + private void BeginGpuStroke() + { + _drewThisStroke = false; + _prevSRGB = GL.sRGBWrite; + GL.sRGBWrite = true; // correct sRGB encoding when writing into the sRGB RT (linear project) + Graphics.SetRenderTarget(_displayRT); + _brushMat.SetColor(BrushColorId, brushColor); + } + + private void DrawBrushGpu(Vector3 pLocal, float radiusLocal) + { + _brushMat.SetVector(BrushCenterId, pLocal); + _brushMat.SetFloat(BrushRadiusId, radiusLocal); + if (!_brushMat.SetPass(0)) return; + + int sub = _bakedMesh.subMeshCount; + for (int i = 0; i < sub; i++) + Graphics.DrawMeshNow(_bakedMesh, Matrix4x4.identity, i); + + _drewThisStroke = true; + } + + private void EndGpuStroke() + { + Graphics.SetRenderTarget(null); + + // Edge padding against UV seams: blit the display RT through the dilation + // shader into _tempRT and then swap (the result ends up in _displayRT again). + if (_drewThisStroke && paddingTexels > 0) + { + _dilateMat.SetInt(PadId, paddingTexels); + Graphics.Blit(_displayRT, _tempRT, _dilateMat, 0); + + var swap = _displayRT; _displayRT = _tempRT; _tempRT = swap; + AssignTextureToMaterial(_displayRT); + } + + GL.sRGBWrite = _prevSRGB; + } + + // ------------------------------------------------------------------ + // CPU painting (rasterization + dilation) + // ------------------------------------------------------------------ + + /// + /// Paints a sphere in local 3D space: rasterizes all triangles in range into + /// the texture and colors every texel whose 3D position lies inside the sphere. + /// + private void PaintSphere3D(Vector3 pLocal, float radiusLocal) + { + Color32 col = brushColor; + float r2 = radiusLocal * radiusLocal; + int triCount = _tris.Length / 3; + float ts = textureSize; + + for (int t = 0; t < triCount; t++) + { + // Fast culling: sphere against the triangle's circumscribed circle. + float reach = radiusLocal + _triRadius[t]; + if ((_triCenter[t] - pLocal).sqrMagnitude > reach * reach) continue; + + int i0 = _tris[t * 3], i1 = _tris[t * 3 + 1], i2 = _tris[t * 3 + 2]; + Vector3 v0 = _verts[i0], v1 = _verts[i1], v2 = _verts[i2]; + Vector2 uv0 = _uvs[i0], uv1 = _uvs[i1], uv2 = _uvs[i2]; + + // UV -> pixel. + float p0x = uv0.x * ts, p0y = uv0.y * ts; + float p1x = uv1.x * ts, p1y = uv1.y * ts; + float p2x = uv2.x * ts, p2y = uv2.y * ts; + + // Bounding box in pixel space. + int minX = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(p0x, Mathf.Min(p1x, p2x))), 0, textureSize - 1); + int maxX = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(p0x, Mathf.Max(p1x, p2x))), 0, textureSize - 1); + int minY = Mathf.Clamp(Mathf.FloorToInt(Mathf.Min(p0y, Mathf.Min(p1y, p2y))), 0, textureSize - 1); + int maxY = Mathf.Clamp(Mathf.CeilToInt(Mathf.Max(p0y, Mathf.Max(p1y, p2y))), 0, textureSize - 1); + if (maxX < minX || maxY < minY) continue; + + // Barycentric denominator. + float d = (p1y - p2y) * (p0x - p2x) + (p2x - p1x) * (p0y - p2y); + if (Mathf.Abs(d) < 1e-7f) continue; + float invD = 1f / d; + + const float eps = -1e-4f; // small tolerance against 1px cracks between triangles + + for (int y = minY; y <= maxY; y++) + { + float py = y + 0.5f; + int rowStart = y * textureSize; + for (int x = minX; x <= maxX; x++) + { + float px = x + 0.5f; + + float a = ((p1y - p2y) * (px - p2x) + (p2x - p1x) * (py - p2y)) * invD; + if (a < eps) continue; + float b = ((p2y - p0y) * (px - p2x) + (p0x - p2x) * (py - p2y)) * invD; + if (b < eps) continue; + float c = 1f - a - b; + if (c < eps) continue; + + // 3D position of the texel via barycentric interpolation. + float wx = a * v0.x + b * v1.x + c * v2.x; + float wy = a * v0.y + b * v1.y + c * v2.y; + float wz = a * v0.z + b * v1.z + c * v2.z; + + float ddx = wx - pLocal.x, ddy = wy - pLocal.y, ddz = wz - pLocal.z; + if (ddx * ddx + ddy * ddy + ddz * ddz > r2) continue; + + _pixels[rowStart + x] = col; + _painted[rowStart + x] = true; + + if (x < _dx0) _dx0 = x; + if (x > _dx1) _dx1 = x; + if (y < _dy0) _dy0 = y; + if (y > _dy1) _dy1 = y; + } + } + } + } + + /// + /// Edge padding / texture dilation against visible UV seams (CPU). + /// Colors a thin border (pad texels) around the freshly painted areas with their + /// color. The dilation source is exclusively brush-painted texels (_painted). + /// + private void DilatePadding(int pad) + { + if (_dx1 < _dx0 || _dy1 < _dy0) return; // nothing painted + + int x0 = Mathf.Max(0, _dx0 - pad); + int y0 = Mathf.Max(0, _dy0 - pad); + int x1 = Mathf.Min(textureSize - 1, _dx1 + pad); + int y1 = Mathf.Min(textureSize - 1, _dy1 + pad); + + _dilateStamp++; // unique per call -> padding from previous frames does not count as a source + + for (int iter = 0; iter < pad; iter++) + { + _dilateScratch.Clear(); + + for (int y = y0; y <= y1; y++) + { + int row = y * textureSize; + for (int x = x0; x <= x1; x++) + { + int idx = row + x; + if (_painted[idx] || _fillStamp[idx] == _dilateStamp) continue; + + if (TryFindPaddingSource(x, y, out Color32 c)) + { + _pixels[idx] = c; + _dilateScratch.Add(idx); + + if (x < _dx0) _dx0 = x; + if (x > _dx1) _dx1 = x; + if (y < _dy0) _dy0 = y; + if (y > _dy1) _dy1 = y; + } + } + } + + for (int k = 0; k < _dilateScratch.Count; k++) + _fillStamp[_dilateScratch[k]] = _dilateStamp; + + if (_dilateScratch.Count == 0) break; + } + } + + /// Searches the 8-neighborhood for a source texel (painted or already padded) and returns its color. + private bool TryFindPaddingSource(int x, int y, out Color32 col) + { + for (int oy = -1; oy <= 1; oy++) + { + int ny = y + oy; + if (ny < 0 || ny >= textureSize) continue; + int nrow = ny * textureSize; + for (int ox = -1; ox <= 1; ox++) + { + if (ox == 0 && oy == 0) continue; + int nx = x + ox; + if (nx < 0 || nx >= textureSize) continue; + int nidx = nrow + nx; + if (_painted[nidx] || _fillStamp[nidx] == _dilateStamp) + { + col = _pixels[nidx]; + return true; + } + } + } + col = default; + return false; + } + + /// Uploads only the region changed this frame to the GPU once (CPU backend). + private void FlushDirty() + { + if (_dx1 < _dx0 || _dy1 < _dy0) return; // nothing painted + + int bw = _dx1 - _dx0 + 1; + int bh = _dy1 - _dy0 + 1; + var block = new Color32[bw * bh]; + for (int y = 0; y < bh; y++) + System.Array.Copy(_pixels, (_dy0 + y) * textureSize + _dx0, block, y * bw, bw); + + _paintTexture.SetPixels32(_dx0, _dy0, bw, bh, block); + _paintTexture.Apply(false); + } + + // ------------------------------------------------------------------ + // Helpers + // ------------------------------------------------------------------ + + private static float Cross2D(Vector2 a, Vector2 b) => a.x * b.y - a.y * b.x; + + private bool TryGetMouse(out bool pressed, out Vector2 screenPos) + { + pressed = false; + screenPos = Vector2.zero; +#if ENABLE_INPUT_SYSTEM + var mouse = Mouse.current; + if (mouse != null) + { + pressed = mouse.leftButton.isPressed; + screenPos = mouse.position.ReadValue(); + return true; + } +#endif +#if ENABLE_LEGACY_INPUT_MANAGER + pressed = Input.GetMouseButton(0); + screenPos = Input.mousePosition; + return true; +#else + return false; +#endif + } + + private void OnDestroy() + { + if (_bakedMesh != null) Destroy(_bakedMesh); + if (_materialInstance != null) Destroy(_materialInstance); + TeardownCpu(); + TeardownGpu(); + } +} diff --git a/Assets/Scripts/MeshPainter.cs.meta b/Assets/Scripts/MeshPainter.cs.meta new file mode 100644 index 0000000..02c7ea4 --- /dev/null +++ b/Assets/Scripts/MeshPainter.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5fc799adb27d5ea45990b5522b75ddda \ No newline at end of file diff --git a/Assets/Settings.meta b/Assets/Settings.meta new file mode 100644 index 0000000..39b94dd --- /dev/null +++ b/Assets/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 709f11a7f3c4041caa4ef136ea32d874 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/DefaultVolumeProfile.asset b/Assets/Settings/DefaultVolumeProfile.asset new file mode 100644 index 0000000..6fb1822 --- /dev/null +++ b/Assets/Settings/DefaultVolumeProfile.asset @@ -0,0 +1,982 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-9167874883656233139 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3} + m_Name: LiftGammaGain + m_EditorClassIdentifier: + active: 1 + lift: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0} + gamma: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0} + gain: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0} +--- !u!114 &-8270506406425502121 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 70afe9e12c7a7ed47911bb608a23a8ff, type: 3} + m_Name: SplitToning + m_EditorClassIdentifier: + active: 1 + shadows: + m_OverrideState: 1 + m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1} + highlights: + m_OverrideState: 1 + m_Value: {r: 0.5, g: 0.5, b: 0.5, a: 1} + balance: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &-8104416584915340131 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0} + m_Name: CopyPasteTestComponent2 + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent2 + active: 1 + p1: + m_OverrideState: 1 + m_Value: 0 + p2: + m_OverrideState: 1 + m_Value: 0 + p21: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &-7750755424749557576 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 60f3b30c03e6ba64d9a27dc9dba8f28d, type: 3} + m_Name: OutlineVolumeComponent + m_EditorClassIdentifier: + active: 1 + Enabled: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &-7743500325797982168 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: ccf1aba9553839d41ae37dd52e9ebcce, type: 3} + m_Name: MotionBlur + m_EditorClassIdentifier: + active: 1 + mode: + m_OverrideState: 1 + m_Value: 0 + quality: + m_OverrideState: 1 + m_Value: 0 + intensity: + m_OverrideState: 1 + m_Value: 0 + clamp: + m_OverrideState: 1 + m_Value: 0.05 +--- !u!114 &-7274224791359825572 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0fd9ee276a1023e439cf7a9c393195fa, type: 3} + m_Name: TestAnimationCurveVolumeComponent + m_EditorClassIdentifier: + active: 1 + testParameter: + m_OverrideState: 1 + m_Value: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0.5 + value: 10 + inSlope: 0 + outSlope: 10 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 15 + inSlope: 10 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &-6335409530604852063 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 66f335fb1ffd8684294ad653bf1c7564, type: 3} + m_Name: ColorAdjustments + m_EditorClassIdentifier: + active: 1 + postExposure: + m_OverrideState: 1 + m_Value: 0 + contrast: + m_OverrideState: 1 + m_Value: 0 + colorFilter: + m_OverrideState: 1 + m_Value: {r: 1, g: 1, b: 1, a: 1} + hueShift: + m_OverrideState: 1 + m_Value: 0 + saturation: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &-6288072647309666549 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 29fa0085f50d5e54f8144f766051a691, type: 3} + m_Name: FilmGrain + m_EditorClassIdentifier: + active: 1 + type: + m_OverrideState: 1 + m_Value: 0 + intensity: + m_OverrideState: 1 + m_Value: 0 + response: + m_OverrideState: 1 + m_Value: 0.8 + texture: + m_OverrideState: 1 + m_Value: {fileID: 0} +--- !u!114 &-5520245016509672950 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 97c23e3b12dc18c42a140437e53d3951, type: 3} + m_Name: Tonemapping + m_EditorClassIdentifier: + active: 1 + mode: + m_OverrideState: 1 + m_Value: 0 + neutralHDRRangeReductionMode: + m_OverrideState: 1 + m_Value: 2 + acesPreset: + m_OverrideState: 1 + m_Value: 3 + hueShiftAmount: + m_OverrideState: 1 + m_Value: 0 + detectPaperWhite: + m_OverrideState: 1 + m_Value: 0 + paperWhite: + m_OverrideState: 1 + m_Value: 300 + detectBrightnessLimits: + m_OverrideState: 1 + m_Value: 1 + minNits: + m_OverrideState: 1 + m_Value: 0.005 + maxNits: + m_OverrideState: 1 + m_Value: 1000 +--- !u!114 &-5360449096862653589 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0} + m_Name: VolumeComponentSupportedEverywhere + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEngine.Rendering.Tests:VolumeComponentEditorSupportedOnTests/VolumeComponentSupportedEverywhere + active: 1 +--- !u!114 &-5139089513906902183 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 5a00a63fdd6bd2a45ab1f2d869305ffd, type: 3} + m_Name: OasisFogVolumeComponent + m_EditorClassIdentifier: + active: 1 + Density: + m_OverrideState: 1 + m_Value: 0 + StartDistance: + m_OverrideState: 1 + m_Value: 0 + HeightRange: + m_OverrideState: 1 + m_Value: {x: 0, y: 50} + Tint: + m_OverrideState: 1 + m_Value: {r: 1, g: 1, b: 1, a: 1} + SunScatteringIntensity: + m_OverrideState: 1 + m_Value: 2 +--- !u!114 &-4463884970436517307 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: fb60a22f311433c4c962b888d1393f88, type: 3} + m_Name: PaniniProjection + m_EditorClassIdentifier: + active: 1 + distance: + m_OverrideState: 1 + m_Value: 0 + cropToFit: + m_OverrideState: 1 + m_Value: 1 +--- !u!114 &-1410297666881709256 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 6bd486065ce11414fa40e631affc4900, type: 3} + m_Name: ProbeVolumesOptions + m_EditorClassIdentifier: + active: 1 + normalBias: + m_OverrideState: 1 + m_Value: 0.33 + viewBias: + m_OverrideState: 1 + m_Value: 0 + scaleBiasWithMinProbeDistance: + m_OverrideState: 1 + m_Value: 0 + samplingNoise: + m_OverrideState: 1 + m_Value: 0.1 + animateSamplingNoise: + m_OverrideState: 1 + m_Value: 1 + leakReductionMode: + m_OverrideState: 1 + m_Value: 1 + minValidDotProductValue: + m_OverrideState: 1 + m_Value: 0.1 + occlusionOnlyReflectionNormalization: + m_OverrideState: 1 + m_Value: 1 + intensityMultiplier: + m_OverrideState: 1 + m_Value: 1 + skyOcclusionIntensityMultiplier: + m_OverrideState: 1 + m_Value: 1 +--- !u!114 &-1216621516061285780 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: + active: 1 + skipIterations: + m_OverrideState: 1 + m_Value: 1 + threshold: + m_OverrideState: 1 + m_Value: 0.9 + intensity: + m_OverrideState: 1 + m_Value: 0 + scatter: + m_OverrideState: 1 + m_Value: 0.7 + clamp: + m_OverrideState: 1 + m_Value: 65472 + tint: + m_OverrideState: 1 + m_Value: {r: 1, g: 1, b: 1, a: 1} + highQualityFiltering: + m_OverrideState: 1 + m_Value: 0 + downscale: + m_OverrideState: 1 + m_Value: 0 + maxIterations: + m_OverrideState: 1 + m_Value: 6 + dirtTexture: + m_OverrideState: 1 + m_Value: {fileID: 0} + dimension: 1 + dirtIntensity: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &-1170528603972255243 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 221518ef91623a7438a71fef23660601, type: 3} + m_Name: WhiteBalance + m_EditorClassIdentifier: + active: 1 + temperature: + m_OverrideState: 1 + m_Value: 0 + tint: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &-581120513425526550 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0} + m_Name: CopyPasteTestComponent3 + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent3 + active: 1 + p1: + m_OverrideState: 1 + m_Value: 0 + p2: + m_OverrideState: 1 + m_Value: 0 + p31: + m_OverrideState: 1 + m_Value: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &11400000 +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: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: DefaultVolumeProfile + m_EditorClassIdentifier: + components: + - {fileID: -9167874883656233139} + - {fileID: 1918650496244738858} + - {fileID: 853819529557874667} + - {fileID: 1052315754049611418} + - {fileID: -1170528603972255243} + - {fileID: -8270506406425502121} + - {fileID: -5520245016509672950} + - {fileID: 7173750748008157695} + - {fileID: 1666464333004379222} + - {fileID: 9001657382290151224} + - {fileID: -6335409530604852063} + - {fileID: -1216621516061285780} + - {fileID: 3959858460715838825} + - {fileID: -7743500325797982168} + - {fileID: 4644742534064026673} + - {fileID: -4463884970436517307} + - {fileID: -6288072647309666549} + - {fileID: 7518938298396184218} + - {fileID: -1410297666881709256} + - {fileID: -7750755424749557576} + - {fileID: -5139089513906902183} +--- !u!114 &853819529557874667 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 06437c1ff663d574d9447842ba0a72e4, type: 3} + m_Name: ScreenSpaceLensFlare + m_EditorClassIdentifier: + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0 + tintColor: + m_OverrideState: 1 + m_Value: {r: 1, g: 1, b: 1, a: 1} + bloomMip: + m_OverrideState: 1 + m_Value: 1 + firstFlareIntensity: + m_OverrideState: 1 + m_Value: 1 + secondaryFlareIntensity: + m_OverrideState: 1 + m_Value: 1 + warpedFlareIntensity: + m_OverrideState: 1 + m_Value: 1 + warpedFlareScale: + m_OverrideState: 1 + m_Value: {x: 1, y: 1} + samples: + m_OverrideState: 1 + m_Value: 1 + sampleDimmer: + m_OverrideState: 1 + m_Value: 0.5 + vignetteEffect: + m_OverrideState: 1 + m_Value: 1 + startingPosition: + m_OverrideState: 1 + m_Value: 1.25 + scale: + m_OverrideState: 1 + m_Value: 1.5 + streaksIntensity: + m_OverrideState: 1 + m_Value: 0 + streaksLength: + m_OverrideState: 1 + m_Value: 0.5 + streaksOrientation: + m_OverrideState: 1 + m_Value: 0 + streaksThreshold: + m_OverrideState: 1 + m_Value: 0.25 + resolution: + m_OverrideState: 1 + m_Value: 4 + chromaticAbberationIntensity: + m_OverrideState: 1 + m_Value: 0.5 +--- !u!114 &1052315754049611418 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 558a8e2b6826cf840aae193990ba9f2e, type: 3} + m_Name: ShadowsMidtonesHighlights + m_EditorClassIdentifier: + active: 1 + shadows: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0} + midtones: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0} + highlights: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0} + shadowsStart: + m_OverrideState: 1 + m_Value: 0 + shadowsEnd: + m_OverrideState: 1 + m_Value: 0.3 + highlightsStart: + m_OverrideState: 1 + m_Value: 0.55 + highlightsEnd: + m_OverrideState: 1 + m_Value: 1 +--- !u!114 &1666464333004379222 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 3eb4b772797da9440885e8bd939e9560, type: 3} + m_Name: ColorCurves + m_EditorClassIdentifier: + active: 1 + master: + m_OverrideState: 1 + m_Value: + k__BackingField: 2 + m_Loop: 0 + m_ZeroValue: 0 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + red: + m_OverrideState: 1 + m_Value: + k__BackingField: 2 + m_Loop: 0 + m_ZeroValue: 0 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + green: + m_OverrideState: 1 + m_Value: + k__BackingField: 2 + m_Loop: 0 + m_ZeroValue: 0 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + blue: + m_OverrideState: 1 + m_Value: + k__BackingField: 2 + m_Loop: 0 + m_ZeroValue: 0 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + hueVsHue: + m_OverrideState: 1 + m_Value: + k__BackingField: 0 + m_Loop: 1 + m_ZeroValue: 0.5 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + hueVsSat: + m_OverrideState: 1 + m_Value: + k__BackingField: 0 + m_Loop: 1 + m_ZeroValue: 0.5 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + satVsSat: + m_OverrideState: 1 + m_Value: + k__BackingField: 0 + m_Loop: 0 + m_ZeroValue: 0.5 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + lumVsSat: + m_OverrideState: 1 + m_Value: + k__BackingField: 0 + m_Loop: 0 + m_ZeroValue: 0.5 + m_Range: 1 + m_Curve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!114 &1918650496244738858 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: e021b4c809a781e468c2988c016ebbea, type: 3} + m_Name: ColorLookup + m_EditorClassIdentifier: + active: 1 + texture: + m_OverrideState: 1 + m_Value: {fileID: 0} + dimension: 1 + contribution: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &3959858460715838825 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: c01700fd266d6914ababb731e09af2eb, type: 3} + m_Name: DepthOfField + m_EditorClassIdentifier: + active: 1 + mode: + m_OverrideState: 1 + m_Value: 0 + gaussianStart: + m_OverrideState: 1 + m_Value: 10 + gaussianEnd: + m_OverrideState: 1 + m_Value: 30 + gaussianMaxRadius: + m_OverrideState: 1 + m_Value: 1 + highQualitySampling: + m_OverrideState: 1 + m_Value: 0 + focusDistance: + m_OverrideState: 1 + m_Value: 10 + aperture: + m_OverrideState: 1 + m_Value: 5.6 + focalLength: + m_OverrideState: 1 + m_Value: 50 + bladeCount: + m_OverrideState: 1 + m_Value: 5 + bladeCurvature: + m_OverrideState: 1 + m_Value: 1 + bladeRotation: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &4251301726029935498 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 74955a4b0b4243bc87231e8b59ed9140, type: 3} + m_Name: TestVolume + m_EditorClassIdentifier: + active: 1 + param: + m_OverrideState: 1 + m_Value: 123 +--- !u!114 &4644742534064026673 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 81180773991d8724ab7f2d216912b564, type: 3} + m_Name: ChromaticAberration + m_EditorClassIdentifier: + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &6940869943325143175 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0} + m_Name: VolumeComponentSupportedOnAnySRP + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEngine.Rendering.Tests:VolumeComponentEditorSupportedOnTests/VolumeComponentSupportedOnAnySRP + active: 1 +--- !u!114 &7173750748008157695 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 899c54efeace73346a0a16faa3afe726, type: 3} + m_Name: Vignette + m_EditorClassIdentifier: + active: 1 + color: + m_OverrideState: 1 + m_Value: {r: 0, g: 0, b: 0, a: 1} + center: + m_OverrideState: 1 + m_Value: {x: 0.5, y: 0.5} + intensity: + m_OverrideState: 1 + m_Value: 0 + smoothness: + m_OverrideState: 1 + m_Value: 0.2 + rounded: + m_OverrideState: 1 + m_Value: 0 +--- !u!114 &7518938298396184218 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3} + m_Name: LensDistortion + m_EditorClassIdentifier: + active: 1 + intensity: + m_OverrideState: 1 + m_Value: 0 + xMultiplier: + m_OverrideState: 1 + m_Value: 1 + yMultiplier: + m_OverrideState: 1 + m_Value: 1 + center: + m_OverrideState: 1 + m_Value: {x: 0.5, y: 0.5} + scale: + m_OverrideState: 1 + m_Value: 1 +--- !u!114 &9001657382290151224 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: cdfbdbb87d3286943a057f7791b43141, type: 3} + m_Name: ChannelMixer + m_EditorClassIdentifier: + active: 1 + redOutRedIn: + m_OverrideState: 1 + m_Value: 100 + redOutGreenIn: + m_OverrideState: 1 + m_Value: 0 + redOutBlueIn: + m_OverrideState: 1 + m_Value: 0 + greenOutRedIn: + m_OverrideState: 1 + m_Value: 0 + greenOutGreenIn: + m_OverrideState: 1 + m_Value: 100 + greenOutBlueIn: + m_OverrideState: 1 + m_Value: 0 + blueOutRedIn: + m_OverrideState: 1 + m_Value: 0 + blueOutGreenIn: + m_OverrideState: 1 + m_Value: 0 + blueOutBlueIn: + m_OverrideState: 1 + m_Value: 100 +--- !u!114 &9122958982931076880 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0} + m_Name: CopyPasteTestComponent1 + m_EditorClassIdentifier: Unity.RenderPipelines.Core.Editor.Tests:UnityEditor.Rendering.Tests:VolumeComponentCopyPasteTests/CopyPasteTestComponent1 + active: 1 + p1: + m_OverrideState: 1 + m_Value: 0 + p2: + m_OverrideState: 1 + m_Value: 0 diff --git a/Assets/Settings/DefaultVolumeProfile.asset.meta b/Assets/Settings/DefaultVolumeProfile.asset.meta new file mode 100644 index 0000000..53b314a --- /dev/null +++ b/Assets/Settings/DefaultVolumeProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab09877e2e707104187f6f83e2f62510 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/Mobile_RPAsset.asset b/Assets/Settings/Mobile_RPAsset.asset new file mode 100644 index 0000000..fedee07 --- /dev/null +++ b/Assets/Settings/Mobile_RPAsset.asset @@ -0,0 +1,143 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: Mobile_RPAsset + m_EditorClassIdentifier: + k_AssetVersion: 13 + k_AssetPreviousVersion: 13 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: 65bc7dbf4170f435aa868c779acfb082, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 0 + m_RequireOpaqueTexture: 0 + m_OpaqueDownsampling: 0 + m_SupportsTerrainHoles: 1 + m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 + m_MSAA: 1 + m_RenderScale: 0.8 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 + m_LightProbeSystem: 0 + m_ProbeVolumeMemoryBudget: 1024 + m_ProbeVolumeBlendingMemoryBudget: 256 + m_SupportProbeVolumeGPUStreaming: 0 + m_SupportProbeVolumeDiskStreaming: 0 + m_SupportProbeVolumeScenarios: 0 + m_SupportProbeVolumeScenarioBlending: 0 + m_ProbeVolumeSHBands: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 1 + m_MainLightShadowmapResolution: 1024 + m_AdditionalLightsRenderingMode: 1 + m_AdditionalLightsPerObjectLimit: 4 + m_AdditionalLightShadowsSupported: 0 + m_AdditionalLightsShadowmapResolution: 2048 + m_AdditionalLightsShadowResolutionTierLow: 256 + m_AdditionalLightsShadowResolutionTierMedium: 512 + m_AdditionalLightsShadowResolutionTierHigh: 1024 + m_ReflectionProbeBlending: 1 + m_ReflectionProbeBoxProjection: 1 + m_ReflectionProbeAtlas: 1 + m_ShadowDistance: 50 + m_ShadowCascadeCount: 1 + m_Cascade2Split: 0.25 + m_Cascade3Split: {x: 0.1, y: 0.3} + m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_CascadeBorder: 0.2 + m_ShadowDepthBias: 1 + m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 + m_SoftShadowsSupported: 0 + m_ConservativeEnclosingSphere: 1 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 2 + m_AdditionalLightsCookieResolution: 1024 + m_AdditionalLightsCookieFormat: 1 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 1 + m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_UseAdaptivePerformance: 1 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 + m_UseFastSRGBLinearConversion: 1 + m_SupportDataDrivenLensFlare: 1 + m_SupportScreenSpaceLensFlare: 1 + m_GPUResidentDrawerMode: 0 + m_SmallMeshScreenPercentage: 0 + m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_VolumeFrameworkUpdateMode: 0 + m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2} + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilterXRKeywords: 1 + m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 0 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 1 + m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 0 + m_PrefilterSSAODepthNormals: 1 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 0 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 0 + m_PrefilterSSAOBlueNoise: 1 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 0 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 1 + m_PrefilterSoftShadowsQualityLow: 1 + m_PrefilterSoftShadowsQualityMedium: 1 + m_PrefilterSoftShadowsQualityHigh: 1 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 1 + m_PrefilterScreenSpaceIrradiance: 0 + m_PrefilterNativeRenderPass: 1 + m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 0 + m_PrefilterReflectionProbeRotation: 0 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 0 + m_ShaderVariantLogLevel: 0 + m_ShadowCascades: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} diff --git a/Assets/Settings/Mobile_RPAsset.asset.meta b/Assets/Settings/Mobile_RPAsset.asset.meta new file mode 100644 index 0000000..3660d15 --- /dev/null +++ b/Assets/Settings/Mobile_RPAsset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e6cbd92db86f4b18aec3ed561671858 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/Mobile_Renderer.asset b/Assets/Settings/Mobile_Renderer.asset new file mode 100644 index 0000000..ea246b2 --- /dev/null +++ b/Assets/Settings/Mobile_Renderer.asset @@ -0,0 +1,52 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: Mobile_Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, + type: 3} + probeVolumeResources: + probeVolumeDebugShader: {fileID: 0} + probeVolumeFragmentationDebugShader: {fileID: 0} + probeVolumeOffsetDebugShader: {fileID: 0} + probeVolumeSamplingDebugShader: {fileID: 0} + probeSamplingDebugMesh: {fileID: 0} + probeSamplingDebugTexture: {fileID: 0} + probeVolumeBlendStatesCS: {fileID: 0} + m_RendererFeatures: [] + m_RendererFeatureMap: + m_UseNativeRenderPass: 1 + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 0 + stencilCompareFunction: 8 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 0 + m_RenderingMode: 0 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 0 diff --git a/Assets/Settings/Mobile_Renderer.asset.meta b/Assets/Settings/Mobile_Renderer.asset.meta new file mode 100644 index 0000000..a3588b1 --- /dev/null +++ b/Assets/Settings/Mobile_Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 65bc7dbf4170f435aa868c779acfb082 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/PC_RPAsset.asset b/Assets/Settings/PC_RPAsset.asset new file mode 100644 index 0000000..9b2b046 --- /dev/null +++ b/Assets/Settings/PC_RPAsset.asset @@ -0,0 +1,143 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: bf2edee5c58d82540a51f03df9d42094, type: 3} + m_Name: PC_RPAsset + m_EditorClassIdentifier: + k_AssetVersion: 13 + k_AssetPreviousVersion: 13 + m_RendererType: 1 + m_RendererData: {fileID: 0} + m_RendererDataList: + - {fileID: 11400000, guid: f288ae1f4751b564a96ac7587541f7a2, type: 2} + m_DefaultRendererIndex: 0 + m_RequireDepthTexture: 1 + m_RequireOpaqueTexture: 1 + m_OpaqueDownsampling: 1 + m_SupportsTerrainHoles: 1 + m_SupportsHDR: 1 + m_HDRColorBufferPrecision: 0 + m_MSAA: 1 + m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 + m_EnableLODCrossFade: 1 + m_LODCrossFadeDitheringType: 1 + m_ShEvalMode: 0 + m_LightProbeSystem: 0 + m_ProbeVolumeMemoryBudget: 1024 + m_ProbeVolumeBlendingMemoryBudget: 256 + m_SupportProbeVolumeGPUStreaming: 0 + m_SupportProbeVolumeDiskStreaming: 0 + m_SupportProbeVolumeScenarios: 0 + m_SupportProbeVolumeScenarioBlending: 0 + m_ProbeVolumeSHBands: 1 + m_MainLightRenderingMode: 1 + m_MainLightShadowsSupported: 1 + m_MainLightShadowmapResolution: 2048 + m_AdditionalLightsRenderingMode: 1 + m_AdditionalLightsPerObjectLimit: 4 + m_AdditionalLightShadowsSupported: 1 + m_AdditionalLightsShadowmapResolution: 2048 + m_AdditionalLightsShadowResolutionTierLow: 256 + m_AdditionalLightsShadowResolutionTierMedium: 512 + m_AdditionalLightsShadowResolutionTierHigh: 1024 + m_ReflectionProbeBlending: 1 + m_ReflectionProbeBoxProjection: 1 + m_ReflectionProbeAtlas: 1 + m_ShadowDistance: 50 + m_ShadowCascadeCount: 4 + m_Cascade2Split: 0.25 + m_Cascade3Split: {x: 0.1, y: 0.3} + m_Cascade4Split: {x: 0.12299999, y: 0.2926, z: 0.53599995} + m_CascadeBorder: 0.107758604 + m_ShadowDepthBias: 0.1 + m_ShadowNormalBias: 0.5 + m_AnyShadowsSupported: 1 + m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 1 + m_NumIterationsEnclosingSphere: 64 + m_SoftShadowQuality: 3 + m_AdditionalLightsCookieResolution: 2048 + m_AdditionalLightsCookieFormat: 3 + m_UseSRPBatcher: 1 + m_SupportsDynamicBatching: 0 + m_MixedLightingSupported: 1 + m_SupportsLightCookies: 1 + m_SupportsLightLayers: 1 + m_DebugLevel: 0 + m_StoreActionsOptimization: 0 + m_UseAdaptivePerformance: 1 + m_ColorGradingMode: 0 + m_ColorGradingLutSize: 32 + m_AllowPostProcessAlphaOutput: 0 + m_UseFastSRGBLinearConversion: 0 + m_SupportDataDrivenLensFlare: 1 + m_SupportScreenSpaceLensFlare: 1 + m_GPUResidentDrawerMode: 0 + m_SmallMeshScreenPercentage: 0 + m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0 + m_ShadowType: 1 + m_LocalShadowsSupported: 0 + m_LocalShadowsAtlasResolution: 256 + m_MaxPixelLights: 0 + m_ShadowAtlasResolution: 256 + m_VolumeFrameworkUpdateMode: 0 + m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2} + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + m_PrefilteringModeMainLightShadows: 3 + m_PrefilteringModeAdditionalLight: 4 + m_PrefilteringModeAdditionalLightShadows: 0 + m_PrefilterXRKeywords: 1 + m_PrefilteringModeForwardPlus: 1 + m_PrefilteringModeDeferredRendering: 0 + m_PrefilteringModeScreenSpaceOcclusion: 1 + m_PrefilterDebugKeywords: 1 + m_PrefilterWriteRenderingLayers: 0 + m_PrefilterHDROutput: 1 + m_PrefilterAlphaOutput: 0 + m_PrefilterSSAODepthNormals: 0 + m_PrefilterSSAOSourceDepthLow: 1 + m_PrefilterSSAOSourceDepthMedium: 1 + m_PrefilterSSAOSourceDepthHigh: 1 + m_PrefilterSSAOInterleaved: 1 + m_PrefilterSSAOBlueNoise: 0 + m_PrefilterSSAOSampleCountLow: 1 + m_PrefilterSSAOSampleCountMedium: 0 + m_PrefilterSSAOSampleCountHigh: 1 + m_PrefilterDBufferMRT1: 1 + m_PrefilterDBufferMRT2: 1 + m_PrefilterDBufferMRT3: 0 + m_PrefilterSoftShadowsQualityLow: 0 + m_PrefilterSoftShadowsQualityMedium: 0 + m_PrefilterSoftShadowsQualityHigh: 0 + m_PrefilterSoftShadows: 0 + m_PrefilterScreenCoord: 1 + m_PrefilterScreenSpaceIrradiance: 0 + m_PrefilterNativeRenderPass: 1 + m_PrefilterUseLegacyLightmaps: 0 + m_PrefilterBicubicLightmapSampling: 0 + m_PrefilterReflectionProbeRotation: 0 + m_PrefilterReflectionProbeBlending: 0 + m_PrefilterReflectionProbeBoxProjection: 0 + m_PrefilterReflectionProbeAtlas: 0 + m_ShaderVariantLogLevel: 0 + m_ShadowCascades: 0 + m_Textures: + blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} diff --git a/Assets/Settings/PC_RPAsset.asset.meta b/Assets/Settings/PC_RPAsset.asset.meta new file mode 100644 index 0000000..e286b2f --- /dev/null +++ b/Assets/Settings/PC_RPAsset.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b83569d67af61e458304325a23e5dfd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/PC_Renderer.asset b/Assets/Settings/PC_Renderer.asset new file mode 100644 index 0000000..475b02e --- /dev/null +++ b/Assets/Settings/PC_Renderer.asset @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} + m_Name: PC_Renderer + m_EditorClassIdentifier: + debugShaders: + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, + type: 3} + hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, + type: 3} + probeVolumeResources: + probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, + type: 3} + probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, + type: 3} + probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, + type: 3} + probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, + type: 3} + probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, + type: 3} + probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, + type: 3} + probeVolumeBlendStatesCS: {fileID: 7200000, guid: b9a23f869c4fd45f19c5ada54dd82176, + type: 3} + m_RendererFeatures: + - {fileID: 7833122117494664109} + m_RendererFeatureMap: ad6b866f10d7b46c + m_UseNativeRenderPass: 1 + postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} + m_AssetVersion: 2 + m_OpaqueLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_TransparentLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_DefaultStencilState: + overrideStencilState: 0 + stencilReference: 1 + stencilCompareFunction: 3 + passOperation: 2 + failOperation: 0 + zFailOperation: 0 + m_ShadowTransparentReceive: 1 + m_RenderingMode: 2 + m_DepthPrimingMode: 0 + m_CopyDepthMode: 0 + m_AccurateGbufferNormals: 0 + m_IntermediateTextureMode: 0 +--- !u!114 &7833122117494664109 +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: f62c9c65cf3354c93be831c8bc075510, type: 3} + m_Name: ScreenSpaceAmbientOcclusion + m_EditorClassIdentifier: + m_Active: 1 + m_Settings: + AOMethod: 0 + Downsample: 0 + AfterOpaque: 0 + Source: 1 + NormalSamples: 1 + Intensity: 0.4 + DirectLightingStrength: 0.25 + Radius: 0.3 + Samples: 1 + BlurQuality: 0 + Falloff: 100 + SampleCount: -1 + m_BlueNoise256Textures: + - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} + - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} + - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} + - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} + - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} + - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} + - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} + m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} diff --git a/Assets/Settings/PC_Renderer.asset.meta b/Assets/Settings/PC_Renderer.asset.meta new file mode 100644 index 0000000..ddae6a5 --- /dev/null +++ b/Assets/Settings/PC_Renderer.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f288ae1f4751b564a96ac7587541f7a2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/SampleSceneProfile.asset b/Assets/Settings/SampleSceneProfile.asset new file mode 100644 index 0000000..7378b8f --- /dev/null +++ b/Assets/Settings/SampleSceneProfile.asset @@ -0,0 +1,185 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7893295128165547882 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 0b2db86121404754db890f4c8dfe81b2, type: 3} + m_Name: Bloom + m_EditorClassIdentifier: + active: 1 + skipIterations: + m_OverrideState: 1 + m_Value: 0 + threshold: + m_OverrideState: 1 + m_Value: 1 + intensity: + m_OverrideState: 1 + m_Value: 0.25 + scatter: + m_OverrideState: 1 + m_Value: 0.5 + clamp: + m_OverrideState: 0 + m_Value: 65472 + tint: + m_OverrideState: 0 + m_Value: {r: 1, g: 1, b: 1, a: 1} + highQualityFiltering: + m_OverrideState: 1 + m_Value: 1 + filter: + m_OverrideState: 0 + m_Value: 0 + downscale: + m_OverrideState: 0 + m_Value: 0 + maxIterations: + m_OverrideState: 0 + m_Value: 6 + dirtTexture: + m_OverrideState: 0 + m_Value: {fileID: 0} + dimension: 1 + dirtIntensity: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &-3357603926938260329 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 899c54efeace73346a0a16faa3afe726, type: 3} + m_Name: Vignette + m_EditorClassIdentifier: + active: 1 + color: + m_OverrideState: 0 + m_Value: {r: 0, g: 0, b: 0, a: 1} + center: + m_OverrideState: 0 + m_Value: {x: 0.5, y: 0.5} + intensity: + m_OverrideState: 1 + m_Value: 0.2 + smoothness: + m_OverrideState: 0 + m_Value: 0.2 + rounded: + m_OverrideState: 0 + m_Value: 0 +--- !u!114 &-2861522193539684274 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 5485954d14dfb9a4c8ead8edb0ded5b1, type: 3} + m_Name: LiftGammaGain + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.LiftGammaGain + active: 1 + lift: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: -0.018951265} + gamma: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0.016845778} + gain: + m_OverrideState: 1 + m_Value: {x: 1, y: 1, z: 1, w: 0.3011148} +--- !u!114 &11400000 +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: d7fd9488000d3734a9e00ee676215985, type: 3} + m_Name: SampleSceneProfile + m_EditorClassIdentifier: + components: + - {fileID: 849379129802519247} + - {fileID: -2861522193539684274} + - {fileID: -7893295128165547882} + - {fileID: 7391319092446245454} + - {fileID: -3357603926938260329} +--- !u!114 &849379129802519247 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: 97c23e3b12dc18c42a140437e53d3951, type: 3} + m_Name: Tonemapping + m_EditorClassIdentifier: + active: 1 + mode: + m_OverrideState: 1 + m_Value: 1 + neutralHDRRangeReductionMode: + m_OverrideState: 0 + m_Value: 2 + acesPreset: + m_OverrideState: 0 + m_Value: 3 + hueShiftAmount: + m_OverrideState: 0 + m_Value: 0 + detectPaperWhite: + m_OverrideState: 1 + m_Value: 0 + paperWhite: + m_OverrideState: 1 + m_Value: 234 + detectBrightnessLimits: + m_OverrideState: 1 + m_Value: 1 + minNits: + m_OverrideState: 1 + m_Value: 0.005 + maxNits: + m_OverrideState: 1 + m_Value: 647 +--- !u!114 &7391319092446245454 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: ccf1aba9553839d41ae37dd52e9ebcce, type: 3} + m_Name: MotionBlur + m_EditorClassIdentifier: + active: 0 + mode: + m_OverrideState: 0 + m_Value: 0 + quality: + m_OverrideState: 1 + m_Value: 2 + intensity: + m_OverrideState: 1 + m_Value: 0.6 + clamp: + m_OverrideState: 0 + m_Value: 0.05 diff --git a/Assets/Settings/SampleSceneProfile.asset.meta b/Assets/Settings/SampleSceneProfile.asset.meta new file mode 100644 index 0000000..b82270c --- /dev/null +++ b/Assets/Settings/SampleSceneProfile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 10fc4df2da32a41aaa32d77bc913491c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset new file mode 100644 index 0000000..d5b5f96 --- /dev/null +++ b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset @@ -0,0 +1,433 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +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: 2ec995e51a6e251468d2a3fd8a686257, type: 3} + m_Name: UniversalRenderPipelineGlobalSettings + m_EditorClassIdentifier: + m_ShaderStrippingSetting: + m_Version: 0 + m_ExportShaderVariants: 1 + m_ShaderVariantLogLevel: 0 + m_StripRuntimeDebugShaders: 1 + m_URPShaderStrippingSetting: + m_Version: 0 + m_StripUnusedPostProcessingVariants: 1 + m_StripUnusedVariants: 1 + m_StripScreenCoordOverrideVariants: 1 + m_ShaderVariantLogLevel: 0 + m_ExportShaderVariants: 1 + m_StripDebugVariants: 1 + m_StripUnusedPostProcessingVariants: 1 + m_StripUnusedVariants: 1 + m_StripScreenCoordOverrideVariants: 1 + supportRuntimeDebugDisplay: 0 + m_EnableRenderGraph: 0 + m_Settings: + m_SettingsList: + m_List: + - rid: 6852985685364965376 + - rid: 6852985685364965377 + - rid: 6852985685364965378 + - rid: 6852985685364965379 + - rid: 6852985685364965380 + - rid: 6852985685364965381 + - rid: 6852985685364965382 + - rid: 6852985685364965383 + - rid: 6852985685364965384 + - rid: 6852985685364965385 + - rid: 6852985685364965386 + - rid: 6852985685364965387 + - rid: 6852985685364965388 + - rid: 6852985685364965389 + - rid: 6852985685364965390 + - rid: 6852985685364965391 + - rid: 6852985685364965392 + - rid: 6852985685364965393 + - rid: 6852985685364965394 + - rid: 8712630790384254976 + - rid: 9065209991585333248 + - rid: 9065209991585333249 + - rid: 9065209991585333250 + - rid: 9065209991585333251 + - rid: 9065209991585333252 + - rid: 9065209991585333253 + - rid: 9065209991585333254 + - rid: 9065209991585333255 + - rid: 9065209991585333256 + - rid: 9065209991585333257 + - rid: 9065209991585333258 + - rid: 9065209991585333259 + - rid: 9065209991585333260 + - rid: 9065209991585333261 + m_RuntimeSettings: + m_List: [] + m_AssetVersion: 10 + m_ObsoleteDefaultVolumeProfile: {fileID: 0} + m_RenderingLayerNames: + - Light Layer default + - Light Layer 1 + - Light Layer 2 + - Light Layer 3 + - Light Layer 4 + - Light Layer 5 + - Light Layer 6 + - Light Layer 7 + m_ValidRenderingLayers: 0 + lightLayerName0: Light Layer default + lightLayerName1: Light Layer 1 + lightLayerName2: Light Layer 2 + lightLayerName3: Light Layer 3 + lightLayerName4: Light Layer 4 + lightLayerName5: Light Layer 5 + lightLayerName6: Light Layer 6 + lightLayerName7: Light Layer 7 + apvScenesData: + obsoleteSceneBounds: + m_Keys: [] + m_Values: [] + obsoleteHasProbeVolumes: + m_Keys: [] + m_Values: + references: + version: 2 + RefIds: + - rid: 6852985685364965376 + type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_StripUnusedPostProcessingVariants: 1 + m_StripUnusedVariants: 1 + m_StripScreenCoordOverrideVariants: 1 + - rid: 6852985685364965377 + type: {class: UniversalRenderPipelineEditorShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_AutodeskInteractive: {fileID: 4800000, guid: 0e9d5a909a1f7e84882a534d0d11e49f, type: 3} + m_AutodeskInteractiveTransparent: {fileID: 4800000, guid: 5c81372d981403744adbdda4433c9c11, type: 3} + m_AutodeskInteractiveMasked: {fileID: 4800000, guid: 80aa867ac363ac043847b06ad71604cd, type: 3} + m_DefaultSpeedTree7Shader: {fileID: 4800000, guid: 0f4122b9a743b744abe2fb6a0a88868b, type: 3} + m_DefaultSpeedTree8Shader: {fileID: -6465566751694194690, guid: 9920c1f1781549a46ba081a2a15a16ec, type: 3} + m_DefaultSpeedTree9Shader: {fileID: -6465566751694194690, guid: cbd3e1cc4ae141c42a30e33b4d666a61, type: 3} + - rid: 6852985685364965378 + type: {class: UniversalRendererResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + m_CameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3} + m_StencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} + m_ClusterDeferred: {fileID: 4800000, guid: 222cce62363a44a380c36bf03b392608, type: 3} + m_StencilDitherMaskSeedPS: {fileID: 4800000, guid: 8c3ee818f2efa514c889881ccb2e95a2, type: 3} + m_DBufferClear: {fileID: 4800000, guid: f056d8bd2a1c7e44e9729144b4c70395, type: 3} + - rid: 6852985685364965379 + type: {class: UniversalRenderPipelineDebugShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_DebugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} + m_HdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} + m_ProbeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3} + - rid: 6852985685364965380 + type: {class: UniversalRenderPipelineRuntimeShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} + m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} + m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} + m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} + m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} + m_TerrainDetailLit: {fileID: 0} + m_TerrainDetailGrassBillboard: {fileID: 0} + m_TerrainDetailGrass: {fileID: 0} + - rid: 6852985685364965381 + type: {class: UniversalRenderPipelineRuntimeTextures, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 1 + m_BlueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} + m_BayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} + m_DebugFontTex: {fileID: 2800000, guid: 26a413214480ef144b2915d6ff4d0beb, type: 3} + - rid: 6852985685364965382 + type: {class: Renderer2DResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_LightShader: {fileID: 4800000, guid: 3f6c848ca3d7bca4bbe846546ac701a1, type: 3} + m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, type: 3} + m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, type: 3} + m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3} + m_GeometryShadowShader: {fileID: 4800000, guid: 19349a0f9a7ed4c48a27445bcf92e5e1, type: 3} + m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3} + m_CopyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} + m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2} + m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2} + m_DefaultMesh2DLitMaterial: {fileID: 2100000, guid: 9452ae1262a74094f8a68013fbcd1834, type: 2} + - rid: 6852985685364965383 + type: {class: UniversalRenderPipelineEditorMaterials, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_DefaultMaterial: {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_DefaultParticleMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2} + m_DefaultLineMaterial: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2} + m_DefaultTerrainMaterial: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2} + m_DefaultDecalMaterial: {fileID: 2100000, guid: 31d0dcc6f2dd4e4408d18036a2c93862, type: 2} + m_DefaultSpriteMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2} + - rid: 6852985685364965384 + type: {class: URPDefaultVolumeProfileSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_VolumeProfile: {fileID: 11400000, guid: ab09877e2e707104187f6f83e2f62510, type: 2} + - rid: 6852985685364965385 + type: {class: RenderGraphSettings, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_EnableRenderCompatibilityMode: 0 + - rid: 6852985685364965386 + type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime} + data: + m_Version: 0 + m_InstanceDataBufferCopyKernels: {fileID: 7200000, guid: f984aeb540ded8b4fbb8a2047ab5b2e2, type: 3} + m_InstanceDataBufferUploadKernels: {fileID: 7200000, guid: 53864816eb00f2343b60e1a2c5a262ef, type: 3} + m_TransformUpdaterKernels: {fileID: 7200000, guid: 2a567b9b2733f8d47a700c3c85bed75b, type: 3} + m_WindDataUpdaterKernels: {fileID: 7200000, guid: fde76746e4fd0ed418c224f6b4084114, type: 3} + m_OccluderDepthPyramidKernels: {fileID: 7200000, guid: 08b2b5fb307b0d249860612774a987da, type: 3} + m_InstanceOcclusionCullingKernels: {fileID: 7200000, guid: f6d223acabc2f974795a5a7864b50e6c, type: 3} + m_OcclusionCullingDebugKernels: {fileID: 7200000, guid: b23e766bcf50ca4438ef186b174557df, type: 3} + m_DebugOcclusionTestPS: {fileID: 4800000, guid: d3f0849180c2d0944bc71060693df100, type: 3} + m_DebugOccluderPS: {fileID: 4800000, guid: b3c92426a88625841ab15ca6a7917248, type: 3} + - rid: 6852985685364965387 + type: {class: STP/RuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_setupCS: {fileID: 7200000, guid: 33be2e9a5506b2843bdb2bdff9cad5e1, type: 3} + m_preTaaCS: {fileID: 7200000, guid: a679dba8ec4d9ce45884a270b0e22dda, type: 3} + m_taaCS: {fileID: 7200000, guid: 3923900e2b41b5e47bc25bfdcbcdc9e6, type: 3} + - rid: 6852985685364965388 + type: {class: ProbeVolumeBakingResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + dilationShader: {fileID: 7200000, guid: 6bb382f7de370af41b775f54182e491d, type: 3} + subdivideSceneCS: {fileID: 7200000, guid: bb86f1f0af829fd45b2ebddda1245c22, type: 3} + voxelizeSceneShader: {fileID: 4800000, guid: c8b6a681c7b4e2e4785ffab093907f9e, type: 3} + traceVirtualOffsetCS: {fileID: -6772857160820960102, guid: ff2cbab5da58bf04d82c5f34037ed123, type: 3} + traceVirtualOffsetRT: {fileID: -5126288278712620388, guid: ff2cbab5da58bf04d82c5f34037ed123, type: 3} + skyOcclusionCS: {fileID: -6772857160820960102, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3} + skyOcclusionRT: {fileID: -5126288278712620388, guid: 5a2a534753fbdb44e96c3c78b5a6999d, type: 3} + renderingLayerCS: {fileID: -6772857160820960102, guid: 94a070d33e408384bafc1dea4a565df9, type: 3} + renderingLayerRT: {fileID: -5126288278712620388, guid: 94a070d33e408384bafc1dea4a565df9, type: 3} + - rid: 6852985685364965389 + type: {class: ProbeVolumeGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + m_ProbeVolumeDisableStreamingAssets: 0 + - rid: 6852985685364965390 + type: {class: ProbeVolumeDebugResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + probeVolumeDebugShader: {fileID: 4800000, guid: 3b21275fd12d65f49babb5286f040f2d, type: 3} + probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 3a80877c579b9144ebdcc6d923bca303, type: 3} + probeVolumeSamplingDebugShader: {fileID: 4800000, guid: bf54e6528c79a224e96346799064c393, type: 3} + probeVolumeOffsetDebugShader: {fileID: 4800000, guid: db8bd7436dc2c5f4c92655307d198381, type: 3} + probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 20be25aac4e22ee49a7db76fb3df6de2, type: 3} + numbersDisplayTex: {fileID: 2800000, guid: 73fe53b428c5b3440b7e87ee830b608a, type: 3} + - rid: 6852985685364965391 + type: {class: IncludeAdditionalRPAssets, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_version: 0 + m_IncludeReferencedInScenes: 0 + m_IncludeAssetsByLabel: 0 + m_LabelToInclude: + - rid: 6852985685364965392 + type: {class: ShaderStrippingSetting, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 0 + m_ExportShaderVariants: 1 + m_ShaderVariantLogLevel: 0 + m_StripRuntimeDebugShaders: 1 + - rid: 6852985685364965393 + type: {class: ProbeVolumeRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + probeVolumeBlendStatesCS: {fileID: 7200000, guid: a3f7b8c99de28a94684cb1daebeccf5d, type: 3} + probeVolumeUploadDataCS: {fileID: 7200000, guid: 0951de5992461754fa73650732c4954c, type: 3} + probeVolumeUploadDataL2CS: {fileID: 7200000, guid: 6196f34ed825db14b81fb3eb0ea8d931, type: 3} + - rid: 6852985685364965394 + type: {class: RenderGraphGlobalSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_version: 0 + m_EnableCompilationCaching: 1 + m_EnableValidityChecks: 1 + - rid: 8712630790384254976 + type: {class: RenderGraphUtilsResources, ns: UnityEngine.Rendering.RenderGraphModule.Util, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 0 + m_CoreCopyPS: {fileID: 4800000, guid: 12dc59547ea167a4ab435097dd0f9add, type: 3} + - rid: 9065209991585333248 + type: {class: RayTracingRenderPipelineResources, ns: UnityEngine.Rendering.UnifiedRayTracing, asm: Unity.UnifiedRayTracing.Runtime} + data: + m_Version: 1 + m_GeometryPoolKernels: {fileID: 7200000, guid: 98e3d58cae7210c4786f67f504c9e899, type: 3} + m_CopyBuffer: {fileID: 7200000, guid: 1b95b5dcf48d1914c9e1e7405c7660e3, type: 3} + m_CopyPositions: {fileID: 7200000, guid: 1ad53a96b58d3c3488dde4f14db1aaeb, type: 3} + m_BitHistogram: {fileID: 7200000, guid: 8670f7ce4b60cef43bed36148aa1b0a2, type: 3} + m_BlockReducePart: {fileID: 7200000, guid: 4e034cc8ea2635c4e9f063e5ddc7ea7a, type: 3} + m_BlockScan: {fileID: 7200000, guid: 4d6d5de35fa45ef4a92119397a045cc9, type: 3} + m_BuildHlbvh: {fileID: 7200000, guid: 2d70cd6be91bd7843a39a54b51c15b13, type: 3} + m_RestructureBvh: {fileID: 7200000, guid: 56641cb88dcb31a4398a4997ef7a7a8c, type: 3} + m_Scatter: {fileID: 7200000, guid: a2eaeefdac4637a44b734e85b7be9186, type: 3} + - rid: 9065209991585333249 + type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2} + - rid: 9065209991585333250 + type: {class: UniversalRenderPipelineRuntimeTerrainShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3} + m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3} + m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3} + - rid: 9065209991585333251 + type: {class: URPTerrainShaderSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_IncludeTerrainShaders: 1 + - rid: 9065209991585333252 + type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3} + subpixelMorphologicalAntialiasingPS: {fileID: 4800000, guid: 63eaba0ebfb82cc43bde059b4a8c65f6, type: 3} + gaussianDepthOfFieldPS: {fileID: 4800000, guid: 5e7134d6e63e0bc47a1dd2669cedb379, type: 3} + bokehDepthOfFieldPS: {fileID: 4800000, guid: 2aed67ad60045d54ba3a00c91e2d2631, type: 3} + cameraMotionBlurPS: {fileID: 4800000, guid: 1edcd131364091c46a17cbff0b1de97a, type: 3} + paniniProjectionPS: {fileID: 4800000, guid: a15b78cf8ca26ca4fb2090293153c62c, type: 3} + lutBuilderLdrPS: {fileID: 4800000, guid: 65df88701913c224d95fc554db28381a, type: 3} + lutBuilderHdrPS: {fileID: 4800000, guid: ec9fec698a3456d4fb18cf8bacb7a2bc, type: 3} + bloomPS: {fileID: 4800000, guid: 5f1864addb451f54bae8c86d230f736e, type: 3} + temporalAntialiasingPS: {fileID: 4800000, guid: 9c70c1a35ff15f340b38ea84842358bf, type: 3} + LensFlareDataDrivenPS: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} + LensFlareScreenSpacePS: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3} + scalingSetupPS: {fileID: 4800000, guid: e8ee25143a34b8c4388709ea947055d1, type: 3} + easuPS: {fileID: 4800000, guid: 562b7ae4f629f144aa97780546fce7c6, type: 3} + uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3} + finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3} + m_ShaderResourcesVersion: 0 + - rid: 9065209991585333253 + type: {class: URPReflectionProbeSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Universal.Runtime} + data: + version: 1 + useReflectionProbeRotation: 0 + - rid: 9065209991585333254 + type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_BlueNoise256Textures: + - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} + - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} + - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} + - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} + - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} + - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} + - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} + m_Version: 0 + - rid: 9065209991585333255 + type: {class: OnTilePostProcessResource, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Version: 0 + m_UberPostShader: {fileID: 4800000, guid: fe4f13c1004a07d4ea1e30bfd0326d9e, type: 3} + - rid: 9065209991585333256 + type: {class: UniversalRenderPipelineRuntimeXRResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_xrOcclusionMeshPS: {fileID: 4800000, guid: 4431b1f1f743fbf4eb310a967890cbea, type: 3} + m_xrMirrorViewPS: {fileID: 4800000, guid: d5a307c014552314b9f560906d708772, type: 3} + m_xrMotionVector: {fileID: 4800000, guid: f89aac1e4f84468418fe30e611dff395, type: 3} + - rid: 9065209991585333257 + type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} + m_Version: 0 + - rid: 9065209991585333258 + type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} + data: + blueNoise16LTex: + - {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3} + - {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3} + - {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3} + - {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3} + - {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3} + - {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3} + - {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3} + - {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3} + - {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3} + - {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3} + - {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3} + - {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3} + - {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3} + - {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3} + - {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3} + - {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3} + - {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3} + - {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3} + - {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3} + - {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3} + - {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3} + - {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3} + - {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3} + - {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3} + - {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3} + - {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3} + - {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3} + - {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3} + - {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3} + - {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3} + - {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3} + - {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3} + filmGrainTex: + - {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3} + - {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3} + - {fileID: 2800000, guid: 1097e90e1306e26439701489f391a6c0, type: 3} + - {fileID: 2800000, guid: f0b67500f7fad3b4c9f2b13e8f41ba6e, type: 3} + - {fileID: 2800000, guid: 9930fb4528622b34687b00bbe6883de7, type: 3} + - {fileID: 2800000, guid: bd9e8c758250ef449a4b4bfaad7a2133, type: 3} + - {fileID: 2800000, guid: 510a2f57334933e4a8dbabe4c30204e4, type: 3} + - {fileID: 2800000, guid: b4db8180660810945bf8d55ab44352ad, type: 3} + - {fileID: 2800000, guid: fd2fd78b392986e42a12df2177d3b89c, type: 3} + - {fileID: 2800000, guid: 5cdee82a77d13994f83b8fdabed7c301, type: 3} + smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3} + smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3} + m_TexturesResourcesVersion: 0 + - rid: 9065209991585333259 + type: {class: VrsRenderPipelineRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_TextureComputeShader: {fileID: 7200000, guid: cacb30de6c40c7444bbc78cb0a81fd2a, type: 3} + m_VisualizationShader: {fileID: 4800000, guid: 620b55b8040a88d468e94abe55bed5ba, type: 3} + m_VisualizationLookupTable: + m_Data: + - {r: 0.785, g: 0.23, b: 0.2, a: 1} + - {r: 1, g: 0.8, b: 0.8, a: 1} + - {r: 0.4, g: 0.2, b: 0.2, a: 1} + - {r: 0.51, g: 0.8, b: 0.6, a: 1} + - {r: 0.6, g: 0.8, b: 1, a: 1} + - {r: 0.2, g: 0.4, b: 0.6, a: 1} + - {r: 0.8, g: 1, b: 0.8, a: 1} + - {r: 0.2, g: 0.4, b: 0.2, a: 1} + - {r: 0.125, g: 0.22, b: 0.36, a: 1} + m_ConversionLookupTable: + m_Data: + - {r: 0.785, g: 0.23, b: 0.2, a: 1} + - {r: 1, g: 0.8, b: 0.8, a: 1} + - {r: 0.4, g: 0.2, b: 0.2, a: 1} + - {r: 0.51, g: 0.8, b: 0.6, a: 1} + - {r: 0.6, g: 0.8, b: 1, a: 1} + - {r: 0.2, g: 0.4, b: 0.6, a: 1} + - {r: 0.8, g: 1, b: 0.8, a: 1} + - {r: 0.2, g: 0.4, b: 0.2, a: 1} + - {r: 0.125, g: 0.22, b: 0.36, a: 1} + - rid: 9065209991585333260 + type: {class: RenderingDebuggerRuntimeResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_version: 0 + - rid: 9065209991585333261 + type: {class: LightmapSamplingSettings, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.Core.Runtime} + data: + m_Version: 1 + m_UseBicubicLightmapSampling: 0 diff --git a/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset.meta b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset.meta new file mode 100644 index 0000000..81b84f2 --- /dev/null +++ b/Assets/Settings/UniversalRenderPipelineGlobalSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18dc0cd2c080841dea60987a38ce93fa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders.meta b/Assets/Shaders.meta new file mode 100644 index 0000000..63286d7 --- /dev/null +++ b/Assets/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a34533662e950a408f311e64215ed7e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/MeshPaintBrush.shader b/Assets/Shaders/MeshPaintBrush.shader new file mode 100644 index 0000000..9234f4b --- /dev/null +++ b/Assets/Shaders/MeshPaintBrush.shader @@ -0,0 +1,74 @@ +// GPU brush: paints a 3D sphere seamlessly into the paint texture. +// +// In the vertex shader the mesh is "unwrapped" into the texture layout using its +// UVs (uv -> clip space), while the actual local 3D position of the vertex is +// passed through to the fragment shader. There, per texel, the distance to the +// brush center (_BrushCenter, in local mesh space) is tested against _BrushRadius. +// +// This bridges UV seams automatically: triangles on both sides of a seam share +// the same 3D edge and are captured by the same brush stroke, no matter where +// they lie in the UV layout (identical behavior to the CPU path). +Shader "Hidden/MeshPaintBrush" +{ + Properties + { + _BrushColor ("Brush Color", Color) = (1,0,0,1) + } + SubShader + { + Tags { "RenderType" = "Opaque" } + Pass + { + ZTest Always + ZWrite Off + Cull Off + Blend Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #include "UnityCG.cginc" + + float4 _BrushColor; + float3 _BrushCenter; // brush center in local mesh space + float _BrushRadius; // brush radius in local mesh space + + struct appdata + { + float4 vertex : POSITION; // local 3D position + float2 uv : TEXCOORD0; // UV (target in the texture layout) + }; + + struct v2f + { + float4 pos : SV_POSITION; + float3 local : TEXCOORD0; // interpolated local 3D position + }; + + v2f vert (appdata v) + { + v2f o; + // UV (0..1) -> clip space (-1..1). This makes the GPU rasterize + // each triangle exactly at its place in the texture. + float2 p = v.uv * 2.0 - 1.0; + #if UNITY_UV_STARTS_AT_TOP + p.y = -p.y; // compensate the RenderTexture Y-flip (D3D etc.) + #endif + o.pos = float4(p, 0.0, 1.0); + o.local = v.vertex.xyz; + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + // Only color texels inside the 3D brush sphere. + float d = distance(i.local, _BrushCenter); + clip(_BrushRadius - d); + // Alpha = 1 marks "painted by the brush" (source for the edge padding). + return fixed4(_BrushColor.rgb, 1.0); + } + ENDCG + } + } + Fallback Off +} diff --git a/Assets/Shaders/MeshPaintBrush.shader.meta b/Assets/Shaders/MeshPaintBrush.shader.meta new file mode 100644 index 0000000..9c73c66 --- /dev/null +++ b/Assets/Shaders/MeshPaintBrush.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cfff45d9ec693b247909d39c182922ff +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/MeshPaintDilate.shader b/Assets/Shaders/MeshPaintDilate.shader new file mode 100644 index 0000000..ab7e81c --- /dev/null +++ b/Assets/Shaders/MeshPaintDilate.shader @@ -0,0 +1,72 @@ +// GPU edge padding / texture dilation against visible UV seams. +// +// Between the UV islands there is an unpainted border (gutter). During bilinear +// sampling at an island edge, the GPU mixes the painted edge with the unpainted +// base color -> bright seam lines. This pass "bleeds" the painted color up to +// _Pad texels beyond the island edges. +// +// The dilation source is exclusively painted texels (alpha >= 0.5). The padding +// texels produced get alpha = 0 -> next frame they are NO LONGER a source, so the +// padding does not grow unbounded (it stays at _Pad texels). +Shader "Hidden/MeshPaintDilate" +{ + Properties + { + _MainTex ("Texture", 2D) = "white" {} + } + SubShader + { + Tags { "RenderType" = "Opaque" } + Pass + { + ZTest Always + ZWrite Off + Cull Off + Blend Off + + CGPROGRAM + #pragma vertex vert_img + #pragma fragment frag + #include "UnityCG.cginc" + + sampler2D _MainTex; + float4 _MainTex_TexelSize; // (1/w, 1/h, w, h) + int _Pad; + + #define MAXPAD 16 + + fixed4 frag (v2f_img i) : SV_Target + { + fixed4 c = tex2D(_MainTex, i.uv); + if (c.a >= 0.5) return c; // already painted -> leave unchanged + + float2 ts = _MainTex_TexelSize.xy; + float best = 1e20; + fixed3 bestCol = c.rgb; + bool found = false; + + // Search the neighborhood (up to _Pad texels) for the nearest painted texel. + [loop] for (int y = -MAXPAD; y <= MAXPAD; y++) + { + if (abs(y) > _Pad) continue; + [loop] for (int x = -MAXPAD; x <= MAXPAD; x++) + { + if (abs(x) > _Pad) continue; + fixed4 s = tex2D(_MainTex, i.uv + float2(x, y) * ts); + if (s.a >= 0.5) + { + float dd = (float)(x * x + y * y); + if (dd < best) { best = dd; bestCol = s.rgb; found = true; } + } + } + } + + // Gutter: color of the nearest painted texel, but alpha = 0 (not a source). + if (found) return fixed4(bestCol, 0.0); + return c; // out of range -> base color unchanged + } + ENDCG + } + } + Fallback Off +} diff --git a/Assets/Shaders/MeshPaintDilate.shader.meta b/Assets/Shaders/MeshPaintDilate.shader.meta new file mode 100644 index 0000000..d68887f --- /dev/null +++ b/Assets/Shaders/MeshPaintDilate.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 387abc652c7ac1c449701bdfcf9d0f8b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/paintman_UV.FBX b/Assets/paintman_UV.FBX new file mode 100644 index 0000000000000000000000000000000000000000..0efd6447bbedbbd861c2e5fdd07f498ff5d8b658 GIT binary patch literal 150752 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%0AdSH=o9(^kdBA!FeY4v}fZ}@!d1Xt#zA` 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

Dfzr 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 a{rSoNTW;Tae0OWVwYd9pWP4#XJNz5BG0b29 literal 0 HcmV?d00001 diff --git a/Assets/paintman_UV.FBX.meta b/Assets/paintman_UV.FBX.meta new file mode 100644 index 0000000..a74b299 --- /dev/null +++ b/Assets/paintman_UV.FBX.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 554c0bdf86263754d862d7effd04045b +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 1 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json new file mode 100644 index 0000000..be79f88 --- /dev/null +++ b/Packages/manifest.json @@ -0,0 +1,32 @@ +{ + "dependencies": { + "com.coplaydev.unity-mcp": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main", + "com.unity.ide.visualstudio": "2.0.27", + "com.unity.inputsystem": "1.19.0", + "com.unity.multiplayer.center": "1.0.1", + "com.unity.render-pipelines.universal": "17.3.0", + "com.unity.timeline": "1.8.12", + "com.unity.ugui": "2.0.0", + "com.unity.visualscripting": "1.9.11", + "com.unity.modules.adaptiveperformance": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.umbra": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", + "com.unity.modules.unitywebrequestwww": "1.0.0", + "com.unity.modules.video": "1.0.0" + } +} diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json new file mode 100644 index 0000000..455e5aa --- /dev/null +++ b/Packages/packages-lock.json @@ -0,0 +1,375 @@ +{ + "dependencies": { + "com.coplaydev.unity-mcp": { + "version": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main", + "depth": 0, + "source": "git", + "dependencies": { + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.physics2d": "1.0.0", + "com.unity.modules.uielements": "1.0.0", + "com.unity.modules.screencapture": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.nuget.newtonsoft-json": "3.0.2", + "com.unity.test-framework": "1.1.31" + }, + "hash": "85c101f5329ec1b0c6f70cba44614166dd78f53c" + }, + "com.unity.burst": { + "version": "1.8.28", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.mathematics": "1.2.1", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.collections": { + "version": "2.6.2", + "depth": 2, + "source": "registry", + "dependencies": { + "com.unity.burst": "1.8.23", + "com.unity.mathematics": "1.3.2", + "com.unity.test-framework": "1.4.6", + "com.unity.nuget.mono-cecil": "1.11.5", + "com.unity.test-framework.performance": "3.0.3" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ext.nunit": { + "version": "2.0.5", + "depth": 2, + "source": "builtin", + "dependencies": {} + }, + "com.unity.ide.visualstudio": { + "version": "2.0.27", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.33" + }, + "url": "https://packages.unity.com" + }, + "com.unity.inputsystem": { + "version": "1.19.0", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.mathematics": { + "version": "1.3.3", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.multiplayer.center": { + "version": "1.0.1", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.uielements": "1.0.0" + } + }, + "com.unity.nuget.mono-cecil": { + "version": "1.11.6", + "depth": 3, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.nuget.newtonsoft-json": { + "version": "3.2.2", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.render-pipelines.core": { + "version": "17.3.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.burst": "1.8.14", + "com.unity.mathematics": "1.3.2", + "com.unity.ugui": "2.0.0", + "com.unity.collections": "2.4.3", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.terrain": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.render-pipelines.universal": { + "version": "17.3.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.render-pipelines.core": "17.3.0", + "com.unity.shadergraph": "17.3.0", + "com.unity.render-pipelines.universal-config": "17.0.3" + } + }, + "com.unity.render-pipelines.universal-config": { + "version": "17.0.3", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.render-pipelines.core": "17.0.3" + } + }, + "com.unity.searcher": { + "version": "4.9.4", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.shadergraph": { + "version": "17.3.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.render-pipelines.core": "17.3.0", + "com.unity.searcher": "4.9.3" + } + }, + "com.unity.test-framework": { + "version": "1.6.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.ext.nunit": "2.0.3", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.test-framework.performance": { + "version": "3.2.0", + "depth": 3, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.33", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.timeline": { + "version": "1.8.12", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.ugui": { + "version": "2.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + } + }, + "com.unity.visualscripting": { + "version": "1.9.11", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.modules.adaptiveperformance": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.subsystems": "1.0.0" + } + }, + "com.unity.modules.animation": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.assetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.audio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.director": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.animation": "1.0.0" + } + }, + "com.unity.modules.hierarchycore": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imageconversion": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.imgui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.jsonserialize": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.particlesystem": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.physics2d": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.screencapture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.subsystems": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.jsonserialize": "1.0.0" + } + }, + "com.unity.modules.terrain": { + "version": "1.0.0", + "depth": 2, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.ui": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.uielements": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.hierarchycore": "1.0.0", + "com.unity.modules.physics": "1.0.0" + } + }, + "com.unity.modules.umbra": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequest": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.modules.unitywebrequestassetbundle": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestaudio": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.audio": "1.0.0" + } + }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.unitywebrequestwww": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.assetbundle": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, + "com.unity.modules.video": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0" + } + } + } +} diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset new file mode 100644 index 0000000..27287fe --- /dev/null +++ b/ProjectSettings/AudioManager.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!11 &1 +AudioManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Volume: 1 + Rolloff Scale: 1 + Doppler Factor: 1 + Default Speaker Mode: 2 + m_SampleRate: 0 + m_DSPBufferSize: 1024 + m_VirtualVoiceCount: 512 + m_RealVoiceCount: 32 + m_SpatializerPlugin: + m_AmbisonicDecoderPlugin: + m_DisableAudio: 0 + m_VirtualizeEffects: 1 + m_RequestedDSPBufferSize: 0 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset new file mode 100644 index 0000000..e7886b2 --- /dev/null +++ b/ProjectSettings/ClusterInputManager.asset @@ -0,0 +1,6 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!236 &1 +ClusterInputManager: + m_ObjectHideFlags: 0 + m_Inputs: [] diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset new file mode 100644 index 0000000..fc90ab9 --- /dev/null +++ b/ProjectSettings/DynamicsManager.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!55 &1 +PhysicsManager: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_Gravity: {x: 0, y: -9.81, z: 0} + m_DefaultMaterial: {fileID: 0} + m_BounceThreshold: 2 + m_SleepThreshold: 0.005 + m_DefaultContactOffset: 0.01 + m_DefaultSolverIterations: 6 + m_DefaultSolverVelocityIterations: 1 + m_QueriesHitBackfaces: 0 + m_QueriesHitTriggers: 1 + m_EnableAdaptiveForce: 0 + m_ClothInterCollisionDistance: 0.1 + m_ClothInterCollisionStiffness: 0.2 + m_ContactsGeneration: 1 + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_AutoSimulation: 1 + m_AutoSyncTransforms: 0 + m_ReuseCollisionCallbacks: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ClothGravity: {x: 0, y: -9.81, z: 0} + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8 + m_FrictionType: 0 + m_EnableEnhancedDeterminism: 0 + m_EnableUnifiedHeightmaps: 1 + m_SolverType: 0 + m_DefaultMaxAngularSpeed: 50 diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset new file mode 100644 index 0000000..d057ba3 --- /dev/null +++ b/ProjectSettings/EditorBuildSettings.asset @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1045 &1 +EditorBuildSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Scenes: + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 99c9720ab356a0642a771bea13969a05 + m_configObjects: + com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3} + m_UseUCBPForAssetBundles: 0 diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset new file mode 100644 index 0000000..679594f --- /dev/null +++ b/ProjectSettings/EditorSettings.asset @@ -0,0 +1,50 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!159 &1 +EditorSettings: + m_ObjectHideFlags: 0 + serializedVersion: 15 + m_SerializationMode: 2 + m_LineEndingsForNewScripts: 0 + m_DefaultBehaviorMode: 0 + m_PrefabRegularEnvironment: {fileID: 0} + m_PrefabUIEnvironment: {fileID: 0} + m_SpritePackerMode: 0 + m_SpritePackerCacheSize: 10 + m_SpritePackerPaddingPower: 1 + m_Bc7TextureCompressor: 0 + m_EtcTextureCompressorBehavior: 1 + m_EtcTextureFastCompressor: 1 + m_EtcTextureNormalCompressor: 2 + m_EtcTextureBestCompressor: 4 + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref + m_ProjectGenerationRootNamespace: + m_EnableTextureStreamingInEditMode: 1 + m_EnableTextureStreamingInPlayMode: 1 + m_EnableEditorAsyncCPUTextureLoading: 0 + m_AsyncShaderCompilation: 1 + m_PrefabModeAllowAutoSave: 1 + m_EnterPlayModeOptionsEnabled: 1 + m_EnterPlayModeOptions: 3 + m_GameObjectNamingDigits: 1 + m_GameObjectNamingScheme: 0 + m_AssetNamingUsesSpace: 1 + m_InspectorUseIMGUIDefaultInspector: 0 + m_UseLegacyProbeSampleCount: 0 + m_SerializeInlineMappingsOnOneLine: 1 + m_DisableCookiesInLightmapper: 0 + m_ShadowmaskStitching: 0 + m_AssetPipelineMode: 1 + m_RefreshImportMode: 0 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 + m_CacheServerEnableAuth: 0 + m_CacheServerEnableTls: 0 + m_CacheServerValidationMode: 2 + m_CacheServerDownloadBatchSize: 128 + m_EnableEnlightenBakedGI: 0 + m_ReferencedClipsExactNaming: 1 + m_ForceAssetUnloadAndGCOnSceneLoad: 1 diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset new file mode 100644 index 0000000..84b2182 --- /dev/null +++ b/ProjectSettings/GraphicsSettings.asset @@ -0,0 +1,69 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!30 &1 +GraphicsSettings: + m_ObjectHideFlags: 0 + serializedVersion: 16 + m_Deferred: + m_Mode: 1 + m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} + m_DeferredReflections: + m_Mode: 1 + m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} + m_ScreenSpaceShadows: + m_Mode: 1 + m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} + m_DepthNormals: + m_Mode: 1 + m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} + m_MotionVectors: + m_Mode: 1 + m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} + m_LightHalo: + m_Mode: 1 + m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} + m_LensFlare: + m_Mode: 1 + m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_VideoShadersIncludeMode: 2 + m_AlwaysIncludedShaders: + - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} + m_PreloadedShaders: [] + m_PreloadShadersBatchTimeLimit: -1 + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_CustomRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, type: 2} + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_DefaultRenderingPath: 1 + m_DefaultMobileRenderingPath: 1 + m_TierSettings: [] + m_LightmapStripping: 0 + m_FogStripping: 0 + m_InstancingStripping: 0 + m_BrgStripping: 0 + m_LightmapKeepPlain: 1 + m_LightmapKeepDirCombined: 1 + m_LightmapKeepDynamicPlain: 1 + m_LightmapKeepDynamicDirCombined: 1 + m_LightmapKeepShadowMask: 1 + m_LightmapKeepSubtractive: 1 + m_FogKeepLinear: 1 + m_FogKeepExp: 1 + m_FogKeepExp2: 1 + m_AlbedoSwatchInfos: [] + m_RenderPipelineGlobalSettingsMap: + UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 18dc0cd2c080841dea60987a38ce93fa, type: 2} + m_ShaderBuildSettings: + keywordDeclarationOverrides: [] + m_LightsUseLinearIntensity: 1 + m_LightsUseColorTemperature: 1 + m_LogWhenShaderIsCompiled: 0 + m_LightProbeOutsideHullStrategy: 0 + m_CameraRelativeLightCulling: 0 + m_CameraRelativeShadowCulling: 0 diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset new file mode 100644 index 0000000..b16147e --- /dev/null +++ b/ProjectSettings/InputManager.asset @@ -0,0 +1,487 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!13 &1 +InputManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Axes: + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: a + altPositiveButton: d + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: s + altPositiveButton: w + gravity: 3 + dead: 0.001 + sensitivity: 3 + snap: 1 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: mouse 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: mouse 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: mouse 2 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: space + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse X + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse Y + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Mouse ScrollWheel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0 + sensitivity: 0.1 + snap: 0 + invert: 0 + type: 1 + axis: 2 + joyNum: 0 + - serializedVersion: 3 + m_Name: Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 0 + type: 2 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: + altNegativeButton: + altPositiveButton: + gravity: 0 + dead: 0.19 + sensitivity: 1 + snap: 0 + invert: 1 + type: 2 + axis: 1 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 0 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 1 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Fire3 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 2 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Jump + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: joystick button 3 + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Submit + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: enter + altNegativeButton: + altPositiveButton: space + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Cancel + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: escape + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 1 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left ctrl + altNegativeButton: + altPositiveButton: joystick button 8 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Enable Debug Button 2 + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: backspace + altNegativeButton: + altPositiveButton: joystick button 9 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Reset + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left alt + altNegativeButton: + altPositiveButton: joystick button 1 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Next + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page down + altNegativeButton: + altPositiveButton: joystick button 5 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Previous + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: page up + altNegativeButton: + altPositiveButton: joystick button 4 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Validate + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: return + altNegativeButton: + altPositiveButton: joystick button 0 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Persistent + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: right shift + altNegativeButton: + altPositiveButton: joystick button 2 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Multiplier + descriptiveName: + descriptiveNegativeName: + negativeButton: + positiveButton: left shift + altNegativeButton: + altPositiveButton: joystick button 3 + gravity: 0 + dead: 0 + sensitivity: 0 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 0 + axis: 0 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Vertical + descriptiveName: + descriptiveNegativeName: + negativeButton: down + positiveButton: up + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 6 + joyNum: 0 + - serializedVersion: 3 + m_Name: Debug Horizontal + descriptiveName: + descriptiveNegativeName: + negativeButton: left + positiveButton: right + altNegativeButton: + altPositiveButton: + gravity: 1000 + dead: 0.001 + sensitivity: 1000 + snap: 0 + invert: 0 + type: 2 + axis: 5 + joyNum: 0 diff --git a/ProjectSettings/MemorySettings.asset b/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/ProjectSettings/MultiplayerManager.asset b/ProjectSettings/MultiplayerManager.asset new file mode 100644 index 0000000..2a93664 --- /dev/null +++ b/ProjectSettings/MultiplayerManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!655991488 &1 +MultiplayerManager: + m_ObjectHideFlags: 0 + m_EnableMultiplayerRoles: 0 + m_StrippingTypes: {} diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000..3b0b7c3 --- /dev/null +++ b/ProjectSettings/NavMeshAreas.asset @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!126 &1 +NavMeshProjectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + areas: + - name: Walkable + cost: 1 + - name: Not Walkable + cost: 1 + - name: Jump + cost: 2 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + - name: + cost: 1 + m_LastAgentTypeID: -887442657 + m_Settings: + - serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.75 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_SettingNames: + - Humanoid diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset new file mode 100644 index 0000000..be4a797 --- /dev/null +++ b/ProjectSettings/PackageManagerSettings.asset @@ -0,0 +1,43 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + 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: 13964, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_EnablePreviewPackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 + m_ScopedRegistriesSettingsExpanded: 1 + oneTimeWarningShown: 0 + m_Registries: + - m_Id: main + m_Name: + m_Url: https://packages.unity.com + m_Scopes: [] + m_IsDefault: 1 + m_Capabilities: 7 + m_UserSelectedRegistryName: + m_UserAddingNewScopedRegistry: 0 + m_RegistryInfoDraft: + m_ErrorMessage: + m_Original: + m_Id: + m_Name: + m_Url: + m_Scopes: [] + m_IsDefault: 0 + m_Capabilities: 0 + m_Modified: 0 + m_Name: + m_Url: + m_Scopes: + - + m_SelectedScopeIndex: 0 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset new file mode 100644 index 0000000..6c5cf8a --- /dev/null +++ b/ProjectSettings/Physics2DSettings.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!19 &1 +Physics2DSettings: + m_ObjectHideFlags: 0 + serializedVersion: 4 + m_Gravity: {x: 0, y: -9.81} + m_DefaultMaterial: {fileID: 0} + m_VelocityIterations: 8 + m_PositionIterations: 3 + m_VelocityThreshold: 1 + m_MaxLinearCorrection: 0.2 + m_MaxAngularCorrection: 8 + m_MaxTranslationSpeed: 100 + m_MaxRotationSpeed: 360 + m_BaumgarteScale: 0.2 + m_BaumgarteTimeOfImpactScale: 0.75 + m_TimeToSleep: 0.5 + m_LinearSleepTolerance: 0.01 + m_AngularSleepTolerance: 2 + m_DefaultContactOffset: 0.01 + m_JobOptions: + serializedVersion: 2 + useMultithreading: 0 + useConsistencySorting: 0 + m_InterpolationPosesPerJob: 100 + m_NewContactsPerJob: 30 + m_CollideContactsPerJob: 100 + m_ClearFlagsPerJob: 200 + m_ClearBodyForcesPerJob: 200 + m_SyncDiscreteFixturesPerJob: 50 + m_SyncContinuousFixturesPerJob: 50 + m_FindNearestContactsPerJob: 100 + m_UpdateTriggerContactsPerJob: 100 + m_IslandSolverCostThreshold: 100 + m_IslandSolverBodyCostScale: 1 + m_IslandSolverContactCostScale: 10 + m_IslandSolverJointCostScale: 10 + m_IslandSolverBodiesPerJob: 50 + m_IslandSolverContactsPerJob: 50 + m_AutoSimulation: 1 + m_QueriesHitTriggers: 1 + m_QueriesStartInColliders: 1 + m_CallbacksOnDisable: 1 + m_ReuseCollisionCallbacks: 0 + m_AutoSyncTransforms: 0 + m_AlwaysShowColliders: 0 + m_ShowColliderSleep: 1 + m_ShowColliderContacts: 0 + m_ShowColliderAABB: 0 + m_ContactArrowScale: 0.2 + m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} + m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} + m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} + m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} + m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..67a94da --- /dev/null +++ b/ProjectSettings/PresetManager.asset @@ -0,0 +1,7 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1386491679 &1 +PresetManager: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_DefaultPresets: {} diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset new file mode 100644 index 0000000..1938a07 --- /dev/null +++ b/ProjectSettings/ProjectSettings.asset @@ -0,0 +1,943 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!129 &1 +PlayerSettings: + m_ObjectHideFlags: 0 + serializedVersion: 28 + productGUID: 3868c29d2692cc047a32c9fbc7138b31 + AndroidProfiler: 0 + AndroidFilterTouchesWhenObscured: 0 + AndroidEnableSustainedPerformanceMode: 0 + defaultScreenOrientation: 4 + targetDevice: 2 + useOnDemandResources: 0 + accelerometerFrequency: 60 + companyName: DefaultCompany + productName: Chameleon + defaultCursor: {fileID: 0} + cursorHotspot: {x: 0, y: 0} + m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} + m_ShowUnitySplashScreen: 1 + m_ShowUnitySplashLogo: 1 + m_SplashScreenOverlayOpacity: 1 + m_SplashScreenAnimation: 1 + m_SplashScreenLogoStyle: 1 + m_SplashScreenDrawMode: 0 + m_SplashScreenBackgroundAnimationZoom: 1 + m_SplashScreenLogoAnimationZoom: 1 + m_SplashScreenBackgroundLandscapeAspect: 1 + m_SplashScreenBackgroundPortraitAspect: 1 + m_SplashScreenBackgroundLandscapeUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenBackgroundPortraitUvs: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + m_SplashScreenLogos: [] + m_VirtualRealitySplashScreen: {fileID: 0} + m_HolographicTrackingLossScreen: {fileID: 0} + defaultScreenWidth: 1024 + defaultScreenHeight: 768 + defaultScreenWidthWeb: 960 + defaultScreenHeightWeb: 600 + m_StereoRenderingPath: 0 + m_ActiveColorSpace: 1 + unsupportedMSAAFallback: 0 + m_SpriteBatchMaxVertexCount: 65535 + m_SpriteBatchVertexThreshold: 300 + m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 + numberOfMipsStrippedPerMipmapLimitGroup: {} + m_StackTraceTypes: 010000000100000001000000010000000100000001000000 + iosShowActivityIndicatorOnLoading: -1 + androidShowActivityIndicatorOnLoading: -1 + iosUseCustomAppBackgroundBehavior: 0 + allowedAutorotateToPortrait: 1 + allowedAutorotateToPortraitUpsideDown: 1 + allowedAutorotateToLandscapeRight: 1 + allowedAutorotateToLandscapeLeft: 1 + useOSAutorotation: 1 + use32BitDisplayBuffer: 1 + preserveFramebufferAlpha: 0 + disableDepthAndStencilBuffers: 0 + androidStartInFullscreen: 1 + androidRenderOutsideSafeArea: 1 + androidUseSwappy: 0 + androidDisplayOptions: 1 + androidBlitType: 0 + androidResizeableActivity: 1 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 + androidAutoRotationBehavior: 1 + androidPredictiveBackSupport: 1 + androidApplicationEntry: 2 + defaultIsNativeResolution: 1 + macRetinaSupport: 1 + runInBackground: 0 + muteOtherAudioSources: 0 + Prepare IOS For Recording: 0 + Force IOS Speakers When Recording: 0 + audioSpatialExperience: 0 + deferSystemGesturesMode: 0 + hideHomeButton: 0 + submitAnalytics: 1 + usePlayerLog: 1 + dedicatedServerOptimizations: 1 + bakeCollisionMeshes: 0 + forceSingleInstance: 0 + useFlipModelSwapchain: 1 + resizableWindow: 0 + useMacAppStoreValidation: 0 + macAppStoreCategory: public.app-category.games + gpuSkinning: 1 + meshDeformation: 2 + xboxPIXTextureCapture: 0 + xboxEnableAvatar: 0 + xboxEnableKinect: 0 + xboxEnableKinectAutoTracking: 0 + xboxEnableFitness: 0 + visibleInBackground: 1 + allowFullscreenSwitch: 1 + fullscreenMode: 1 + xboxSpeechDB: 0 + xboxEnableHeadOrientation: 0 + xboxEnableGuest: 0 + xboxEnablePIXSampling: 0 + metalFramebufferOnly: 0 + metalUseMetalDisplayLink: 0 + xboxOneResolution: 0 + xboxOneSResolution: 0 + xboxOneXResolution: 3 + xboxOneMonoLoggingLevel: 0 + xboxOneLoggingLevel: 1 + xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 + xboxOnePresentImmediateThreshold: 0 + switchQueueCommandMemory: 1048576 + switchQueueControlMemory: 16384 + switchQueueComputeMemory: 262144 + switchNVNShaderPoolsGranularity: 33554432 + switchNVNDefaultPoolsGranularity: 16777216 + switchNVNOtherPoolsGranularity: 16777216 + switchGpuScratchPoolGranularity: 2097152 + switchAllowGpuScratchShrinking: 0 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + switchMaxWorkerMultiple: 8 + switchNVNGraphicsFirmwareMemory: 32 + switchGraphicsJobsSyncAfterKick: 1 + vulkanNumSwapchainBuffers: 3 + vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 1 + vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 + loadStoreDebugModeEnabled: 0 + visionOSBundleVersion: 1.0 + tvOSBundleVersion: 1.0 + bundleVersion: 0.1.0 + preloadedAssets: [] + metroInputSource: 0 + wsaTransparentSwapchain: 0 + m_HolographicPauseOnTrackingLoss: 1 + xboxOneDisableKinectGpuReservation: 1 + xboxOneEnable7thCore: 1 + vrSettings: + enable360StereoCapture: 0 + isWsaHolographicRemotingEnabled: 0 + enableFrameTimingStats: 0 + enableOpenGLProfilerGPURecorders: 1 + allowHDRDisplaySupport: 0 + useHDRDisplay: 0 + hdrBitDepth: 0 + m_ColorGamuts: 00000000 + targetPixelDensity: 30 + resolutionScalingMode: 0 + resetResolutionOnWindowResize: 0 + androidSupportedAspectRatio: 1 + androidMaxAspectRatio: 2.4 + androidMinAspectRatio: 1 + applicationIdentifier: + Android: com.UnityTechnologies.com.unity.template.urpblank + Standalone: com.Unity-Technologies.com.unity.template.urp-blank + iPhone: com.Unity-Technologies.com.unity.template.urp-blank + buildNumber: + Standalone: 0 + VisionOS: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 1 + AndroidBundleVersionCode: 1 + AndroidMinSdkVersion: 25 + AndroidTargetSdkVersion: 0 + AndroidPreferredInstallLocation: 1 + AndroidPreferredDataLocation: 1 + aotOptions: + stripEngineCode: 1 + iPhoneStrippingLevel: 0 + iPhoneScriptCallOptimization: 0 + ForceInternetPermission: 0 + ForceSDCardPermission: 0 + CreateWallpaper: 0 + androidSplitApplicationBinary: 0 + keepLoadedShadersAlive: 0 + StripUnusedMeshComponents: 0 + strictShaderVariantMatching: 0 + VertexChannelCompressionMask: 4054 + iPhoneSdkVersion: 988 + iOSSimulatorArchitecture: 0 + iOSTargetOSVersionString: 15.0 + tvOSSdkVersion: 0 + tvOSSimulatorArchitecture: 0 + tvOSRequireExtendedGameController: 0 + tvOSTargetOSVersionString: 15.0 + VisionOSSdkVersion: 0 + VisionOSTargetOSVersionString: 1.0 + uIPrerenderedIcon: 0 + uIRequiresPersistentWiFi: 0 + uIRequiresFullScreen: 1 + uIStatusBarHidden: 1 + uIExitOnSuspend: 0 + uIStatusBarStyle: 0 + appleTVSplashScreen: {fileID: 0} + appleTVSplashScreen2x: {fileID: 0} + tvOSSmallIconLayers: [] + tvOSSmallIconLayers2x: [] + tvOSLargeIconLayers: [] + tvOSLargeIconLayers2x: [] + tvOSTopShelfImageLayers: [] + tvOSTopShelfImageLayers2x: [] + tvOSTopShelfImageWideLayers: [] + tvOSTopShelfImageWideLayers2x: [] + iOSLaunchScreenType: 0 + iOSLaunchScreenPortrait: {fileID: 0} + iOSLaunchScreenLandscape: {fileID: 0} + iOSLaunchScreenBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreenFillPct: 100 + iOSLaunchScreenSize: 100 + iOSLaunchScreeniPadType: 0 + iOSLaunchScreeniPadImage: {fileID: 0} + iOSLaunchScreeniPadBackgroundColor: + serializedVersion: 2 + rgba: 0 + iOSLaunchScreeniPadFillPct: 100 + iOSLaunchScreeniPadSize: 100 + iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: + iOSDeviceRequirements: [] + iOSURLSchemes: [] + macOSURLSchemes: [] + iOSBackgroundModes: 0 + iOSMetalForceHardShadows: 0 + metalEditorSupport: 1 + metalAPIValidation: 1 + metalCompileShaderBinary: 0 + iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 + appleDeveloperTeamID: + iOSManualSigningProvisioningProfileID: + tvOSManualSigningProvisioningProfileID: + VisionOSManualSigningProvisioningProfileID: + iOSManualSigningProvisioningProfileType: 0 + tvOSManualSigningProvisioningProfileType: 0 + VisionOSManualSigningProvisioningProfileType: 0 + appleEnableAutomaticSigning: 0 + iOSRequireARKit: 0 + iOSAutomaticallyDetectAndAddCapabilities: 1 + appleEnableProMotion: 0 + shaderPrecisionModel: 0 + clonedFromGUID: 3c72c65a16f0acb438eed22b8b16c24a + templatePackageId: com.unity.template.urp-blank@17.0.14 + templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomGradleSettingsTemplate: 0 + useCustomProguardFile: 0 + AndroidTargetArchitectures: 2 + AndroidAllowedArchitectures: -13 + AndroidSplashScreenScale: 0 + androidSplashScreen: {fileID: 0} + AndroidKeystoreName: + AndroidKeyaliasName: + AndroidEnableArmv9SecurityFeatures: 0 + AndroidEnableArm64MTE: 0 + AndroidBuildApkPerCpuArchitecture: 0 + AndroidTVCompatibility: 0 + AndroidIsGame: 1 + androidAppCategory: 3 + useAndroidAppCategory: 1 + androidAppCategoryOther: + AndroidEnableTango: 0 + androidEnableBanner: 1 + androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 + m_AndroidBanners: + - width: 320 + height: 180 + banner: {fileID: 0} + androidGamepadSupportLevel: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 + AndroidReportGooglePlayAppDependencies: 1 + androidSymbolsSizeThreshold: 800 + m_BuildTargetIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: iPhone + m_Icons: + - m_Textures: [] + m_Width: 180 + m_Height: 180 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 167 + m_Height: 167 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 152 + m_Height: 152 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 76 + m_Height: 76 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 87 + m_Height: 87 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 60 + m_Height: 60 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 20 + m_Height: 20 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 1024 + m_Height: 1024 + m_Kind: 4 + m_SubKind: App Store + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: + - m_BuildTarget: tvOS + m_Icons: + - m_Textures: [] + m_Width: 1280 + m_Height: 768 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 800 + m_Height: 480 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 400 + m_Height: 240 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 4640 + m_Height: 1440 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 2320 + m_Height: 720 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 3840 + m_Height: 1440 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 1920 + m_Height: 720 + m_Kind: 1 + m_SubKind: + m_BuildTargetBatching: [] + m_BuildTargetShaderSettings: [] + m_BuildTargetGraphicsJobs: [] + m_BuildTargetGraphicsJobMode: [] + m_BuildTargetGraphicsAPIs: + - m_BuildTarget: iOSSupport + m_APIs: 10000000 + m_Automatic: 1 + - m_BuildTarget: AndroidPlayer + m_APIs: 150000000b000000 + m_Automatic: 0 + m_BuildTargetVRSettings: [] + m_DefaultShaderChunkSizeInMB: 16 + m_DefaultShaderChunkCount: 0 + openGLRequireES31: 0 + openGLRequireES31AEP: 0 + openGLRequireES32: 0 + m_TemplateCustomTags: {} + mobileMTRendering: + Android: 1 + iPhone: 1 + tvOS: 1 + m_BuildTargetGroupLightmapEncodingQuality: + - serializedVersion: 2 + m_BuildTarget: Android + m_EncodingQuality: 1 + m_BuildTargetGroupHDRCubemapEncodingQuality: [] + m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetGroupLoadStoreDebugModeSettings: [] + m_BuildTargetNormalMapEncoding: + - m_BuildTarget: Android + m_Encoding: 1 + m_BuildTargetDefaultTextureCompressionFormat: + - serializedVersion: 3 + m_BuildTarget: Android + m_Formats: 03000000 + playModeTestRunnerEnabled: 0 + runPlayModeTestAsEditModeTest: 0 + actionOnDotNetUnhandledException: 1 + editorGfxJobOverride: 1 + enableInternalProfiler: 0 + logObjCUncaughtExceptions: 1 + enableCrashReportAPI: 0 + cameraUsageDescription: + locationUsageDescription: + microphoneUsageDescription: + bluetoothUsageDescription: + macOSTargetOSVersion: 12.0 + switchNMETAOverride: + switchNetLibKey: + switchSocketMemoryPoolSize: 6144 + switchSocketAllocatorPoolSize: 128 + switchSocketConcurrencyLimit: 14 + switchScreenResolutionBehavior: 2 + switchUseCPUProfiler: 0 + switchEnableFileSystemTrace: 0 + switchLTOSetting: 0 + switchApplicationID: 0x01004b9000490000 + switchNSODependencies: + switchCompilerFlags: + switchTitleNames_0: + switchTitleNames_1: + switchTitleNames_2: + switchTitleNames_3: + switchTitleNames_4: + switchTitleNames_5: + switchTitleNames_6: + switchTitleNames_7: + switchTitleNames_8: + switchTitleNames_9: + switchTitleNames_10: + switchTitleNames_11: + switchTitleNames_12: + switchTitleNames_13: + switchTitleNames_14: + switchTitleNames_15: + switchPublisherNames_0: + switchPublisherNames_1: + switchPublisherNames_2: + switchPublisherNames_3: + switchPublisherNames_4: + switchPublisherNames_5: + switchPublisherNames_6: + switchPublisherNames_7: + switchPublisherNames_8: + switchPublisherNames_9: + switchPublisherNames_10: + switchPublisherNames_11: + switchPublisherNames_12: + switchPublisherNames_13: + switchPublisherNames_14: + switchPublisherNames_15: + switchIcons_0: {fileID: 0} + switchIcons_1: {fileID: 0} + switchIcons_2: {fileID: 0} + switchIcons_3: {fileID: 0} + switchIcons_4: {fileID: 0} + switchIcons_5: {fileID: 0} + switchIcons_6: {fileID: 0} + switchIcons_7: {fileID: 0} + switchIcons_8: {fileID: 0} + switchIcons_9: {fileID: 0} + switchIcons_10: {fileID: 0} + switchIcons_11: {fileID: 0} + switchIcons_12: {fileID: 0} + switchIcons_13: {fileID: 0} + switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} + switchSmallIcons_0: {fileID: 0} + switchSmallIcons_1: {fileID: 0} + switchSmallIcons_2: {fileID: 0} + switchSmallIcons_3: {fileID: 0} + switchSmallIcons_4: {fileID: 0} + switchSmallIcons_5: {fileID: 0} + switchSmallIcons_6: {fileID: 0} + switchSmallIcons_7: {fileID: 0} + switchSmallIcons_8: {fileID: 0} + switchSmallIcons_9: {fileID: 0} + switchSmallIcons_10: {fileID: 0} + switchSmallIcons_11: {fileID: 0} + switchSmallIcons_12: {fileID: 0} + switchSmallIcons_13: {fileID: 0} + switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} + switchManualHTML: + switchAccessibleURLs: + switchLegalInformation: + switchMainThreadStackSize: 1048576 + switchPresenceGroupId: + switchLogoHandling: 0 + switchReleaseVersion: 0 + switchDisplayVersion: 1.0.0 + switchStartupUserAccount: 0 + switchSupportedLanguagesMask: 0 + switchLogoType: 0 + switchApplicationErrorCodeCategory: + switchUserAccountSaveDataSize: 0 + switchUserAccountSaveDataJournalSize: 0 + switchApplicationAttribute: 0 + switchCardSpecSize: -1 + switchCardSpecClock: -1 + switchRatingsMask: 0 + switchRatingsInt_0: 0 + switchRatingsInt_1: 0 + switchRatingsInt_2: 0 + switchRatingsInt_3: 0 + switchRatingsInt_4: 0 + switchRatingsInt_5: 0 + switchRatingsInt_6: 0 + switchRatingsInt_7: 0 + switchRatingsInt_8: 0 + switchRatingsInt_9: 0 + switchRatingsInt_10: 0 + switchRatingsInt_11: 0 + switchRatingsInt_12: 0 + switchLocalCommunicationIds_0: + switchLocalCommunicationIds_1: + switchLocalCommunicationIds_2: + switchLocalCommunicationIds_3: + switchLocalCommunicationIds_4: + switchLocalCommunicationIds_5: + switchLocalCommunicationIds_6: + switchLocalCommunicationIds_7: + switchParentalControl: 0 + switchAllowsScreenshot: 1 + switchAllowsVideoCapturing: 1 + switchAllowsRuntimeAddOnContentInstall: 0 + switchDataLossConfirmation: 0 + switchUserAccountLockEnabled: 0 + switchSystemResourceMemory: 16777216 + switchSupportedNpadStyles: 22 + switchNativeFsCacheSize: 32 + switchIsHoldTypeHorizontal: 0 + switchSupportedNpadCount: 8 + switchEnableTouchScreen: 1 + switchSocketConfigEnabled: 0 + switchTcpInitialSendBufferSize: 32 + switchTcpInitialReceiveBufferSize: 64 + switchTcpAutoSendBufferSizeMax: 256 + switchTcpAutoReceiveBufferSizeMax: 256 + switchUdpSendBufferSize: 9 + switchUdpReceiveBufferSize: 42 + switchSocketBufferEfficiency: 4 + switchSocketInitializeEnabled: 1 + switchNetworkInterfaceManagerInitializeEnabled: 1 + switchDisableHTCSPlayerConnection: 0 + switchUseNewStyleFilepaths: 0 + switchUseLegacyFmodPriorities: 0 + switchUseMicroSleepForYield: 1 + switchEnableRamDiskSupport: 0 + switchMicroSleepForYieldTime: 25 + switchRamDiskSpaceSize: 12 + switchUpgradedPlayerSettingsToNMETA: 0 + ps4NPAgeRating: 12 + ps4NPTitleSecret: + ps4NPTrophyPackPath: + ps4ParentalLevel: 11 + ps4ContentID: ED1633-NPXX51362_00-0000000000000000 + ps4Category: 0 + ps4MasterVersion: 01.00 + ps4AppVersion: 01.00 + ps4AppType: 0 + ps4ParamSfxPath: + ps4VideoOutPixelFormat: 0 + ps4VideoOutInitialWidth: 1920 + ps4VideoOutBaseModeInitialWidth: 1920 + ps4VideoOutReprojectionRate: 60 + ps4PronunciationXMLPath: + ps4PronunciationSIGPath: + ps4BackgroundImagePath: + ps4StartupImagePath: + ps4StartupImagesFolder: + ps4IconImagesFolder: + ps4SaveDataImagePath: + ps4SdkOverride: + ps4BGMPath: + ps4ShareFilePath: + ps4ShareOverlayImagePath: + ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: + ps4NPtitleDatPath: + ps4RemotePlayKeyAssignment: -1 + ps4RemotePlayKeyMappingDir: + ps4PlayTogetherPlayerCount: 0 + ps4EnterButtonAssignment: 2 + ps4ApplicationParam1: 0 + ps4ApplicationParam2: 0 + ps4ApplicationParam3: 0 + ps4ApplicationParam4: 0 + ps4DownloadDataSize: 0 + ps4GarlicHeapSize: 2048 + ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 + ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ + ps4pnSessions: 1 + ps4pnPresence: 1 + ps4pnFriends: 1 + ps4pnGameCustomData: 1 + playerPrefsSupport: 0 + enableApplicationExit: 0 + resetTempFolder: 1 + restrictedAudioUsageRights: 0 + ps4UseResolutionFallback: 0 + ps4ReprojectionSupport: 0 + ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 + ps4SocialScreenEnabled: 0 + ps4ScriptOptimizationLevel: 2 + ps4Audio3dVirtualSpeakerCount: 14 + ps4attribCpuUsage: 0 + ps4PatchPkgPath: + ps4PatchLatestPkgPath: + ps4PatchChangeinfoPath: + ps4PatchDayOne: 0 + ps4attribUserManagement: 0 + ps4attribMoveSupport: 0 + ps4attrib3DSupport: 0 + ps4attribShareSupport: 0 + ps4attribExclusiveVR: 0 + ps4disableAutoHideSplash: 0 + ps4videoRecordingFeaturesUsed: 0 + ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 + ps4attribEyeToEyeDistanceSettingVR: 0 + ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 + monoEnv: + splashScreenBackgroundSourceLandscape: {fileID: 0} + splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 + spritePackerPolicy: + webGLMemorySize: 32 + webGLExceptionSupport: 1 + webGLNameFilesAsHashes: 0 + webGLShowDiagnostics: 0 + webGLDataCaching: 1 + webGLDebugSymbols: 0 + webGLEmscriptenArgs: + webGLModulesDirectory: + webGLTemplate: APPLICATION:Default + webGLAnalyzeBuildSize: 0 + webGLUseEmbeddedResources: 0 + webGLCompressionFormat: 0 + webGLWasmArithmeticExceptions: 0 + webGLLinkerTarget: 1 + webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 + webGLInitialMemorySize: 32 + webGLMaximumMemorySize: 2048 + webGLMemoryGrowthMode: 2 + webGLMemoryLinearGrowthStep: 16 + webGLMemoryGeometricGrowthStep: 0.2 + webGLMemoryGeometricGrowthCap: 96 + webGLPowerPreference: 2 + webGLWebAssemblyTable: 0 + webGLWebAssemblyBigInt: 0 + webGLCloseOnQuit: 0 + webWasm2023: 0 + webEnableSubmoduleStrippingCompatibility: 0 + scriptingDefineSymbols: {} + additionalCompilerArguments: {} + platformArchitecture: {} + scriptingBackend: + Android: 1 + il2cppCompilerConfiguration: {} + il2cppCodeGeneration: {} + il2cppStacktraceInformation: {} + managedStrippingLevel: {} + incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 + allowUnsafeCode: 0 + useDeterministicCompilation: 1 + additionalIl2CppArgs: + scriptingRuntimeVersion: 1 + gcIncremental: 1 + gcWBarrierValidation: 0 + apiCompatibilityLevelPerPlatform: {} + editorAssembliesCompatibilityLevel: 1 + m_RenderingPath: 1 + m_MobileRenderingPath: 1 + metroPackageName: Chameleon + metroPackageVersion: + metroCertificatePath: + metroCertificatePassword: + metroCertificateSubject: + metroCertificateIssuer: + metroCertificateNotAfter: 0000000000000000 + metroApplicationDescription: Chameleon + wsaImages: {} + metroTileShortName: + metroTileShowName: 0 + metroMediumTileShowName: 0 + metroLargeTileShowName: 0 + metroWideTileShowName: 0 + metroSupportStreamingInstall: 0 + metroLastRequiredScene: 0 + metroDefaultTileSize: 1 + metroTileForegroundText: 2 + metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} + metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} + metroSplashScreenUseBackgroundColor: 0 + syncCapabilities: 0 + platformCapabilities: {} + metroTargetDeviceFamilies: {} + metroFTAName: + metroFTAFileTypes: [] + metroProtocolName: + vcxProjDefaultLanguage: + XboxOneProductId: + XboxOneUpdateKey: + XboxOneSandboxId: + XboxOneContentId: + XboxOneTitleId: + XboxOneSCId: + XboxOneGameOsOverridePath: + XboxOnePackagingOverridePath: + XboxOneAppManifestOverridePath: + XboxOneVersion: 1.0.0.0 + XboxOnePackageEncryption: 0 + XboxOnePackageUpdateGranularity: 2 + XboxOneDescription: + XboxOneLanguage: + - enus + XboxOneCapability: [] + XboxOneGameRating: {} + XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 + XboxOneEnableGPUVariability: 1 + XboxOneSockets: {} + XboxOneSplashScreen: {fileID: 0} + XboxOneAllowedProductIds: [] + XboxOnePersistentLocalStorageSize: 0 + XboxOneXTitleMemory: 8 + XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} + cloudServicesEnabled: {} + luminIcon: + m_Name: + m_ModelFolderPath: + m_PortalFolderPath: + luminCert: + m_CertPath: + m_SignPackage: 1 + luminIsChannelApp: 0 + luminVersion: + m_VersionCode: 1 + m_VersionName: + hmiPlayerDataPath: + hmiForceSRGBBlit: 1 + embeddedLinuxEnableGamepadInput: 0 + hmiCpuConfiguration: + hmiLogStartupTiming: 0 + qnxGraphicConfPath: + apiCompatibilityLevel: 6 + captureStartupLogs: {} + activeInputHandler: 1 + windowsGamepadBackendHint: 0 + cloudProjectId: 5bedec41-0cc3-40a8-94c9-4d1ba5d2e730 + framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] + projectName: Chameleon + organizationId: insektenvolk + cloudEnabled: 0 + legacyClampBlendShapeWeights: 0 + hmiLoadingImage: {fileID: 0} + platformRequiresReadableAssets: 0 + virtualTexturingSupportEnabled: 0 + insecureHttpOption: 0 + androidVulkanDenyFilterList: [] + androidVulkanAllowFilterList: [] + androidVulkanDeviceFilterListAsset: {fileID: 0} + d3d12DeviceFilterListAsset: {fileID: 0} + allowedHttpConnections: 3 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt new file mode 100644 index 0000000..550b6e8 --- /dev/null +++ b/ProjectSettings/ProjectVersion.txt @@ -0,0 +1,2 @@ +m_EditorVersion: 6000.3.11f1 +m_EditorVersionWithRevision: 6000.3.11f1 (3000ef702840) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset new file mode 100644 index 0000000..f55198a --- /dev/null +++ b/ProjectSettings/QualitySettings.asset @@ -0,0 +1,134 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!47 &1 +QualitySettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_CurrentQuality: 1 + m_QualitySettings: + - serializedVersion: 4 + name: Mobile + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 0 + skinWeights: 2 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] + anisotropicTextures: 1 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 1 + useLegacyDetailDistribution: 1 + adaptiveVsync: 0 + vSyncCount: 0 + realtimeGICPUUsage: 100 + adaptiveVsyncExtraA: 0 + adaptiveVsyncExtraB: 0 + lodBias: 1 + maximumLODLevel: 0 + enableLODCrossFade: 1 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 11400000, guid: 5e6cbd92db86f4b18aec3ed561671858, + type: 2} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 + excludedTargetPlatforms: + - Standalone + - serializedVersion: 4 + name: PC + pixelLightCount: 2 + shadows: 2 + shadowResolution: 1 + shadowProjection: 1 + shadowCascades: 2 + shadowDistance: 40 + shadowNearPlaneOffset: 3 + shadowCascade2Split: 0.33333334 + shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} + shadowmaskMode: 1 + skinWeights: 4 + globalTextureMipmapLimit: 0 + textureMipmapLimitSettings: [] + anisotropicTextures: 2 + antiAliasing: 0 + softParticles: 0 + softVegetation: 1 + realtimeReflectionProbes: 0 + billboardsFaceCameraPosition: 1 + useLegacyDetailDistribution: 1 + adaptiveVsync: 0 + vSyncCount: 0 + realtimeGICPUUsage: 100 + adaptiveVsyncExtraA: 0 + adaptiveVsyncExtraB: 0 + lodBias: 2 + maximumLODLevel: 0 + enableLODCrossFade: 1 + streamingMipmapsActive: 0 + streamingMipmapsAddAllCameras: 1 + streamingMipmapsMemoryBudget: 512 + streamingMipmapsRenderersPerFrame: 512 + streamingMipmapsMaxLevelReduction: 2 + streamingMipmapsMaxFileIORequests: 1024 + particleRaycastBudget: 256 + asyncUploadTimeSlice: 2 + asyncUploadBufferSize: 16 + asyncUploadPersistentBuffer: 1 + resolutionScalingFixedDPIFactor: 1 + customRenderPipeline: {fileID: 11400000, guid: 4b83569d67af61e458304325a23e5dfd, + type: 2} + terrainQualityOverrides: 0 + terrainPixelError: 1 + terrainDetailDensityScale: 1 + terrainBasemapDistance: 1000 + terrainDetailDistance: 80 + terrainTreeDistance: 5000 + terrainBillboardStart: 50 + terrainFadeLength: 5 + terrainMaxTrees: 50 + excludedTargetPlatforms: + - Android + - iPhone + m_TextureMipmapLimitGroupNames: [] + m_PerPlatformDefaultQuality: + Android: 0 + GameCoreScarlett: 1 + GameCoreXboxOne: 1 + Lumin: 0 + Nintendo Switch: 1 + PS4: 1 + PS5: 1 + Server: 0 + Stadia: 0 + Standalone: 1 + WebGL: 0 + Windows Store Apps: 0 + XboxOne: 0 + iPhone: 0 + tvOS: 0 diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..ede5887 --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/ProjectSettings/ShaderGraphSettings.asset b/ProjectSettings/ShaderGraphSettings.asset new file mode 100644 index 0000000..ce8c243 --- /dev/null +++ b/ProjectSettings/ShaderGraphSettings.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + 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: de02f9e1d18f588468e474319d09a723, type: 3} + m_Name: + m_EditorClassIdentifier: + shaderVariantLimit: 128 + overrideShaderVariantLimit: 0 + customInterpolatorErrorThreshold: 32 + customInterpolatorWarningThreshold: 16 + customHeatmapValues: {fileID: 0} diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset new file mode 100644 index 0000000..6413d11 --- /dev/null +++ b/ProjectSettings/TagManager.asset @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!78 &1 +TagManager: + serializedVersion: 2 + tags: [] + layers: + - Default + - TransparentFX + - Ignore Raycast + - + - Water + - UI + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + m_SortingLayers: + - name: Default + uniqueID: 0 + locked: 0 + m_RenderingLayers: + - Default + - Light Layer 1 + - Light Layer 2 + - Light Layer 3 + - Light Layer 4 + - Light Layer 5 + - Light Layer 6 + - Light Layer 7 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset new file mode 100644 index 0000000..558a017 --- /dev/null +++ b/ProjectSettings/TimeManager.asset @@ -0,0 +1,9 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!5 &1 +TimeManager: + m_ObjectHideFlags: 0 + Fixed Timestep: 0.02 + Maximum Allowed Timestep: 0.33333334 + m_TimeScale: 1 + Maximum Particle Timestep: 0.03 diff --git a/ProjectSettings/URPProjectSettings.asset b/ProjectSettings/URPProjectSettings.asset new file mode 100644 index 0000000..6ad5631 --- /dev/null +++ b/ProjectSettings/URPProjectSettings.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + 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: 247994e1f5a72c2419c26a37e9334c01, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LastMaterialVersion: 10 + m_ProjectSettingFolderPath: URPDefaultResources diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset new file mode 100644 index 0000000..029ad8b --- /dev/null +++ b/ProjectSettings/UnityConnectSettings.asset @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!310 &1 +UnityConnectSettings: + m_ObjectHideFlags: 0 + serializedVersion: 1 + m_Enabled: 0 + m_TestMode: 0 + m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events + m_EventUrl: https://cdp.cloud.unity3d.com/v1/events + m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com + m_TestInitMode: 0 + InsightsSettings: + m_EngineDiagnosticsEnabled: 1 + m_Enabled: 0 + CrashReportingSettings: + serializedVersion: 2 + m_EventUrl: https://perf-events.cloud.unity3d.com + m_EnableCloudDiagnosticsReporting: 0 + m_LogBufferSize: 10 + m_CaptureEditorExceptions: 1 + UnityPurchasingSettings: + m_Enabled: 0 + m_TestMode: 0 + UnityAnalyticsSettings: + m_Enabled: 0 + m_TestMode: 0 + m_InitializeOnStartup: 1 + m_PackageRequiringCoreStatsPresent: 0 + UnityAdsSettings: + m_Enabled: 0 + m_InitializeOnStartup: 1 + m_TestMode: 0 + m_IosGameId: + m_AndroidGameId: + m_GameIds: {} + m_GameId: + PerformanceReportingSettings: + m_Enabled: 0 diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset new file mode 100644 index 0000000..3a95c98 --- /dev/null +++ b/ProjectSettings/VFXManager.asset @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!937362698 &1 +VFXManager: + m_ObjectHideFlags: 0 + m_IndirectShader: {fileID: 0} + m_CopyBufferShader: {fileID: 0} + m_SortShader: {fileID: 0} + m_StripUpdateShader: {fileID: 0} + m_RenderPipeSettingsPath: + m_FixedTimeStep: 0.016666668 + m_MaxDeltaTime: 0.05 diff --git a/ProjectSettings/VersionControlSettings.asset b/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/ProjectSettings/XRSettings.asset b/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file