├── .github └── FUNDING.yml ├── .gitignore ├── Assets ├── BoidsComputerShaderSandbox.meta ├── BoidsComputerShaderSandbox │ ├── Effects.meta │ ├── Effects │ │ ├── BoidsVisualizer.vfx │ │ └── BoidsVisualizer.vfx.meta │ ├── Prefabs.meta │ ├── Prefabs │ │ ├── Cube.prefab │ │ └── Cube.prefab.meta │ ├── Scenes.meta │ ├── Scenes │ │ ├── Main.meta │ │ ├── Main.unity │ │ ├── Main.unity.meta │ │ ├── Main │ │ │ ├── PP Volume Profile.asset │ │ │ └── PP Volume Profile.asset.meta │ │ ├── Minimal.unity │ │ ├── Minimal.unity.meta │ │ ├── Test.unity │ │ └── Test.unity.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── MinimalInvestigation.meta │ │ ├── MinimalInvestigation │ │ │ ├── BoidsBehaviour.cs │ │ │ ├── BoidsBehaviour.cs.meta │ │ │ ├── BoidsCore.cs │ │ │ ├── BoidsCore.cs.meta │ │ │ ├── ComputeShaderInvest.cs │ │ │ └── ComputeShaderInvest.cs.meta │ │ ├── Types.meta │ │ ├── Types │ │ │ ├── BoidsData.cs │ │ │ └── BoidsData.cs.meta │ │ ├── VFX.meta │ │ └── VFX │ │ │ ├── BoidsBinder.cs │ │ │ └── BoidsBinder.cs.meta │ ├── Shaders.meta │ └── Shaders │ │ ├── Boids.compute │ │ └── Boids.compute.meta ├── DefaultVolumeProfile.asset ├── DefaultVolumeProfile.asset.meta ├── Scenes.meta ├── Scenes │ ├── SampleScene.unity │ └── SampleScene.unity.meta ├── Settings.meta ├── Settings │ ├── New Universal Render Pipeline Asset.asset │ ├── New Universal Render Pipeline Asset.asset.meta │ ├── New Universal Render Pipeline Asset_Renderer.asset │ └── New Universal Render Pipeline Asset_Renderer.asset.meta ├── UniversalRenderPipelineGlobalSettings.asset └── UniversalRenderPipelineGlobalSettings.asset.meta ├── LICENSE.md ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── MemorySettings.asset ├── MultiplayerManager.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Packages │ └── com.unity.testtools.codecoverage │ │ └── Settings.json ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── SceneTemplateSettings.json ├── ShaderGraphSettings.asset ├── TagManager.asset ├── TimeManager.asset ├── URPProjectSettings.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset ├── README.md ├── UserSettings ├── EditorUserSettings.asset ├── Layouts │ └── default-2023.dwlt ├── Search.index └── Search.settings └── docs └── unity-boids.png /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: drumath2237 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Never ignore Asset meta data 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # TextMesh Pro files 20 | [Aa]ssets/TextMesh*Pro/ 21 | 22 | # Autogenerated Jetbrains Rider plugin 23 | [Aa]ssets/Plugins/Editor/JetBrains* 24 | 25 | # Visual Studio cache directory 26 | .vs/ 27 | 28 | # Gradle cache directory 29 | .gradle/ 30 | 31 | # Autogenerated VS/MD/Consulo solution and project files 32 | ExportedObj/ 33 | .consulo/ 34 | *.csproj 35 | *.unityproj 36 | *.sln 37 | *.suo 38 | *.tmp 39 | *.user 40 | *.userprefs 41 | *.pidb 42 | *.booproj 43 | *.svd 44 | *.pdb 45 | *.mdb 46 | *.opendb 47 | *.VC.db 48 | 49 | # Unity3D generated meta files 50 | *.pidb.meta 51 | *.pdb.meta 52 | *.mdb.meta 53 | 54 | # Unity3D generated file on crash reports 55 | sysinfo.txt 56 | 57 | # Builds 58 | *.apk 59 | *.unitypackage 60 | 61 | # Crashlytics generated file 62 | crashlytics-build.properties 63 | 64 | 65 | UserSettings/Layouts/ 66 | 67 | .idea/ 68 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c562b20d30f6fb438c44862fa254f7e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Effects.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8d64b462ab1be9346bac7cc58488229b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Effects/BoidsVisualizer.vfx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8139cc4e9ed3e5d4792e3e6108b88071 3 | VisualEffectImporter: 4 | externalObjects: {} 5 | serializedVersion: 1 6 | template: 7 | name: 8 | category: 9 | description: 10 | icon: {instanceID: 0} 11 | thumbnail: {instanceID: 0} 12 | userData: 13 | assetBundleName: 14 | assetBundleVariant: 15 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f0542eb236b6b14a8204c2f920eeb3f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Prefabs/Cube.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &3491508281341080955 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 6494123031914325339} 12 | - component: {fileID: 7938553779912689801} 13 | - component: {fileID: 7399386282954801773} 14 | - component: {fileID: 5922666316766793965} 15 | m_Layer: 0 16 | m_Name: Cube 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &6494123031914325339 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 3491508281341080955} 29 | serializedVersion: 2 30 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 31 | m_LocalPosition: {x: 0, y: 0, z: 0} 32 | m_LocalScale: {x: 0.25, y: 0.25, z: 0.75} 33 | m_ConstrainProportionsScale: 1 34 | m_Children: [] 35 | m_Father: {fileID: 0} 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | --- !u!33 &7938553779912689801 38 | MeshFilter: 39 | m_ObjectHideFlags: 0 40 | m_CorrespondingSourceObject: {fileID: 0} 41 | m_PrefabInstance: {fileID: 0} 42 | m_PrefabAsset: {fileID: 0} 43 | m_GameObject: {fileID: 3491508281341080955} 44 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 45 | --- !u!23 &7399386282954801773 46 | MeshRenderer: 47 | m_ObjectHideFlags: 0 48 | m_CorrespondingSourceObject: {fileID: 0} 49 | m_PrefabInstance: {fileID: 0} 50 | m_PrefabAsset: {fileID: 0} 51 | m_GameObject: {fileID: 3491508281341080955} 52 | m_Enabled: 1 53 | m_CastShadows: 1 54 | m_ReceiveShadows: 1 55 | m_DynamicOccludee: 1 56 | m_StaticShadowCaster: 0 57 | m_MotionVectors: 1 58 | m_LightProbeUsage: 1 59 | m_ReflectionProbeUsage: 1 60 | m_RayTracingMode: 2 61 | m_RayTraceProcedural: 0 62 | m_RayTracingAccelStructBuildFlagsOverride: 0 63 | m_RayTracingAccelStructBuildFlags: 1 64 | m_RenderingLayerMask: 1 65 | m_RendererPriority: 0 66 | m_Materials: 67 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 68 | m_StaticBatchInfo: 69 | firstSubMesh: 0 70 | subMeshCount: 0 71 | m_StaticBatchRoot: {fileID: 0} 72 | m_ProbeAnchor: {fileID: 0} 73 | m_LightProbeVolumeOverride: {fileID: 0} 74 | m_ScaleInLightmap: 1 75 | m_ReceiveGI: 1 76 | m_PreserveUVs: 0 77 | m_IgnoreNormalsForChartDetection: 0 78 | m_ImportantGI: 0 79 | m_StitchLightmapSeams: 1 80 | m_SelectedEditorRenderState: 3 81 | m_MinimumChartSize: 4 82 | m_AutoUVMaxDistance: 0.5 83 | m_AutoUVMaxAngle: 89 84 | m_LightmapParameters: {fileID: 0} 85 | m_SortingLayerID: 0 86 | m_SortingLayer: 0 87 | m_SortingOrder: 0 88 | m_AdditionalVertexStreams: {fileID: 0} 89 | --- !u!65 &5922666316766793965 90 | BoxCollider: 91 | m_ObjectHideFlags: 0 92 | m_CorrespondingSourceObject: {fileID: 0} 93 | m_PrefabInstance: {fileID: 0} 94 | m_PrefabAsset: {fileID: 0} 95 | m_GameObject: {fileID: 3491508281341080955} 96 | m_Material: {fileID: 0} 97 | m_IncludeLayers: 98 | serializedVersion: 2 99 | m_Bits: 0 100 | m_ExcludeLayers: 101 | serializedVersion: 2 102 | m_Bits: 0 103 | m_LayerOverridePriority: 0 104 | m_IsTrigger: 0 105 | m_ProvidesContacts: 0 106 | m_Enabled: 1 107 | serializedVersion: 3 108 | m_Size: {x: 1, y: 1, z: 1} 109 | m_Center: {x: 0, y: 0, z: 0} 110 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Prefabs/Cube.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b564c791d273ec409941338b750f4ef 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1ae16fca328298e4eb5aa5c962cdffd5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Main.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b03027405df049f46821149193a3cc7f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Main.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 10 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 0 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_ReflectionCompression: 2 70 | m_MixedBakeMode: 2 71 | m_BakeBackend: 1 72 | m_PVRSampling: 1 73 | m_PVRDirectSampleCount: 32 74 | m_PVRSampleCount: 512 75 | m_PVRBounces: 2 76 | m_PVREnvironmentSampleCount: 256 77 | m_PVREnvironmentReferencePointCount: 2048 78 | m_PVRFilteringMode: 1 79 | m_PVRDenoiserTypeDirect: 1 80 | m_PVRDenoiserTypeIndirect: 1 81 | m_PVRDenoiserTypeAO: 1 82 | m_PVRFilterTypeDirect: 0 83 | m_PVRFilterTypeIndirect: 0 84 | m_PVRFilterTypeAO: 0 85 | m_PVREnvironmentMIS: 1 86 | m_PVRCulling: 1 87 | m_PVRFilteringGaussRadiusDirect: 1 88 | m_PVRFilteringGaussRadiusIndirect: 5 89 | m_PVRFilteringGaussRadiusAO: 2 90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 92 | m_PVRFilteringAtrousPositionSigmaAO: 1 93 | m_ExportTrainingData: 0 94 | m_TrainingDataDestination: TrainingData 95 | m_LightProbeSampleCountMultiplier: 4 96 | m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} 97 | m_LightingSettings: {fileID: 0} 98 | --- !u!196 &4 99 | NavMeshSettings: 100 | serializedVersion: 2 101 | m_ObjectHideFlags: 0 102 | m_BuildSettings: 103 | serializedVersion: 3 104 | agentTypeID: 0 105 | agentRadius: 0.5 106 | agentHeight: 2 107 | agentSlope: 45 108 | agentClimb: 0.4 109 | ledgeDropHeight: 0 110 | maxJumpAcrossDistance: 0 111 | minRegionArea: 2 112 | manualCellSize: 0 113 | cellSize: 0.16666667 114 | manualTileSize: 0 115 | tileSize: 256 116 | buildHeightMesh: 0 117 | maxJobWorkers: 0 118 | preserveTilesOutsideBounds: 0 119 | debug: 120 | m_Flags: 0 121 | m_NavMeshData: {fileID: 0} 122 | --- !u!1 &57833320 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 57833323} 131 | - component: {fileID: 57833322} 132 | - component: {fileID: 57833321} 133 | - component: {fileID: 57833324} 134 | m_Layer: 0 135 | m_Name: Main Camera 136 | m_TagString: MainCamera 137 | m_Icon: {fileID: 0} 138 | m_NavMeshLayer: 0 139 | m_StaticEditorFlags: 0 140 | m_IsActive: 1 141 | --- !u!81 &57833321 142 | AudioListener: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 57833320} 148 | m_Enabled: 1 149 | --- !u!20 &57833322 150 | Camera: 151 | m_ObjectHideFlags: 0 152 | m_CorrespondingSourceObject: {fileID: 0} 153 | m_PrefabInstance: {fileID: 0} 154 | m_PrefabAsset: {fileID: 0} 155 | m_GameObject: {fileID: 57833320} 156 | m_Enabled: 1 157 | serializedVersion: 2 158 | m_ClearFlags: 2 159 | m_BackGroundColor: {r: 0.12793697, g: 0.16256525, b: 0.21698111, a: 0} 160 | m_projectionMatrixMode: 1 161 | m_GateFitMode: 2 162 | m_FOVAxisMode: 0 163 | m_Iso: 200 164 | m_ShutterSpeed: 0.005 165 | m_Aperture: 16 166 | m_FocusDistance: 10 167 | m_FocalLength: 50 168 | m_BladeCount: 5 169 | m_Curvature: {x: 2, y: 11} 170 | m_BarrelClipping: 0.25 171 | m_Anamorphism: 0 172 | m_SensorSize: {x: 36, y: 24} 173 | m_LensShift: {x: 0, y: 0} 174 | m_NormalizedViewPortRect: 175 | serializedVersion: 2 176 | x: 0 177 | y: 0 178 | width: 1 179 | height: 1 180 | near clip plane: 0.3 181 | far clip plane: 1000 182 | field of view: 60 183 | orthographic: 0 184 | orthographic size: 5 185 | m_Depth: -1 186 | m_CullingMask: 187 | serializedVersion: 2 188 | m_Bits: 4294967295 189 | m_RenderingPath: -1 190 | m_TargetTexture: {fileID: 0} 191 | m_TargetDisplay: 0 192 | m_TargetEye: 3 193 | m_HDR: 1 194 | m_AllowMSAA: 1 195 | m_AllowDynamicResolution: 0 196 | m_ForceIntoRT: 0 197 | m_OcclusionCulling: 1 198 | m_StereoConvergence: 10 199 | m_StereoSeparation: 0.022 200 | --- !u!4 &57833323 201 | Transform: 202 | m_ObjectHideFlags: 0 203 | m_CorrespondingSourceObject: {fileID: 0} 204 | m_PrefabInstance: {fileID: 0} 205 | m_PrefabAsset: {fileID: 0} 206 | m_GameObject: {fileID: 57833320} 207 | serializedVersion: 2 208 | m_LocalRotation: {x: 0.115617536, y: -0.4348299, z: 0.056406632, w: 0.89127654} 209 | m_LocalPosition: {x: 44.500343, y: 12.76911, z: -36.971382} 210 | m_LocalScale: {x: 1, y: 1, z: 1} 211 | m_ConstrainProportionsScale: 0 212 | m_Children: [] 213 | m_Father: {fileID: 0} 214 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 215 | --- !u!114 &57833324 216 | MonoBehaviour: 217 | m_ObjectHideFlags: 0 218 | m_CorrespondingSourceObject: {fileID: 0} 219 | m_PrefabInstance: {fileID: 0} 220 | m_PrefabAsset: {fileID: 0} 221 | m_GameObject: {fileID: 57833320} 222 | m_Enabled: 1 223 | m_EditorHideFlags: 0 224 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 225 | m_Name: 226 | m_EditorClassIdentifier: 227 | m_RenderShadows: 1 228 | m_RequiresDepthTextureOption: 2 229 | m_RequiresOpaqueTextureOption: 2 230 | m_CameraType: 0 231 | m_Cameras: [] 232 | m_RendererIndex: -1 233 | m_VolumeLayerMask: 234 | serializedVersion: 2 235 | m_Bits: 1 236 | m_VolumeTrigger: {fileID: 0} 237 | m_VolumeFrameworkUpdateModeOption: 2 238 | m_RenderPostProcessing: 1 239 | m_Antialiasing: 1 240 | m_AntialiasingQuality: 2 241 | m_StopNaN: 0 242 | m_Dithering: 0 243 | m_ClearDepth: 1 244 | m_AllowXRRendering: 1 245 | m_AllowHDROutput: 1 246 | m_UseScreenCoordOverride: 0 247 | m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} 248 | m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} 249 | m_RequiresDepthTexture: 0 250 | m_RequiresColorTexture: 0 251 | m_Version: 2 252 | m_TaaSettings: 253 | quality: 3 254 | frameInfluence: 0.1 255 | jitterScale: 1 256 | mipBias: 0 257 | varianceClampScale: 0.9 258 | contrastAdaptiveSharpening: 0 259 | --- !u!1 &1688785489 260 | GameObject: 261 | m_ObjectHideFlags: 0 262 | m_CorrespondingSourceObject: {fileID: 0} 263 | m_PrefabInstance: {fileID: 0} 264 | m_PrefabAsset: {fileID: 0} 265 | serializedVersion: 6 266 | m_Component: 267 | - component: {fileID: 1688785494} 268 | - component: {fileID: 1688785493} 269 | - component: {fileID: 1688785492} 270 | - component: {fileID: 1688785491} 271 | - component: {fileID: 1688785490} 272 | m_Layer: 0 273 | m_Name: BoidsVisualizer 274 | m_TagString: Untagged 275 | m_Icon: {fileID: 0} 276 | m_NavMeshLayer: 0 277 | m_StaticEditorFlags: 0 278 | m_IsActive: 1 279 | --- !u!114 &1688785490 280 | MonoBehaviour: 281 | m_ObjectHideFlags: 2 282 | m_CorrespondingSourceObject: {fileID: 0} 283 | m_PrefabInstance: {fileID: 0} 284 | m_PrefabAsset: {fileID: 0} 285 | m_GameObject: {fileID: 1688785489} 286 | m_Enabled: 1 287 | m_EditorHideFlags: 0 288 | m_Script: {fileID: 11500000, guid: 70dbf01cb96b474587da2644ff4bcc77, type: 3} 289 | m_Name: 290 | m_EditorClassIdentifier: 291 | boidsBufferProperty: 292 | m_Name: BoidsBuffer 293 | boidsCountProperty: 294 | m_Name: BoidsCount 295 | boidsComputeShader: {fileID: 7200000, guid: 13dcc01f0e3b4a4eba0ede6338237876, type: 3} 296 | boidsCount: 17024 297 | insightRange: 6 298 | maxVelocity: 3 299 | maxAcceleration: 2.5 300 | boundarySize: {x: 25, y: 25, z: 25} 301 | timeScale: 1 302 | fleeThreshold: 1 303 | alignWeight: 1 304 | separationWeight: 2 305 | cohesionWeight: 1 306 | wallForceWight: 1.66 307 | wallDistanceWeight: 4.2 308 | --- !u!114 &1688785491 309 | MonoBehaviour: 310 | m_ObjectHideFlags: 0 311 | m_CorrespondingSourceObject: {fileID: 0} 312 | m_PrefabInstance: {fileID: 0} 313 | m_PrefabAsset: {fileID: 0} 314 | m_GameObject: {fileID: 1688785489} 315 | m_Enabled: 1 316 | m_EditorHideFlags: 0 317 | m_Script: {fileID: 11500000, guid: cdafc37f32b176349b1684c4455b98e9, type: 3} 318 | m_Name: 319 | m_EditorClassIdentifier: 320 | m_ExecuteInEditor: 1 321 | m_Bindings: 322 | - {fileID: 1688785490} 323 | m_VisualEffect: {fileID: 1688785493} 324 | --- !u!73398921 &1688785492 325 | VFXRenderer: 326 | serializedVersion: 1 327 | m_ObjectHideFlags: 2 328 | m_CorrespondingSourceObject: {fileID: 0} 329 | m_PrefabInstance: {fileID: 0} 330 | m_PrefabAsset: {fileID: 0} 331 | m_GameObject: {fileID: 1688785489} 332 | m_Enabled: 1 333 | m_CastShadows: 1 334 | m_ReceiveShadows: 0 335 | m_DynamicOccludee: 1 336 | m_StaticShadowCaster: 0 337 | m_MotionVectors: 0 338 | m_LightProbeUsage: 0 339 | m_ReflectionProbeUsage: 0 340 | m_RayTracingMode: 0 341 | m_RayTraceProcedural: 0 342 | m_RayTracingAccelStructBuildFlagsOverride: 0 343 | m_RayTracingAccelStructBuildFlags: 1 344 | m_RenderingLayerMask: 1 345 | m_RendererPriority: 0 346 | m_StaticBatchInfo: 347 | firstSubMesh: 0 348 | subMeshCount: 0 349 | m_StaticBatchRoot: {fileID: 0} 350 | m_ProbeAnchor: {fileID: 0} 351 | m_LightProbeVolumeOverride: {fileID: 0} 352 | m_ScaleInLightmap: 1 353 | m_ReceiveGI: 1 354 | m_PreserveUVs: 0 355 | m_IgnoreNormalsForChartDetection: 0 356 | m_ImportantGI: 0 357 | m_StitchLightmapSeams: 1 358 | m_SelectedEditorRenderState: 3 359 | m_MinimumChartSize: 4 360 | m_AutoUVMaxDistance: 0.5 361 | m_AutoUVMaxAngle: 89 362 | m_LightmapParameters: {fileID: 0} 363 | m_SortingLayerID: 0 364 | m_SortingLayer: 0 365 | m_SortingOrder: 0 366 | --- !u!2083052967 &1688785493 367 | VisualEffect: 368 | m_ObjectHideFlags: 0 369 | m_CorrespondingSourceObject: {fileID: 0} 370 | m_PrefabInstance: {fileID: 0} 371 | m_PrefabAsset: {fileID: 0} 372 | m_GameObject: {fileID: 1688785489} 373 | m_Enabled: 1 374 | m_Asset: {fileID: 8926484042661614526, guid: 8139cc4e9ed3e5d4792e3e6108b88071, type: 3} 375 | m_InitialEventName: OnPlay 376 | m_InitialEventNameOverriden: 0 377 | m_StartSeed: 0 378 | m_ResetSeedOnPlay: 1 379 | m_AllowInstancing: 1 380 | m_ResourceVersion: 1 381 | m_PropertySheet: 382 | m_Float: 383 | m_Array: 384 | - m_Value: 1.01 385 | m_Name: ColorMultiplier 386 | m_Overridden: 1 387 | m_Vector2f: 388 | m_Array: [] 389 | m_Vector3f: 390 | m_Array: [] 391 | m_Vector4f: 392 | m_Array: [] 393 | m_Uint: 394 | m_Array: [] 395 | m_Int: 396 | m_Array: 397 | - m_Value: 17024 398 | m_Name: BoidsCount 399 | m_Overridden: 1 400 | m_Matrix4x4f: 401 | m_Array: [] 402 | m_AnimationCurve: 403 | m_Array: [] 404 | m_Gradient: 405 | m_Array: [] 406 | m_NamedObject: 407 | m_Array: [] 408 | m_Bool: 409 | m_Array: [] 410 | --- !u!4 &1688785494 411 | Transform: 412 | m_ObjectHideFlags: 0 413 | m_CorrespondingSourceObject: {fileID: 0} 414 | m_PrefabInstance: {fileID: 0} 415 | m_PrefabAsset: {fileID: 0} 416 | m_GameObject: {fileID: 1688785489} 417 | serializedVersion: 2 418 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 419 | m_LocalPosition: {x: 0, y: 0, z: 0} 420 | m_LocalScale: {x: 1, y: 1, z: 1} 421 | m_ConstrainProportionsScale: 0 422 | m_Children: [] 423 | m_Father: {fileID: 0} 424 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 425 | --- !u!1 &1979202325 426 | GameObject: 427 | m_ObjectHideFlags: 0 428 | m_CorrespondingSourceObject: {fileID: 0} 429 | m_PrefabInstance: {fileID: 0} 430 | m_PrefabAsset: {fileID: 0} 431 | serializedVersion: 6 432 | m_Component: 433 | - component: {fileID: 1979202327} 434 | - component: {fileID: 1979202326} 435 | - component: {fileID: 1979202328} 436 | m_Layer: 0 437 | m_Name: Directional Light 438 | m_TagString: Untagged 439 | m_Icon: {fileID: 0} 440 | m_NavMeshLayer: 0 441 | m_StaticEditorFlags: 0 442 | m_IsActive: 1 443 | --- !u!108 &1979202326 444 | Light: 445 | m_ObjectHideFlags: 0 446 | m_CorrespondingSourceObject: {fileID: 0} 447 | m_PrefabInstance: {fileID: 0} 448 | m_PrefabAsset: {fileID: 0} 449 | m_GameObject: {fileID: 1979202325} 450 | m_Enabled: 1 451 | serializedVersion: 11 452 | m_Type: 1 453 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 454 | m_Intensity: 1 455 | m_Range: 10 456 | m_SpotAngle: 30 457 | m_InnerSpotAngle: 21.80208 458 | m_CookieSize: 10 459 | m_Shadows: 460 | m_Type: 2 461 | m_Resolution: -1 462 | m_CustomResolution: -1 463 | m_Strength: 1 464 | m_Bias: 0.05 465 | m_NormalBias: 0.4 466 | m_NearPlane: 0.2 467 | m_CullingMatrixOverride: 468 | e00: 1 469 | e01: 0 470 | e02: 0 471 | e03: 0 472 | e10: 0 473 | e11: 1 474 | e12: 0 475 | e13: 0 476 | e20: 0 477 | e21: 0 478 | e22: 1 479 | e23: 0 480 | e30: 0 481 | e31: 0 482 | e32: 0 483 | e33: 1 484 | m_UseCullingMatrixOverride: 0 485 | m_Cookie: {fileID: 0} 486 | m_DrawHalo: 0 487 | m_Flare: {fileID: 0} 488 | m_RenderMode: 0 489 | m_CullingMask: 490 | serializedVersion: 2 491 | m_Bits: 4294967295 492 | m_RenderingLayerMask: 1 493 | m_Lightmapping: 4 494 | m_LightShadowCasterMode: 0 495 | m_AreaSize: {x: 1, y: 1} 496 | m_BounceIntensity: 1 497 | m_ColorTemperature: 6570 498 | m_UseColorTemperature: 0 499 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 500 | m_UseBoundingSphereOverride: 0 501 | m_UseViewFrustumForShadowCasterCull: 1 502 | m_ShadowRadius: 0 503 | m_ShadowAngle: 0 504 | --- !u!4 &1979202327 505 | Transform: 506 | m_ObjectHideFlags: 0 507 | m_CorrespondingSourceObject: {fileID: 0} 508 | m_PrefabInstance: {fileID: 0} 509 | m_PrefabAsset: {fileID: 0} 510 | m_GameObject: {fileID: 1979202325} 511 | serializedVersion: 2 512 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 513 | m_LocalPosition: {x: 0, y: 3, z: 0} 514 | m_LocalScale: {x: 1, y: 1, z: 1} 515 | m_ConstrainProportionsScale: 0 516 | m_Children: [] 517 | m_Father: {fileID: 0} 518 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 519 | --- !u!114 &1979202328 520 | MonoBehaviour: 521 | m_ObjectHideFlags: 0 522 | m_CorrespondingSourceObject: {fileID: 0} 523 | m_PrefabInstance: {fileID: 0} 524 | m_PrefabAsset: {fileID: 0} 525 | m_GameObject: {fileID: 1979202325} 526 | m_Enabled: 1 527 | m_EditorHideFlags: 0 528 | m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} 529 | m_Name: 530 | m_EditorClassIdentifier: 531 | m_Version: 3 532 | m_UsePipelineSettings: 1 533 | m_AdditionalLightsShadowResolutionTier: 2 534 | m_LightLayerMask: 1 535 | m_RenderingLayers: 1 536 | m_CustomShadowLayers: 0 537 | m_ShadowLayerMask: 1 538 | m_ShadowRenderingLayers: 1 539 | m_LightCookieSize: {x: 1, y: 1} 540 | m_LightCookieOffset: {x: 0, y: 0} 541 | m_SoftShadowQuality: 0 542 | --- !u!1 &2008164750 543 | GameObject: 544 | m_ObjectHideFlags: 0 545 | m_CorrespondingSourceObject: {fileID: 0} 546 | m_PrefabInstance: {fileID: 0} 547 | m_PrefabAsset: {fileID: 0} 548 | serializedVersion: 6 549 | m_Component: 550 | - component: {fileID: 2008164752} 551 | - component: {fileID: 2008164751} 552 | m_Layer: 0 553 | m_Name: PP Volume 554 | m_TagString: Untagged 555 | m_Icon: {fileID: 0} 556 | m_NavMeshLayer: 0 557 | m_StaticEditorFlags: 0 558 | m_IsActive: 1 559 | --- !u!114 &2008164751 560 | MonoBehaviour: 561 | m_ObjectHideFlags: 0 562 | m_CorrespondingSourceObject: {fileID: 0} 563 | m_PrefabInstance: {fileID: 0} 564 | m_PrefabAsset: {fileID: 0} 565 | m_GameObject: {fileID: 2008164750} 566 | m_Enabled: 1 567 | m_EditorHideFlags: 0 568 | m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} 569 | m_Name: 570 | m_EditorClassIdentifier: 571 | m_IsGlobal: 1 572 | priority: 0 573 | blendDistance: 0 574 | weight: 1 575 | sharedProfile: {fileID: 11400000, guid: 2425c31ba78a133418c17a604a91b8ef, type: 2} 576 | --- !u!4 &2008164752 577 | Transform: 578 | m_ObjectHideFlags: 0 579 | m_CorrespondingSourceObject: {fileID: 0} 580 | m_PrefabInstance: {fileID: 0} 581 | m_PrefabAsset: {fileID: 0} 582 | m_GameObject: {fileID: 2008164750} 583 | serializedVersion: 2 584 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 585 | m_LocalPosition: {x: 0, y: 0, z: 0} 586 | m_LocalScale: {x: 1, y: 1, z: 1} 587 | m_ConstrainProportionsScale: 0 588 | m_Children: [] 589 | m_Father: {fileID: 0} 590 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 591 | --- !u!1660057539 &9223372036854775807 592 | SceneRoots: 593 | m_ObjectHideFlags: 0 594 | m_Roots: 595 | - {fileID: 57833323} 596 | - {fileID: 1979202327} 597 | - {fileID: 1688785494} 598 | - {fileID: 2008164752} 599 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Main.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c7edd7827b884714dbb8037c49549498 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Main/PP Volume Profile.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-8358622127191537931 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 3 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 899c54efeace73346a0a16faa3afe726, type: 3} 13 | m_Name: Vignette 14 | m_EditorClassIdentifier: 15 | active: 1 16 | color: 17 | m_OverrideState: 0 18 | m_Value: {r: 0, g: 0, b: 0, a: 1} 19 | center: 20 | m_OverrideState: 0 21 | m_Value: {x: 0.5, y: 0.5} 22 | intensity: 23 | m_OverrideState: 0 24 | m_Value: 0 25 | smoothness: 26 | m_OverrideState: 0 27 | m_Value: 0.2 28 | rounded: 29 | m_OverrideState: 0 30 | m_Value: 0 31 | --- !u!114 &-7948113834782048955 32 | MonoBehaviour: 33 | m_ObjectHideFlags: 3 34 | m_CorrespondingSourceObject: {fileID: 0} 35 | m_PrefabInstance: {fileID: 0} 36 | m_PrefabAsset: {fileID: 0} 37 | m_GameObject: {fileID: 0} 38 | m_Enabled: 1 39 | m_EditorHideFlags: 0 40 | m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3} 41 | m_Name: ChromaticAberration 42 | m_EditorClassIdentifier: 43 | active: 1 44 | intensity: 45 | m_OverrideState: 1 46 | m_Value: 0 47 | --- !u!114 &-6500778313627392718 48 | MonoBehaviour: 49 | m_ObjectHideFlags: 3 50 | m_CorrespondingSourceObject: {fileID: 0} 51 | m_PrefabInstance: {fileID: 0} 52 | m_PrefabAsset: {fileID: 0} 53 | m_GameObject: {fileID: 0} 54 | m_Enabled: 1 55 | m_EditorHideFlags: 0 56 | m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} 57 | m_Name: Bloom 58 | m_EditorClassIdentifier: 59 | active: 1 60 | skipIterations: 61 | m_OverrideState: 0 62 | m_Value: 1 63 | threshold: 64 | m_OverrideState: 1 65 | m_Value: 0.9 66 | intensity: 67 | m_OverrideState: 1 68 | m_Value: 3.28 69 | scatter: 70 | m_OverrideState: 1 71 | m_Value: 0.866 72 | clamp: 73 | m_OverrideState: 0 74 | m_Value: 65472 75 | tint: 76 | m_OverrideState: 0 77 | m_Value: {r: 1, g: 1, b: 1, a: 1} 78 | highQualityFiltering: 79 | m_OverrideState: 0 80 | m_Value: 0 81 | downscale: 82 | m_OverrideState: 0 83 | m_Value: 0 84 | maxIterations: 85 | m_OverrideState: 0 86 | m_Value: 6 87 | dirtTexture: 88 | m_OverrideState: 0 89 | m_Value: {fileID: 0} 90 | dimension: 1 91 | dirtIntensity: 92 | m_OverrideState: 0 93 | m_Value: 0 94 | --- !u!114 &-3713928343778491412 95 | MonoBehaviour: 96 | m_ObjectHideFlags: 3 97 | m_CorrespondingSourceObject: {fileID: 0} 98 | m_PrefabInstance: {fileID: 0} 99 | m_PrefabAsset: {fileID: 0} 100 | m_GameObject: {fileID: 0} 101 | m_Enabled: 1 102 | m_EditorHideFlags: 0 103 | m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3} 104 | m_Name: Tonemapping 105 | m_EditorClassIdentifier: 106 | active: 1 107 | mode: 108 | m_OverrideState: 1 109 | m_Value: 2 110 | neutralHDRRangeReductionMode: 111 | m_OverrideState: 0 112 | m_Value: 2 113 | acesPreset: 114 | m_OverrideState: 0 115 | m_Value: 3 116 | hueShiftAmount: 117 | m_OverrideState: 0 118 | m_Value: 0 119 | detectPaperWhite: 120 | m_OverrideState: 0 121 | m_Value: 0 122 | paperWhite: 123 | m_OverrideState: 0 124 | m_Value: 300 125 | detectBrightnessLimits: 126 | m_OverrideState: 0 127 | m_Value: 1 128 | minNits: 129 | m_OverrideState: 0 130 | m_Value: 0.005 131 | maxNits: 132 | m_OverrideState: 0 133 | m_Value: 1000 134 | --- !u!114 &11400000 135 | MonoBehaviour: 136 | m_ObjectHideFlags: 0 137 | m_CorrespondingSourceObject: {fileID: 0} 138 | m_PrefabInstance: {fileID: 0} 139 | m_PrefabAsset: {fileID: 0} 140 | m_GameObject: {fileID: 0} 141 | m_Enabled: 1 142 | m_EditorHideFlags: 0 143 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 144 | m_Name: PP Volume Profile 145 | m_EditorClassIdentifier: 146 | components: 147 | - {fileID: -6500778313627392718} 148 | - {fileID: -7948113834782048955} 149 | - {fileID: 5579587814973074053} 150 | - {fileID: 781718048173026694} 151 | - {fileID: -3713928343778491412} 152 | - {fileID: 4630537556764098488} 153 | - {fileID: -8358622127191537931} 154 | --- !u!114 &781718048173026694 155 | MonoBehaviour: 156 | m_ObjectHideFlags: 3 157 | m_CorrespondingSourceObject: {fileID: 0} 158 | m_PrefabInstance: {fileID: 0} 159 | m_PrefabAsset: {fileID: 0} 160 | m_GameObject: {fileID: 0} 161 | m_Enabled: 1 162 | m_EditorHideFlags: 0 163 | m_Script: {fileID: 11500000, guid: c01700fd266d6914ababb731e09af2eb, type: 3} 164 | m_Name: DepthOfField 165 | m_EditorClassIdentifier: 166 | active: 1 167 | mode: 168 | m_OverrideState: 0 169 | m_Value: 0 170 | gaussianStart: 171 | m_OverrideState: 0 172 | m_Value: 10 173 | gaussianEnd: 174 | m_OverrideState: 0 175 | m_Value: 30 176 | gaussianMaxRadius: 177 | m_OverrideState: 0 178 | m_Value: 1 179 | highQualitySampling: 180 | m_OverrideState: 0 181 | m_Value: 0 182 | focusDistance: 183 | m_OverrideState: 0 184 | m_Value: 10 185 | aperture: 186 | m_OverrideState: 0 187 | m_Value: 5.6 188 | focalLength: 189 | m_OverrideState: 0 190 | m_Value: 50 191 | bladeCount: 192 | m_OverrideState: 0 193 | m_Value: 5 194 | bladeCurvature: 195 | m_OverrideState: 0 196 | m_Value: 1 197 | bladeRotation: 198 | m_OverrideState: 0 199 | m_Value: 0 200 | --- !u!114 &4630537556764098488 201 | MonoBehaviour: 202 | m_ObjectHideFlags: 3 203 | m_CorrespondingSourceObject: {fileID: 0} 204 | m_PrefabInstance: {fileID: 0} 205 | m_PrefabAsset: {fileID: 0} 206 | m_GameObject: {fileID: 0} 207 | m_Enabled: 1 208 | m_EditorHideFlags: 0 209 | m_Script: {fileID: 11500000, guid: 221518ef91623a7438a71fef23660601, type: 3} 210 | m_Name: WhiteBalance 211 | m_EditorClassIdentifier: 212 | active: 1 213 | temperature: 214 | m_OverrideState: 0 215 | m_Value: 0 216 | tint: 217 | m_OverrideState: 0 218 | m_Value: 0 219 | --- !u!114 &5579587814973074053 220 | MonoBehaviour: 221 | m_ObjectHideFlags: 3 222 | m_CorrespondingSourceObject: {fileID: 0} 223 | m_PrefabInstance: {fileID: 0} 224 | m_PrefabAsset: {fileID: 0} 225 | m_GameObject: {fileID: 0} 226 | m_Enabled: 1 227 | m_EditorHideFlags: 0 228 | m_Script: {fileID: 11500000, guid: 66f335fb1ffd8684294ad653bf1c7564, type: 3} 229 | m_Name: ColorAdjustments 230 | m_EditorClassIdentifier: 231 | active: 1 232 | postExposure: 233 | m_OverrideState: 1 234 | m_Value: 0 235 | contrast: 236 | m_OverrideState: 0 237 | m_Value: 0 238 | colorFilter: 239 | m_OverrideState: 0 240 | m_Value: {r: 1, g: 1, b: 1, a: 1} 241 | hueShift: 242 | m_OverrideState: 0 243 | m_Value: 0 244 | saturation: 245 | m_OverrideState: 0 246 | m_Value: 0 247 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Main/PP Volume Profile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2425c31ba78a133418c17a604a91b8ef 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Minimal.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 10 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 0 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_ReflectionCompression: 2 70 | m_MixedBakeMode: 2 71 | m_BakeBackend: 1 72 | m_PVRSampling: 1 73 | m_PVRDirectSampleCount: 32 74 | m_PVRSampleCount: 512 75 | m_PVRBounces: 2 76 | m_PVREnvironmentSampleCount: 256 77 | m_PVREnvironmentReferencePointCount: 2048 78 | m_PVRFilteringMode: 1 79 | m_PVRDenoiserTypeDirect: 1 80 | m_PVRDenoiserTypeIndirect: 1 81 | m_PVRDenoiserTypeAO: 1 82 | m_PVRFilterTypeDirect: 0 83 | m_PVRFilterTypeIndirect: 0 84 | m_PVRFilterTypeAO: 0 85 | m_PVREnvironmentMIS: 1 86 | m_PVRCulling: 1 87 | m_PVRFilteringGaussRadiusDirect: 1 88 | m_PVRFilteringGaussRadiusIndirect: 5 89 | m_PVRFilteringGaussRadiusAO: 2 90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 92 | m_PVRFilteringAtrousPositionSigmaAO: 1 93 | m_ExportTrainingData: 0 94 | m_TrainingDataDestination: TrainingData 95 | m_LightProbeSampleCountMultiplier: 4 96 | m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} 97 | m_LightingSettings: {fileID: 0} 98 | --- !u!196 &4 99 | NavMeshSettings: 100 | serializedVersion: 2 101 | m_ObjectHideFlags: 0 102 | m_BuildSettings: 103 | serializedVersion: 3 104 | agentTypeID: 0 105 | agentRadius: 0.5 106 | agentHeight: 2 107 | agentSlope: 45 108 | agentClimb: 0.4 109 | ledgeDropHeight: 0 110 | maxJumpAcrossDistance: 0 111 | minRegionArea: 2 112 | manualCellSize: 0 113 | cellSize: 0.16666667 114 | manualTileSize: 0 115 | tileSize: 256 116 | buildHeightMesh: 0 117 | maxJobWorkers: 0 118 | preserveTilesOutsideBounds: 0 119 | debug: 120 | m_Flags: 0 121 | m_NavMeshData: {fileID: 0} 122 | --- !u!1 &633905917 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 633905919} 131 | - component: {fileID: 633905918} 132 | - component: {fileID: 633905920} 133 | m_Layer: 0 134 | m_Name: Directional Light 135 | m_TagString: Untagged 136 | m_Icon: {fileID: 0} 137 | m_NavMeshLayer: 0 138 | m_StaticEditorFlags: 0 139 | m_IsActive: 1 140 | --- !u!108 &633905918 141 | Light: 142 | m_ObjectHideFlags: 0 143 | m_CorrespondingSourceObject: {fileID: 0} 144 | m_PrefabInstance: {fileID: 0} 145 | m_PrefabAsset: {fileID: 0} 146 | m_GameObject: {fileID: 633905917} 147 | m_Enabled: 1 148 | serializedVersion: 11 149 | m_Type: 1 150 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 151 | m_Intensity: 1 152 | m_Range: 10 153 | m_SpotAngle: 30 154 | m_InnerSpotAngle: 21.80208 155 | m_CookieSize: 10 156 | m_Shadows: 157 | m_Type: 2 158 | m_Resolution: -1 159 | m_CustomResolution: -1 160 | m_Strength: 1 161 | m_Bias: 0.05 162 | m_NormalBias: 0.4 163 | m_NearPlane: 0.2 164 | m_CullingMatrixOverride: 165 | e00: 1 166 | e01: 0 167 | e02: 0 168 | e03: 0 169 | e10: 0 170 | e11: 1 171 | e12: 0 172 | e13: 0 173 | e20: 0 174 | e21: 0 175 | e22: 1 176 | e23: 0 177 | e30: 0 178 | e31: 0 179 | e32: 0 180 | e33: 1 181 | m_UseCullingMatrixOverride: 0 182 | m_Cookie: {fileID: 0} 183 | m_DrawHalo: 0 184 | m_Flare: {fileID: 0} 185 | m_RenderMode: 0 186 | m_CullingMask: 187 | serializedVersion: 2 188 | m_Bits: 4294967295 189 | m_RenderingLayerMask: 1 190 | m_Lightmapping: 4 191 | m_LightShadowCasterMode: 0 192 | m_AreaSize: {x: 1, y: 1} 193 | m_BounceIntensity: 1 194 | m_ColorTemperature: 6570 195 | m_UseColorTemperature: 0 196 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 197 | m_UseBoundingSphereOverride: 0 198 | m_UseViewFrustumForShadowCasterCull: 1 199 | m_ShadowRadius: 0 200 | m_ShadowAngle: 0 201 | --- !u!4 &633905919 202 | Transform: 203 | m_ObjectHideFlags: 0 204 | m_CorrespondingSourceObject: {fileID: 0} 205 | m_PrefabInstance: {fileID: 0} 206 | m_PrefabAsset: {fileID: 0} 207 | m_GameObject: {fileID: 633905917} 208 | serializedVersion: 2 209 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 210 | m_LocalPosition: {x: 0, y: 3, z: 0} 211 | m_LocalScale: {x: 1, y: 1, z: 1} 212 | m_ConstrainProportionsScale: 0 213 | m_Children: [] 214 | m_Father: {fileID: 0} 215 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 216 | --- !u!114 &633905920 217 | MonoBehaviour: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | m_GameObject: {fileID: 633905917} 223 | m_Enabled: 1 224 | m_EditorHideFlags: 0 225 | m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} 226 | m_Name: 227 | m_EditorClassIdentifier: 228 | m_Version: 3 229 | m_UsePipelineSettings: 1 230 | m_AdditionalLightsShadowResolutionTier: 2 231 | m_LightLayerMask: 1 232 | m_RenderingLayers: 1 233 | m_CustomShadowLayers: 0 234 | m_ShadowLayerMask: 1 235 | m_ShadowRenderingLayers: 1 236 | m_LightCookieSize: {x: 1, y: 1} 237 | m_LightCookieOffset: {x: 0, y: 0} 238 | m_SoftShadowQuality: 0 239 | --- !u!1 &1244098595 240 | GameObject: 241 | m_ObjectHideFlags: 0 242 | m_CorrespondingSourceObject: {fileID: 0} 243 | m_PrefabInstance: {fileID: 0} 244 | m_PrefabAsset: {fileID: 0} 245 | serializedVersion: 6 246 | m_Component: 247 | - component: {fileID: 1244098598} 248 | - component: {fileID: 1244098597} 249 | - component: {fileID: 1244098596} 250 | - component: {fileID: 1244098599} 251 | m_Layer: 0 252 | m_Name: Main Camera 253 | m_TagString: MainCamera 254 | m_Icon: {fileID: 0} 255 | m_NavMeshLayer: 0 256 | m_StaticEditorFlags: 0 257 | m_IsActive: 1 258 | --- !u!81 &1244098596 259 | AudioListener: 260 | m_ObjectHideFlags: 0 261 | m_CorrespondingSourceObject: {fileID: 0} 262 | m_PrefabInstance: {fileID: 0} 263 | m_PrefabAsset: {fileID: 0} 264 | m_GameObject: {fileID: 1244098595} 265 | m_Enabled: 1 266 | --- !u!20 &1244098597 267 | Camera: 268 | m_ObjectHideFlags: 0 269 | m_CorrespondingSourceObject: {fileID: 0} 270 | m_PrefabInstance: {fileID: 0} 271 | m_PrefabAsset: {fileID: 0} 272 | m_GameObject: {fileID: 1244098595} 273 | m_Enabled: 1 274 | serializedVersion: 2 275 | m_ClearFlags: 1 276 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 277 | m_projectionMatrixMode: 1 278 | m_GateFitMode: 2 279 | m_FOVAxisMode: 0 280 | m_Iso: 200 281 | m_ShutterSpeed: 0.005 282 | m_Aperture: 16 283 | m_FocusDistance: 10 284 | m_FocalLength: 50 285 | m_BladeCount: 5 286 | m_Curvature: {x: 2, y: 11} 287 | m_BarrelClipping: 0.25 288 | m_Anamorphism: 0 289 | m_SensorSize: {x: 36, y: 24} 290 | m_LensShift: {x: 0, y: 0} 291 | m_NormalizedViewPortRect: 292 | serializedVersion: 2 293 | x: 0 294 | y: 0 295 | width: 1 296 | height: 1 297 | near clip plane: 0.3 298 | far clip plane: 1000 299 | field of view: 60 300 | orthographic: 0 301 | orthographic size: 5 302 | m_Depth: -1 303 | m_CullingMask: 304 | serializedVersion: 2 305 | m_Bits: 4294967295 306 | m_RenderingPath: -1 307 | m_TargetTexture: {fileID: 0} 308 | m_TargetDisplay: 0 309 | m_TargetEye: 3 310 | m_HDR: 1 311 | m_AllowMSAA: 1 312 | m_AllowDynamicResolution: 0 313 | m_ForceIntoRT: 0 314 | m_OcclusionCulling: 1 315 | m_StereoConvergence: 10 316 | m_StereoSeparation: 0.022 317 | --- !u!4 &1244098598 318 | Transform: 319 | m_ObjectHideFlags: 0 320 | m_CorrespondingSourceObject: {fileID: 0} 321 | m_PrefabInstance: {fileID: 0} 322 | m_PrefabAsset: {fileID: 0} 323 | m_GameObject: {fileID: 1244098595} 324 | serializedVersion: 2 325 | m_LocalRotation: {x: 0.11022275, y: -0.8594521, z: 0.20895703, w: 0.45335415} 326 | m_LocalPosition: {x: 12.337954, y: 6.5708895, z: 8.793917} 327 | m_LocalScale: {x: 1, y: 1, z: 1} 328 | m_ConstrainProportionsScale: 0 329 | m_Children: [] 330 | m_Father: {fileID: 0} 331 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 332 | --- !u!114 &1244098599 333 | MonoBehaviour: 334 | m_ObjectHideFlags: 0 335 | m_CorrespondingSourceObject: {fileID: 0} 336 | m_PrefabInstance: {fileID: 0} 337 | m_PrefabAsset: {fileID: 0} 338 | m_GameObject: {fileID: 1244098595} 339 | m_Enabled: 1 340 | m_EditorHideFlags: 0 341 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 342 | m_Name: 343 | m_EditorClassIdentifier: 344 | m_RenderShadows: 1 345 | m_RequiresDepthTextureOption: 2 346 | m_RequiresOpaqueTextureOption: 2 347 | m_CameraType: 0 348 | m_Cameras: [] 349 | m_RendererIndex: -1 350 | m_VolumeLayerMask: 351 | serializedVersion: 2 352 | m_Bits: 1 353 | m_VolumeTrigger: {fileID: 0} 354 | m_VolumeFrameworkUpdateModeOption: 2 355 | m_RenderPostProcessing: 0 356 | m_Antialiasing: 0 357 | m_AntialiasingQuality: 2 358 | m_StopNaN: 0 359 | m_Dithering: 0 360 | m_ClearDepth: 1 361 | m_AllowXRRendering: 1 362 | m_AllowHDROutput: 1 363 | m_UseScreenCoordOverride: 0 364 | m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} 365 | m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} 366 | m_RequiresDepthTexture: 0 367 | m_RequiresColorTexture: 0 368 | m_Version: 2 369 | m_TaaSettings: 370 | quality: 3 371 | frameInfluence: 0.1 372 | jitterScale: 1 373 | mipBias: 0 374 | varianceClampScale: 0.9 375 | contrastAdaptiveSharpening: 0 376 | --- !u!1 &1780185557 377 | GameObject: 378 | m_ObjectHideFlags: 0 379 | m_CorrespondingSourceObject: {fileID: 0} 380 | m_PrefabInstance: {fileID: 0} 381 | m_PrefabAsset: {fileID: 0} 382 | serializedVersion: 6 383 | m_Component: 384 | - component: {fileID: 1780185559} 385 | - component: {fileID: 1780185558} 386 | m_Layer: 0 387 | m_Name: Boids Behaviour 388 | m_TagString: Untagged 389 | m_Icon: {fileID: 0} 390 | m_NavMeshLayer: 0 391 | m_StaticEditorFlags: 0 392 | m_IsActive: 1 393 | --- !u!114 &1780185558 394 | MonoBehaviour: 395 | m_ObjectHideFlags: 0 396 | m_CorrespondingSourceObject: {fileID: 0} 397 | m_PrefabInstance: {fileID: 0} 398 | m_PrefabAsset: {fileID: 0} 399 | m_GameObject: {fileID: 1780185557} 400 | m_Enabled: 1 401 | m_EditorHideFlags: 0 402 | m_Script: {fileID: 11500000, guid: 6c87b018669b41f1b7c6d8b35dfde564, type: 3} 403 | m_Name: 404 | m_EditorClassIdentifier: 405 | boidPrefab: {fileID: 3491508281341080955, guid: 1b564c791d273ec409941338b750f4ef, type: 3} 406 | boidsCount: 400 407 | insightRange: 4 408 | maxVelocity: 5 409 | maxAcceleration: 5 410 | boundarySize: {x: 10, y: 10, z: 10} 411 | timeScale: 1 412 | fleeThreshold: 0.75 413 | alignWeight: 3 414 | separationWeight: 2 415 | cohesionWeight: 1 416 | --- !u!4 &1780185559 417 | Transform: 418 | m_ObjectHideFlags: 0 419 | m_CorrespondingSourceObject: {fileID: 0} 420 | m_PrefabInstance: {fileID: 0} 421 | m_PrefabAsset: {fileID: 0} 422 | m_GameObject: {fileID: 1780185557} 423 | serializedVersion: 2 424 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 425 | m_LocalPosition: {x: 0, y: 0, z: 0} 426 | m_LocalScale: {x: 1, y: 1, z: 1} 427 | m_ConstrainProportionsScale: 0 428 | m_Children: [] 429 | m_Father: {fileID: 0} 430 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 431 | --- !u!1660057539 &9223372036854775807 432 | SceneRoots: 433 | m_ObjectHideFlags: 0 434 | m_Roots: 435 | - {fileID: 1244098598} 436 | - {fileID: 633905919} 437 | - {fileID: 1780185559} 438 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Minimal.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 038f2e1d2324b8f41aabbb8a059962ac 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Test.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 10 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 0 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_ReflectionCompression: 2 70 | m_MixedBakeMode: 2 71 | m_BakeBackend: 1 72 | m_PVRSampling: 1 73 | m_PVRDirectSampleCount: 32 74 | m_PVRSampleCount: 512 75 | m_PVRBounces: 2 76 | m_PVREnvironmentSampleCount: 256 77 | m_PVREnvironmentReferencePointCount: 2048 78 | m_PVRFilteringMode: 1 79 | m_PVRDenoiserTypeDirect: 1 80 | m_PVRDenoiserTypeIndirect: 1 81 | m_PVRDenoiserTypeAO: 1 82 | m_PVRFilterTypeDirect: 0 83 | m_PVRFilterTypeIndirect: 0 84 | m_PVRFilterTypeAO: 0 85 | m_PVREnvironmentMIS: 1 86 | m_PVRCulling: 1 87 | m_PVRFilteringGaussRadiusDirect: 1 88 | m_PVRFilteringGaussRadiusIndirect: 5 89 | m_PVRFilteringGaussRadiusAO: 2 90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 92 | m_PVRFilteringAtrousPositionSigmaAO: 1 93 | m_ExportTrainingData: 0 94 | m_TrainingDataDestination: TrainingData 95 | m_LightProbeSampleCountMultiplier: 4 96 | m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} 97 | m_LightingSettings: {fileID: 0} 98 | --- !u!196 &4 99 | NavMeshSettings: 100 | serializedVersion: 2 101 | m_ObjectHideFlags: 0 102 | m_BuildSettings: 103 | serializedVersion: 3 104 | agentTypeID: 0 105 | agentRadius: 0.5 106 | agentHeight: 2 107 | agentSlope: 45 108 | agentClimb: 0.4 109 | ledgeDropHeight: 0 110 | maxJumpAcrossDistance: 0 111 | minRegionArea: 2 112 | manualCellSize: 0 113 | cellSize: 0.16666667 114 | manualTileSize: 0 115 | tileSize: 256 116 | buildHeightMesh: 0 117 | maxJobWorkers: 0 118 | preserveTilesOutsideBounds: 0 119 | debug: 120 | m_Flags: 0 121 | m_NavMeshData: {fileID: 0} 122 | --- !u!1 &192023288 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 192023290} 131 | - component: {fileID: 192023289} 132 | - component: {fileID: 192023291} 133 | m_Layer: 0 134 | m_Name: Directional Light 135 | m_TagString: Untagged 136 | m_Icon: {fileID: 0} 137 | m_NavMeshLayer: 0 138 | m_StaticEditorFlags: 0 139 | m_IsActive: 1 140 | --- !u!108 &192023289 141 | Light: 142 | m_ObjectHideFlags: 0 143 | m_CorrespondingSourceObject: {fileID: 0} 144 | m_PrefabInstance: {fileID: 0} 145 | m_PrefabAsset: {fileID: 0} 146 | m_GameObject: {fileID: 192023288} 147 | m_Enabled: 1 148 | serializedVersion: 11 149 | m_Type: 1 150 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 151 | m_Intensity: 1 152 | m_Range: 10 153 | m_SpotAngle: 30 154 | m_InnerSpotAngle: 21.80208 155 | m_CookieSize: 10 156 | m_Shadows: 157 | m_Type: 2 158 | m_Resolution: -1 159 | m_CustomResolution: -1 160 | m_Strength: 1 161 | m_Bias: 0.05 162 | m_NormalBias: 0.4 163 | m_NearPlane: 0.2 164 | m_CullingMatrixOverride: 165 | e00: 1 166 | e01: 0 167 | e02: 0 168 | e03: 0 169 | e10: 0 170 | e11: 1 171 | e12: 0 172 | e13: 0 173 | e20: 0 174 | e21: 0 175 | e22: 1 176 | e23: 0 177 | e30: 0 178 | e31: 0 179 | e32: 0 180 | e33: 1 181 | m_UseCullingMatrixOverride: 0 182 | m_Cookie: {fileID: 0} 183 | m_DrawHalo: 0 184 | m_Flare: {fileID: 0} 185 | m_RenderMode: 0 186 | m_CullingMask: 187 | serializedVersion: 2 188 | m_Bits: 4294967295 189 | m_RenderingLayerMask: 1 190 | m_Lightmapping: 4 191 | m_LightShadowCasterMode: 0 192 | m_AreaSize: {x: 1, y: 1} 193 | m_BounceIntensity: 1 194 | m_ColorTemperature: 6570 195 | m_UseColorTemperature: 0 196 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 197 | m_UseBoundingSphereOverride: 0 198 | m_UseViewFrustumForShadowCasterCull: 1 199 | m_ShadowRadius: 0 200 | m_ShadowAngle: 0 201 | --- !u!4 &192023290 202 | Transform: 203 | m_ObjectHideFlags: 0 204 | m_CorrespondingSourceObject: {fileID: 0} 205 | m_PrefabInstance: {fileID: 0} 206 | m_PrefabAsset: {fileID: 0} 207 | m_GameObject: {fileID: 192023288} 208 | serializedVersion: 2 209 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 210 | m_LocalPosition: {x: 0, y: 3, z: 0} 211 | m_LocalScale: {x: 1, y: 1, z: 1} 212 | m_ConstrainProportionsScale: 0 213 | m_Children: [] 214 | m_Father: {fileID: 0} 215 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 216 | --- !u!114 &192023291 217 | MonoBehaviour: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | m_GameObject: {fileID: 192023288} 223 | m_Enabled: 1 224 | m_EditorHideFlags: 0 225 | m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} 226 | m_Name: 227 | m_EditorClassIdentifier: 228 | m_Version: 3 229 | m_UsePipelineSettings: 1 230 | m_AdditionalLightsShadowResolutionTier: 2 231 | m_LightLayerMask: 1 232 | m_RenderingLayers: 1 233 | m_CustomShadowLayers: 0 234 | m_ShadowLayerMask: 1 235 | m_ShadowRenderingLayers: 1 236 | m_LightCookieSize: {x: 1, y: 1} 237 | m_LightCookieOffset: {x: 0, y: 0} 238 | m_SoftShadowQuality: 0 239 | --- !u!1 &1060282767 240 | GameObject: 241 | m_ObjectHideFlags: 0 242 | m_CorrespondingSourceObject: {fileID: 0} 243 | m_PrefabInstance: {fileID: 0} 244 | m_PrefabAsset: {fileID: 0} 245 | serializedVersion: 6 246 | m_Component: 247 | - component: {fileID: 1060282770} 248 | - component: {fileID: 1060282769} 249 | - component: {fileID: 1060282768} 250 | m_Layer: 0 251 | m_Name: Main Camera 252 | m_TagString: MainCamera 253 | m_Icon: {fileID: 0} 254 | m_NavMeshLayer: 0 255 | m_StaticEditorFlags: 0 256 | m_IsActive: 1 257 | --- !u!81 &1060282768 258 | AudioListener: 259 | m_ObjectHideFlags: 0 260 | m_CorrespondingSourceObject: {fileID: 0} 261 | m_PrefabInstance: {fileID: 0} 262 | m_PrefabAsset: {fileID: 0} 263 | m_GameObject: {fileID: 1060282767} 264 | m_Enabled: 1 265 | --- !u!20 &1060282769 266 | Camera: 267 | m_ObjectHideFlags: 0 268 | m_CorrespondingSourceObject: {fileID: 0} 269 | m_PrefabInstance: {fileID: 0} 270 | m_PrefabAsset: {fileID: 0} 271 | m_GameObject: {fileID: 1060282767} 272 | m_Enabled: 1 273 | serializedVersion: 2 274 | m_ClearFlags: 1 275 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 276 | m_projectionMatrixMode: 1 277 | m_GateFitMode: 2 278 | m_FOVAxisMode: 0 279 | m_Iso: 200 280 | m_ShutterSpeed: 0.005 281 | m_Aperture: 16 282 | m_FocusDistance: 10 283 | m_FocalLength: 50 284 | m_BladeCount: 5 285 | m_Curvature: {x: 2, y: 11} 286 | m_BarrelClipping: 0.25 287 | m_Anamorphism: 0 288 | m_SensorSize: {x: 36, y: 24} 289 | m_LensShift: {x: 0, y: 0} 290 | m_NormalizedViewPortRect: 291 | serializedVersion: 2 292 | x: 0 293 | y: 0 294 | width: 1 295 | height: 1 296 | near clip plane: 0.3 297 | far clip plane: 1000 298 | field of view: 60 299 | orthographic: 0 300 | orthographic size: 5 301 | m_Depth: -1 302 | m_CullingMask: 303 | serializedVersion: 2 304 | m_Bits: 4294967295 305 | m_RenderingPath: -1 306 | m_TargetTexture: {fileID: 0} 307 | m_TargetDisplay: 0 308 | m_TargetEye: 3 309 | m_HDR: 1 310 | m_AllowMSAA: 1 311 | m_AllowDynamicResolution: 0 312 | m_ForceIntoRT: 0 313 | m_OcclusionCulling: 1 314 | m_StereoConvergence: 10 315 | m_StereoSeparation: 0.022 316 | --- !u!4 &1060282770 317 | Transform: 318 | m_ObjectHideFlags: 0 319 | m_CorrespondingSourceObject: {fileID: 0} 320 | m_PrefabInstance: {fileID: 0} 321 | m_PrefabAsset: {fileID: 0} 322 | m_GameObject: {fileID: 1060282767} 323 | serializedVersion: 2 324 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 325 | m_LocalPosition: {x: 0, y: 1, z: -10} 326 | m_LocalScale: {x: 1, y: 1, z: 1} 327 | m_ConstrainProportionsScale: 0 328 | m_Children: [] 329 | m_Father: {fileID: 0} 330 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 331 | --- !u!1 &1294328852 332 | GameObject: 333 | m_ObjectHideFlags: 0 334 | m_CorrespondingSourceObject: {fileID: 0} 335 | m_PrefabInstance: {fileID: 0} 336 | m_PrefabAsset: {fileID: 0} 337 | serializedVersion: 6 338 | m_Component: 339 | - component: {fileID: 1294328854} 340 | - component: {fileID: 1294328853} 341 | m_Layer: 0 342 | m_Name: compute shader test 343 | m_TagString: Untagged 344 | m_Icon: {fileID: 0} 345 | m_NavMeshLayer: 0 346 | m_StaticEditorFlags: 0 347 | m_IsActive: 1 348 | --- !u!114 &1294328853 349 | MonoBehaviour: 350 | m_ObjectHideFlags: 0 351 | m_CorrespondingSourceObject: {fileID: 0} 352 | m_PrefabInstance: {fileID: 0} 353 | m_PrefabAsset: {fileID: 0} 354 | m_GameObject: {fileID: 1294328852} 355 | m_Enabled: 1 356 | m_EditorHideFlags: 0 357 | m_Script: {fileID: 11500000, guid: b28c249f19994bee975b2bc32b34b6d8, type: 3} 358 | m_Name: 359 | m_EditorClassIdentifier: 360 | boidsCount: 1000000 361 | boidsComputeShader: {fileID: 7200000, guid: 13dcc01f0e3b4a4eba0ede6338237876, type: 3} 362 | --- !u!4 &1294328854 363 | Transform: 364 | m_ObjectHideFlags: 0 365 | m_CorrespondingSourceObject: {fileID: 0} 366 | m_PrefabInstance: {fileID: 0} 367 | m_PrefabAsset: {fileID: 0} 368 | m_GameObject: {fileID: 1294328852} 369 | serializedVersion: 2 370 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 371 | m_LocalPosition: {x: -28.972738, y: -6.668195, z: 24.090101} 372 | m_LocalScale: {x: 1, y: 1, z: 1} 373 | m_ConstrainProportionsScale: 0 374 | m_Children: [] 375 | m_Father: {fileID: 0} 376 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 377 | --- !u!1660057539 &9223372036854775807 378 | SceneRoots: 379 | m_ObjectHideFlags: 0 380 | m_Roots: 381 | - {fileID: 1060282770} 382 | - {fileID: 192023290} 383 | - {fileID: 1294328854} 384 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scenes/Test.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7eccb638e40564d4f86b6ebae40b98e9 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 16211efb1802bbb4390e1086668fdb52 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 451e535f291f2f44786c7c27111ff231 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation/BoidsBehaviour.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace BoidsComputeShaderSandbox.MinimalInvestigation 4 | { 5 | public class BoidsBehaviour : MonoBehaviour 6 | { 7 | private BoidsCore _boidsCore; 8 | 9 | [SerializeField] 10 | private GameObject boidPrefab; 11 | 12 | private Transform[] _boidsTransforms; 13 | 14 | [Space, Header("Boids Info")] 15 | [SerializeField] 16 | private int boidsCount = 50; 17 | 18 | [SerializeField] 19 | private float insightRange = 3f; 20 | 21 | [SerializeField] 22 | private float maxVelocity = 0.1f; 23 | 24 | [SerializeField] 25 | private float maxAcceleration = 0.1f; 26 | 27 | [SerializeField] 28 | private Vector3 boundarySize; 29 | 30 | [SerializeField] 31 | private float timeScale = 1f; 32 | 33 | [SerializeField] 34 | private float fleeThreshold = 1f; 35 | 36 | [Space, Header("Force Weights")] 37 | [SerializeField] 38 | private float alignWeight = 1f; 39 | 40 | [SerializeField] 41 | private float separationWeight = 1f; 42 | 43 | [SerializeField] 44 | private float cohesionWeight = 1f; 45 | 46 | private void Start() 47 | { 48 | if (boidPrefab == null) 49 | { 50 | Debug.LogError("boid prefab is null"); 51 | return; 52 | } 53 | 54 | _boidsCore = new BoidsCore(new BoidsOptions 55 | { 56 | Count = boidsCount, 57 | InitPositionRange = boundarySize, 58 | InitMaxAcceleration = maxAcceleration, 59 | InitMaxVelocity = maxVelocity, 60 | }); 61 | 62 | _boidsTransforms = new Transform[_boidsCore.Count]; 63 | for (var i = 0; i < _boidsCore.Count; i++) 64 | { 65 | _boidsTransforms[i] = Instantiate(boidPrefab, gameObject.transform).transform; 66 | } 67 | } 68 | 69 | private void Update() 70 | { 71 | if (_boidsTransforms == null) 72 | { 73 | Debug.LogError("boids is null!"); 74 | return; 75 | } 76 | 77 | var updateParams = new UpdateParams 78 | { 79 | AlignWeight = alignWeight, 80 | SeparationWeight = separationWeight, 81 | CohesionWeight = cohesionWeight, 82 | FleeThreshold = fleeThreshold, 83 | InsightRange = insightRange, 84 | MaxAcceleration = maxAcceleration, 85 | MaxVelocity = maxVelocity, 86 | BoundarySize = boundarySize 87 | }; 88 | 89 | _boidsCore.Update(Time.deltaTime * timeScale, updateParams); 90 | for (var i = 0; i < _boidsCore.Count; i++) 91 | { 92 | _boidsTransforms[i].transform.position = _boidsCore.Boids[i].Position; 93 | _boidsTransforms[i].transform.rotation = Quaternion.LookRotation(_boidsCore.Boids[i].Velocity); 94 | } 95 | } 96 | 97 | private void OnDrawGizmos() 98 | { 99 | Gizmos.DrawWireCube(Vector3.zero, boundarySize * 2); 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation/BoidsBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c87b018669b41f1b7c6d8b35dfde564 3 | timeCreated: 1708246238 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation/BoidsCore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using BoidsComputeShaderSandbox.Types; 3 | using UnityEngine; 4 | using Random = UnityEngine.Random; 5 | 6 | namespace BoidsComputeShaderSandbox.MinimalInvestigation 7 | { 8 | public struct BoidsOptions 9 | { 10 | public int Count { get; set; } 11 | public Vector3 InitPositionRange { get; set; } 12 | public float InitMaxVelocity { get; set; } 13 | public float InitMaxAcceleration { get; set; } 14 | 15 | public void Deconstruct( 16 | out int count, 17 | out Vector3 positionRange, 18 | out float maxVelocity, 19 | out float maxAcceleration 20 | ) 21 | { 22 | count = Count; 23 | positionRange = InitPositionRange; 24 | maxVelocity = InitMaxVelocity; 25 | maxAcceleration = InitMaxAcceleration; 26 | } 27 | } 28 | 29 | public struct UpdateParams 30 | { 31 | public float AlignWeight { get; set; } 32 | public float SeparationWeight { get; set; } 33 | public float CohesionWeight { get; set; } 34 | public Vector3 BoundarySize { get; set; } 35 | public float MaxVelocity { get; set; } 36 | public float MaxAcceleration { get; set; } 37 | public float InsightRange { get; set; } 38 | public float FleeThreshold { get; set; } 39 | 40 | public void Deconstruct( 41 | out float alignWeight, 42 | out float separationWeight, 43 | out float cohesionWeight, 44 | out Vector3 boundarySize, 45 | out float maxVelocity, 46 | out float maxAcceleration, 47 | out float insightRange, 48 | out float fleeThreshold 49 | ) 50 | { 51 | alignWeight = AlignWeight; 52 | separationWeight = SeparationWeight; 53 | cohesionWeight = CohesionWeight; 54 | boundarySize = BoundarySize; 55 | maxVelocity = MaxVelocity; 56 | maxAcceleration = MaxAcceleration; 57 | insightRange = InsightRange; 58 | fleeThreshold = FleeThreshold; 59 | } 60 | } 61 | 62 | public class BoidsCore 63 | { 64 | public BoidsData[] Boids { get; } 65 | public int Count { get; } 66 | 67 | public BoidsCore(BoidsOptions options) 68 | { 69 | var (count, initPositionRange, maxVelocity, _) = options; 70 | Count = count; 71 | 72 | Boids = new BoidsData[Count]; 73 | 74 | for (var i = 0; i < Count; i++) 75 | { 76 | var maxVelocity3 = new Vector3(maxVelocity, maxVelocity, maxVelocity); 77 | Boids[i] = new BoidsData 78 | { 79 | Position = RandomVector3(-initPositionRange, initPositionRange), 80 | Velocity = RandomVector3(-maxVelocity3, maxVelocity3) 81 | }; 82 | } 83 | } 84 | 85 | public void Update(float deltaTime, UpdateParams updateParams) 86 | { 87 | var ( 88 | _, _, _, 89 | boundarySize, 90 | maxVelocity, 91 | maxAcceleration, 92 | _, _ 93 | ) = updateParams; 94 | var accelerations = new Vector3[Count]; 95 | 96 | for (var i = 0; i < Count; i++) 97 | { 98 | accelerations[i] = 99 | CalcIndividualForce(Boids.AsSpan(), i, updateParams); 100 | } 101 | 102 | for (var i = 0; i < Count; i++) 103 | { 104 | accelerations[i] = LimitVector(accelerations[i], maxAcceleration); 105 | 106 | var vel = Boids[i].Velocity + accelerations[i] * deltaTime; 107 | vel = LimitVector(vel, maxVelocity); 108 | 109 | var pos = Boids[i].Position + vel * deltaTime; 110 | 111 | var boidsData = new BoidsData(pos, vel); 112 | Boids[i] = BorderTreatment(boidsData, boundarySize); 113 | } 114 | } 115 | 116 | /// 117 | /// 個別のboidに対してシミュレーションの更新を行い 118 | /// 次のフレームの加速度を出力する関数 119 | /// 120 | /// Boids全体 121 | /// 計算対象のboidsのindex 122 | /// Updateパラメータ 123 | /// 124 | private static Vector3 CalcIndividualForce( 125 | ReadOnlySpan boids, 126 | int index, 127 | UpdateParams updateParams 128 | ) 129 | { 130 | var ( 131 | alignWeight, 132 | separationWeight, 133 | cohesionWeight, 134 | _, _, _, 135 | insightRange, 136 | fleeThreshold 137 | ) = updateParams; 138 | 139 | var alignForce = AlignForce(boids, insightRange, index); 140 | var separationForce = SeparationForce(boids, insightRange, index, fleeThreshold); 141 | var cohesionForce = CohesionForce(boids, insightRange, index); 142 | 143 | return 144 | alignForce * alignWeight 145 | + separationForce * separationWeight 146 | + cohesionForce * cohesionWeight; 147 | } 148 | 149 | /// 150 | /// 整列。影響範囲の平均速度ベクトルへの自分の速度ベクトルへの差分を算出する 151 | /// 152 | /// Boids全体 153 | /// 影響範囲の半径 154 | /// 対象のBoidsのインデックス 155 | /// 整列処理によって算出されたaccの差分 156 | private static Vector3 AlignForce( 157 | ReadOnlySpan boids, 158 | float range, 159 | int index 160 | ) 161 | { 162 | var sumOfVelocities = Vector3.zero; 163 | var insightCount = 0; 164 | for (var i = 0; i < boids.Length; i++) 165 | { 166 | if (i == index || !WithinRange(boids[index], boids[i], range)) 167 | { 168 | continue; 169 | } 170 | 171 | sumOfVelocities += boids[i].Velocity; 172 | insightCount++; 173 | } 174 | 175 | if (insightCount == 0) 176 | { 177 | return Vector3.zero; 178 | } 179 | 180 | var averageVelocity = sumOfVelocities / insightCount; 181 | return averageVelocity - boids[index].Velocity; 182 | } 183 | 184 | /// 185 | /// 分離。 186 | /// 範囲内の中のさらに分離閾値内にあるboidに対して 187 | /// 回避するような加速度を算出する。 188 | /// 189 | /// Boids全体 190 | /// 影響範囲の半径 191 | /// 計算対象のBoidsのインデックス 192 | /// 分離が行われる近さの閾値 193 | /// 194 | private static Vector3 SeparationForce( 195 | ReadOnlySpan boids, 196 | float range, 197 | int index, 198 | float separationThreshold 199 | ) 200 | { 201 | var fleeForce = Vector3.zero; 202 | for (var i = 0; i < boids.Length; i++) 203 | { 204 | if (i == index || !WithinRange(boids[index], boids[i], range)) 205 | { 206 | continue; 207 | } 208 | 209 | var dirPosition = boids[i].Position - boids[index].Position; 210 | var distance = dirPosition.sqrMagnitude; 211 | if (distance >= separationThreshold * separationThreshold) 212 | { 213 | continue; 214 | } 215 | 216 | fleeForce += -(dirPosition - boids[index].Velocity); 217 | } 218 | 219 | return fleeForce; 220 | } 221 | 222 | /// 223 | /// 結合。 224 | /// 範囲内の平均Positionに対して近づいていくような 225 | /// 加速度を算出する。 226 | /// 227 | /// Boids全体 228 | /// 影響範囲の半径 229 | /// 計算対象のBoidsのインデックス 230 | /// 231 | private static Vector3 CohesionForce( 232 | ReadOnlySpan boids, 233 | float range, 234 | int index 235 | ) 236 | { 237 | var positionSum = Vector3.zero; 238 | var sumCount = 0; 239 | for (var i = 0; i < boids.Length; i++) 240 | { 241 | if (i == index || !WithinRange(boids[index], boids[i], range)) 242 | { 243 | continue; 244 | } 245 | 246 | positionSum += boids[i].Position; 247 | sumCount++; 248 | } 249 | 250 | if (sumCount == 0) 251 | { 252 | return Vector3.zero; 253 | } 254 | 255 | var averagePosition = positionSum / sumCount; 256 | var dirPosition = averagePosition - boids[index].Position; 257 | var seekForce = dirPosition - boids[index].Velocity; 258 | 259 | return seekForce; 260 | } 261 | 262 | private static BoidsData BorderTreatment(BoidsData boids, Vector3 boundary) 263 | { 264 | var (pos, vel) = boids; 265 | 266 | if (pos.x > boundary.x) 267 | { 268 | pos = WithX(pos, boundary.x); 269 | vel = WithX(vel, -vel.x); 270 | } 271 | else if (pos.x < -boundary.x) 272 | { 273 | pos = WithX(pos, -boundary.x); 274 | vel = WithX(vel, -vel.x); 275 | } 276 | 277 | if (pos.y > boundary.y) 278 | { 279 | pos = WithY(pos, boundary.y); 280 | vel = WithY(vel, -vel.y); 281 | } 282 | else if (pos.y < -boundary.y) 283 | { 284 | pos = WithY(pos, -boundary.y); 285 | vel = WithY(vel, -vel.y); 286 | } 287 | 288 | if (pos.z > boundary.z) 289 | { 290 | pos = WithZ(pos, boundary.z); 291 | vel = WithZ(vel, -vel.z); 292 | } 293 | else if (pos.z < -boundary.z) 294 | { 295 | pos = WithZ(pos, -boundary.z); 296 | vel = WithZ(vel, -vel.z); 297 | } 298 | 299 | return new BoidsData(pos, vel); 300 | } 301 | 302 | private static Vector3 WithX(Vector3 vec, float x) 303 | => new(x, vec.y, vec.z); 304 | 305 | private static Vector3 WithY(Vector3 vec, float y) 306 | => new(vec.x, y, vec.z); 307 | 308 | private static Vector3 WithZ(Vector3 vec, float z) 309 | => new(vec.x, vec.y, z); 310 | 311 | 312 | /// 313 | /// 対象のベクトルの指定範囲内に 314 | /// ベクトルが入っているかの判定 315 | /// 316 | /// 対象のベクトル 317 | /// 検査対象のベクトル 318 | /// 指定範囲 319 | /// 判定結果 320 | private static bool WithinRange(Vector3 self, Vector3 target, float range) 321 | => (target - self).sqrMagnitude <= range * range; 322 | 323 | private static bool WithinRange(BoidsData self, BoidsData target, float range) 324 | => WithinRange(self.Position, target.Position, range); 325 | 326 | /// 327 | /// ベクトル長がmaxLengthを超えてたら 328 | /// 長さをmaxLengthに抑える関数 329 | /// 330 | /// 処理対象のベクトル 331 | /// 最大長 332 | /// cropされたベクトル 333 | private static Vector3 LimitVector(Vector3 target, float maxLength) 334 | => target.sqrMagnitude <= maxLength * maxLength 335 | ? target 336 | : target * (maxLength / target.sqrMagnitude); 337 | 338 | /// 339 | /// 範囲内の直方体の中で一様にランダムなベクトルを生成する 340 | /// 341 | /// 342 | /// 343 | /// 344 | private static Vector3 RandomVector3(Vector3 min, Vector3 max) 345 | => new( 346 | Random.Range(min.x, max.x), 347 | Random.Range(min.y, max.y), 348 | Random.Range(min.z, max.z) 349 | ); 350 | } 351 | } -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation/BoidsCore.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0973963d3124a10b74e028733a6089b 3 | timeCreated: 1708104071 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation/ComputeShaderInvest.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.InteropServices; 3 | using BoidsComputeShaderSandbox.Types; 4 | using Unity.Collections; 5 | using UnityEngine; 6 | 7 | namespace BoidsComputeShaderSandbox.MinimalInvestigation 8 | { 9 | public class ComputeShaderInvest : MonoBehaviour 10 | { 11 | [SerializeField] 12 | private int boidsCount; 13 | 14 | [SerializeField] 15 | private ComputeShader boidsComputeShader; 16 | 17 | private static readonly int FillVec = Shader.PropertyToID("fillVec"); 18 | private static readonly int BoidsDataId = Shader.PropertyToID("boidsData"); 19 | 20 | private void Start() 21 | { 22 | if (boidsComputeShader == null || boidsCount <= 0) 23 | { 24 | return; 25 | } 26 | 27 | if (!boidsComputeShader.HasKernel("CSMain")) 28 | { 29 | return; 30 | } 31 | 32 | using var boidsArray = new NativeArray(boidsCount, Allocator.Temp); 33 | using var boidsBuffer = 34 | new ComputeBuffer(boidsCount, Marshal.SizeOf(), ComputeBufferType.Structured); 35 | boidsBuffer.SetData(boidsArray); 36 | 37 | var kernel = boidsComputeShader.FindKernel("CSMain"); 38 | 39 | boidsComputeShader.SetVector(FillVec, new Vector3(1, 2, 3)); 40 | boidsComputeShader.SetBuffer(kernel, BoidsDataId, boidsBuffer); 41 | 42 | boidsComputeShader.GetKernelThreadGroupSizes(kernel, out var x, out _, out _); 43 | boidsComputeShader.Dispatch(kernel, boidsCount / (int)x, 1, 1); 44 | 45 | var result = new BoidsData[boidsBuffer.count]; 46 | boidsBuffer.GetData(result); 47 | 48 | Debug.Log("test"); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/MinimalInvestigation/ComputeShaderInvest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b28c249f19994bee975b2bc32b34b6d8 3 | timeCreated: 1709993139 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/Types.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6741d23f818b483a81b390e5a09754cb 3 | timeCreated: 1708442299 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/Types/BoidsData.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.VFX; 3 | 4 | namespace BoidsComputeShaderSandbox.Types 5 | { 6 | [VFXType(VFXTypeAttribute.Usage.GraphicsBuffer, "BoidsData")] 7 | public struct BoidsData 8 | { 9 | public Vector3 Position; 10 | public Vector3 Velocity; 11 | 12 | public BoidsData(Vector3 position, Vector3 velocity) 13 | { 14 | Position = position; 15 | Velocity = velocity; 16 | } 17 | 18 | public void Deconstruct( 19 | out Vector3 position, 20 | out Vector3 velocity 21 | ) 22 | { 23 | position = Position; 24 | velocity = Velocity; 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/Types/BoidsData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05490d49842f4b22847b29c88a68b7d3 3 | timeCreated: 1708442300 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/VFX.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b411ed64b9184afaa9c23c2ad4bd0bce 3 | timeCreated: 1708679214 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/VFX/BoidsBinder.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | using BoidsComputeShaderSandbox.Types; 3 | using Unity.Collections; 4 | using UnityEngine; 5 | using UnityEngine.VFX; 6 | using UnityEngine.VFX.Utility; 7 | using Random = UnityEngine.Random; 8 | 9 | namespace BoidsComputeShaderSandbox.VFX 10 | { 11 | [VFXBinder("Custom/Boids")] 12 | public class BoidsBinder : VFXBinderBase 13 | { 14 | [VFXPropertyBinding("UnityEngine.GraphicsBuffer")] 15 | public ExposedProperty boidsBufferProperty; 16 | 17 | [VFXPropertyBinding("System.Int32")] 18 | public ExposedProperty boidsCountProperty; 19 | 20 | [Header("Init Info")] 21 | [SerializeField] 22 | private ComputeShader boidsComputeShader; 23 | 24 | [SerializeField] 25 | private int boidsCount; 26 | 27 | [Space, Header("Update Info")] 28 | [SerializeField] 29 | private float insightRange = 3f; 30 | 31 | [SerializeField] 32 | private float maxVelocity = 0.1f; 33 | 34 | [SerializeField] 35 | private float maxAcceleration = 0.1f; 36 | 37 | [SerializeField] 38 | private Vector3 boundarySize; 39 | 40 | [SerializeField] 41 | private float timeScale = 1f; 42 | 43 | [SerializeField] 44 | private float fleeThreshold = 1f; 45 | 46 | [Space, Header("Force Weights")] 47 | [SerializeField] 48 | private float alignWeight = 1f; 49 | 50 | [SerializeField] 51 | private float separationWeight = 1f; 52 | 53 | [SerializeField] 54 | private float cohesionWeight = 1f; 55 | 56 | [SerializeField] 57 | private float wallForceWight = 1f; 58 | 59 | [SerializeField] 60 | private float wallDistanceWeight = 1f; 61 | 62 | private GraphicsBuffer _boidsGraphicsBuffer; 63 | private int? _csMainKernel; 64 | 65 | private static readonly int Data = Shader.PropertyToID("boidsData"); 66 | 67 | private static readonly int BoidsCount = Shader.PropertyToID("boidsCount"); 68 | private static readonly int EffectRange = Shader.PropertyToID("effectRange"); 69 | private static readonly int MaxVelocity = Shader.PropertyToID("maxVelocity"); 70 | private static readonly int MaxAcceleration = Shader.PropertyToID("maxAcceleration"); 71 | private static readonly int Boundary = Shader.PropertyToID("boundary"); 72 | private static readonly int DeltaTime = Shader.PropertyToID("deltaTime"); 73 | 74 | private static readonly int FleeThreshold = Shader.PropertyToID("fleeThreshold"); 75 | private static readonly int AlignWeight = Shader.PropertyToID("alignWeight"); 76 | private static readonly int SeparationWeight = Shader.PropertyToID("separationWeight"); 77 | private static readonly int CohesionWeight = Shader.PropertyToID("cohesionWeight"); 78 | private static readonly int WallForceWeight = Shader.PropertyToID("wallForceWeight"); 79 | private static readonly int WallDistanceWeight = Shader.PropertyToID("wallDistanceWeight"); 80 | 81 | protected override void OnEnable() 82 | { 83 | base.OnEnable(); 84 | 85 | Vector3 RandomVector3(Vector3 min, Vector3 max) => new( 86 | Random.Range(min.x, max.x), 87 | Random.Range(min.y, max.y), 88 | Random.Range(min.z, max.z) 89 | ); 90 | 91 | Vector3 CreateVector3(float val) => new(val, val, val); 92 | 93 | var boidsDataArray = new NativeArray(boidsCount, Allocator.Temp); 94 | for (var i = 0; i < boidsCount; i++) 95 | { 96 | boidsDataArray[i] = new BoidsData 97 | { 98 | Velocity = RandomVector3(CreateVector3(-maxVelocity), CreateVector3(maxVelocity)), 99 | Position = RandomVector3(-boundarySize, boundarySize) 100 | }; 101 | } 102 | 103 | _boidsGraphicsBuffer = 104 | new GraphicsBuffer(GraphicsBuffer.Target.Structured, boidsCount, Marshal.SizeOf()); 105 | _boidsGraphicsBuffer.SetData(boidsDataArray); 106 | 107 | _csMainKernel = boidsComputeShader.FindKernel("CSMain"); 108 | 109 | boidsComputeShader.SetInt(BoidsCount, boidsCount); 110 | boidsComputeShader.SetBuffer(_csMainKernel.Value, Data, _boidsGraphicsBuffer); 111 | 112 | boidsDataArray.Dispose(); 113 | } 114 | 115 | protected override void OnDisable() 116 | { 117 | base.OnDisable(); 118 | 119 | _boidsGraphicsBuffer?.Release(); 120 | _boidsGraphicsBuffer?.Dispose(); 121 | _boidsGraphicsBuffer = null; 122 | } 123 | 124 | public override bool IsValid(VisualEffect component) 125 | { 126 | var isCountValid = boidsCount > 0; 127 | var isPropertyExist = component.HasGraphicsBuffer(boidsBufferProperty) 128 | && component.HasInt(boidsCountProperty); 129 | var isComputeShaderValid = boidsComputeShader != null 130 | && boidsComputeShader.HasKernel("CSMain"); 131 | 132 | if (_csMainKernel == null) 133 | { 134 | return false; 135 | } 136 | 137 | boidsComputeShader.GetKernelThreadGroupSizes(_csMainKernel.Value, out var x, out _, out _); 138 | var isBoidsCountCanDivideWithNumThreads = boidsCount % x == 0; 139 | 140 | return isCountValid 141 | && isPropertyExist 142 | && isComputeShaderValid 143 | && isBoidsCountCanDivideWithNumThreads 144 | ; 145 | } 146 | 147 | public override void UpdateBinding(VisualEffect component) 148 | { 149 | component.SetInt(boidsCountProperty, boidsCount); 150 | 151 | if (_boidsGraphicsBuffer == null || _csMainKernel == null) 152 | { 153 | return; 154 | } 155 | 156 | boidsComputeShader.SetFloat(EffectRange, insightRange); 157 | boidsComputeShader.SetFloat(MaxVelocity, maxVelocity); 158 | boidsComputeShader.SetFloat(MaxAcceleration, maxAcceleration); 159 | boidsComputeShader.SetVector(Boundary, boundarySize); 160 | boidsComputeShader.SetFloat(DeltaTime, Time.deltaTime * timeScale); 161 | boidsComputeShader.SetFloat(FleeThreshold, fleeThreshold); 162 | boidsComputeShader.SetFloat(AlignWeight, alignWeight); 163 | boidsComputeShader.SetFloat(SeparationWeight, separationWeight); 164 | boidsComputeShader.SetFloat(CohesionWeight, cohesionWeight); 165 | boidsComputeShader.SetFloat(WallForceWeight, wallForceWight); 166 | boidsComputeShader.SetFloat(WallDistanceWeight, wallDistanceWeight); 167 | 168 | boidsComputeShader.GetKernelThreadGroupSizes(_csMainKernel.Value, out var x, out _, out _); 169 | boidsComputeShader.Dispatch(_csMainKernel.Value, boidsCount / (int)x, 1, 1); 170 | 171 | component.SetGraphicsBuffer(boidsBufferProperty, _boidsGraphicsBuffer); 172 | } 173 | 174 | private void OnDrawGizmos() 175 | { 176 | Gizmos.DrawWireCube(Vector3.zero, boundarySize * 2); 177 | } 178 | } 179 | } -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Scripts/VFX/BoidsBinder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 70dbf01cb96b474587da2644ff4bcc77 3 | timeCreated: 1708679214 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a8192c2fb0ff4ebb9b5735361302bfc1 3 | timeCreated: 1709925065 -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Shaders/Boids.compute: -------------------------------------------------------------------------------- 1 | #pragma kernel CSMain 2 | 3 | struct BoidsData 4 | { 5 | float3 position; 6 | float3 velocity; 7 | }; 8 | 9 | int boidsCount; 10 | 11 | float effectRange; 12 | float maxVelocity; 13 | float maxAcceleration; 14 | float3 boundary; 15 | float deltaTime; 16 | 17 | float fleeThreshold; 18 | float alignWeight; 19 | float separationWeight; 20 | float cohesionWeight; 21 | float wallForceWeight; 22 | float wallDistanceWeight; 23 | 24 | RWStructuredBuffer boidsData; 25 | 26 | const float3 ZeroVector3 = float3(0, 0, 0); 27 | 28 | /// \brief Boid同士が範囲にあるかを判定する関数 29 | /// \param self 基準となるBoid 30 | /// \param other 判定対象のBoid 31 | /// \param range 範囲 32 | /// \return 範囲内かどうかのbool 33 | bool WithinRange(const BoidsData self, const BoidsData other, const float range) 34 | { 35 | const float3 dir = other.position - self.position; 36 | return dot(dir, dir) < range * range; 37 | } 38 | 39 | /// \brief ベクトル長を特定の長さに制限する関数 40 | /// \param vec 3次元ベクトル 41 | /// \param length 制限する長さ 42 | /// \return 制限処理を行った後のベクトル。長さが0であればそのまま返す 43 | float3 LimitVector(const float3 vec, const float length) 44 | { 45 | return dot(vec, vec) == 0 ? vec : normalize(vec) * length; 46 | } 47 | 48 | /// \brief 整列処理によって周りのBoidと速度を合わせるような加速度を計算 49 | /// \param index 計算対象のindex 50 | /// \return Align処理で計算された加速度 51 | float3 AlignForce(const int index) 52 | { 53 | const BoidsData self = boidsData[index]; 54 | 55 | float3 sumVelocity = ZeroVector3; 56 | int count = 0; 57 | 58 | for (int i = 0; i < boidsCount; i++) 59 | { 60 | const bool shouldCompute = i != index && WithinRange(self, boidsData[i], effectRange); 61 | if (!shouldCompute) 62 | { 63 | continue; 64 | } 65 | 66 | sumVelocity += boidsData[i].velocity; 67 | count++; 68 | } 69 | 70 | if (count == 0) 71 | { 72 | return ZeroVector3; 73 | } 74 | 75 | const float3 avgVelocity = sumVelocity / count; 76 | return avgVelocity - self.velocity; 77 | } 78 | 79 | /// \brief 分離処理。周りのboidが近すぎた場合に回避するような加速度を計算 80 | /// \param index 計算対象のindex 81 | /// \return 分離処理を行った際の計算された加速度 82 | float3 SeparationForce(const int index) 83 | { 84 | const BoidsData self = boidsData[index]; 85 | 86 | float3 fleeForce = ZeroVector3; 87 | for (int i = 0; i < boidsCount; i++) 88 | { 89 | const BoidsData other = boidsData[i]; 90 | const bool shouldCompute = i != index && WithinRange(self, other, effectRange); 91 | if (!shouldCompute) 92 | { 93 | continue; 94 | } 95 | 96 | const float3 dirPosition = other.position - self.position; 97 | if (dot(dirPosition, dirPosition) >= fleeThreshold * fleeThreshold) 98 | { 99 | continue; 100 | } 101 | fleeForce += -(dirPosition - self.velocity); 102 | } 103 | 104 | return fleeForce; 105 | } 106 | 107 | /// \brief 結合処理。周りのboidに近づくような加速度を計算 108 | /// \param index 計算対象のboidsのindex 109 | /// \return 加速度 110 | float3 CohesionForce(const int index) 111 | { 112 | const BoidsData self = boidsData[index]; 113 | 114 | float3 sumPosition = ZeroVector3; 115 | int count = 0; 116 | 117 | for (int i = 0; i < boidsCount; i++) 118 | { 119 | const BoidsData other = boidsData[i]; 120 | const bool shouldCompute = i != index && WithinRange(self, other, effectRange); 121 | if (!shouldCompute) 122 | { 123 | continue; 124 | } 125 | 126 | sumPosition += other.position; 127 | count++; 128 | } 129 | 130 | if (count == 0) 131 | { 132 | return ZeroVector3; 133 | } 134 | 135 | const float3 avgPosition = sumPosition / count; 136 | const float3 dirPosition = avgPosition - self.position; 137 | const float3 seekForce = dirPosition - self.velocity; 138 | 139 | return seekForce; 140 | } 141 | 142 | /// \brief 境界処理 143 | /// \param boid boid 144 | /// \param boundary 境界 145 | /// \return 境界処理を行ったboid 146 | BoidsData BorderTreatment(const BoidsData boid, const float3 boundary) 147 | { 148 | float3 pos = boid.position; 149 | float3 vel = boid.velocity; 150 | 151 | if (pos.x > boundary.x) 152 | { 153 | pos.x = boundary.x; 154 | vel.x = -vel.x; 155 | } 156 | else if (pos.x < -boundary.x) 157 | { 158 | pos.x = -boundary.x; 159 | vel.x = -vel.x; 160 | } 161 | 162 | if (pos.y > boundary.y) 163 | { 164 | pos.y = boundary.y; 165 | vel.y = -vel.y; 166 | } 167 | else if (pos.y < -boundary.y) 168 | { 169 | pos.y = -boundary.y; 170 | vel.y = -vel.y; 171 | } 172 | 173 | if (pos.z > boundary.z) 174 | { 175 | pos.z = boundary.z; 176 | vel.z = -vel.z; 177 | } 178 | else if (pos.z < -boundary.z) 179 | { 180 | pos.z = -boundary.z; 181 | vel.z = -vel.z; 182 | } 183 | 184 | BoidsData result; 185 | result.position = pos; 186 | result.velocity = vel; 187 | 188 | return result; 189 | } 190 | 191 | float3 WallForce(const int index, const float distanceWeight) 192 | { 193 | BoidsData boid = boidsData[index]; 194 | return 195 | float3(-1, 0, 0) / abs((boundary.x - boid.position.x) / distanceWeight) 196 | + float3(1, 0, 0) / abs((-boundary.x - boid.position.x) / distanceWeight) 197 | + float3(0, -1, 0) / abs((boundary.y - boid.position.y) / distanceWeight) 198 | + float3(0, 1, 0) / abs((-boundary.y - boid.position.y) / distanceWeight) 199 | + float3(0, 0, -1) / abs((boundary.z - boid.position.z) / distanceWeight) 200 | + float3(0, 0, 1) / abs((-boundary.z - boid.position.z) / distanceWeight); 201 | } 202 | 203 | float3 CalcIndividualForce(const float index) 204 | { 205 | const float3 align = AlignForce(index); 206 | const float3 separation = SeparationForce(index); 207 | const float3 cohesion = CohesionForce(index); 208 | 209 | return alignWeight * align 210 | + separationWeight * separation 211 | + cohesionWeight * cohesion; 212 | } 213 | 214 | [numthreads(64,1,1)] 215 | void CSMain(const uint3 id:SV_DispatchThreadID) 216 | { 217 | BoidsData boid = boidsData[id.x]; 218 | 219 | float3 force = CalcIndividualForce(id.x); 220 | force = LimitVector(force, maxAcceleration); 221 | 222 | force += wallForceWeight * WallForce(id.x, wallDistanceWeight); 223 | 224 | boid.velocity += force * deltaTime; 225 | boid.velocity = LimitVector(boid.velocity, maxVelocity); 226 | 227 | boid.position += boid.velocity * deltaTime; 228 | // boid = BorderTreatment(boid, boundary); 229 | 230 | boidsData[id.x] = boid; 231 | } 232 | -------------------------------------------------------------------------------- /Assets/BoidsComputerShaderSandbox/Shaders/Boids.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 13dcc01f0e3b4a4eba0ede6338237876 3 | timeCreated: 1709925065 -------------------------------------------------------------------------------- /Assets/DefaultVolumeProfile.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: DefaultVolumeProfile 14 | m_EditorClassIdentifier: 15 | components: [] 16 | -------------------------------------------------------------------------------- /Assets/DefaultVolumeProfile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25b8af02a08cb4540b46089a5c595bed 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9875d1dc82cd9434593129b8b737eac1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 10 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 705507994} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_EnvironmentLightingMode: 0 53 | m_EnableBakedLightmaps: 1 54 | m_EnableRealtimeLightmaps: 0 55 | m_LightmapEditorSettings: 56 | serializedVersion: 12 57 | m_Resolution: 2 58 | m_BakeResolution: 40 59 | m_AtlasSize: 1024 60 | m_AO: 0 61 | m_AOMaxDistance: 1 62 | m_CompAOExponent: 1 63 | m_CompAOExponentDirect: 0 64 | m_ExtractAmbientOcclusion: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_ReflectionCompression: 2 70 | m_MixedBakeMode: 2 71 | m_BakeBackend: 1 72 | m_PVRSampling: 1 73 | m_PVRDirectSampleCount: 32 74 | m_PVRSampleCount: 500 75 | m_PVRBounces: 2 76 | m_PVREnvironmentSampleCount: 500 77 | m_PVREnvironmentReferencePointCount: 2048 78 | m_PVRFilteringMode: 2 79 | m_PVRDenoiserTypeDirect: 0 80 | m_PVRDenoiserTypeIndirect: 0 81 | m_PVRDenoiserTypeAO: 0 82 | m_PVRFilterTypeDirect: 0 83 | m_PVRFilterTypeIndirect: 0 84 | m_PVRFilterTypeAO: 0 85 | m_PVREnvironmentMIS: 0 86 | m_PVRCulling: 1 87 | m_PVRFilteringGaussRadiusDirect: 1 88 | m_PVRFilteringGaussRadiusIndirect: 5 89 | m_PVRFilteringGaussRadiusAO: 2 90 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 91 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 92 | m_PVRFilteringAtrousPositionSigmaAO: 1 93 | m_ExportTrainingData: 0 94 | m_TrainingDataDestination: TrainingData 95 | m_LightProbeSampleCountMultiplier: 4 96 | m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} 97 | m_LightingSettings: {fileID: 0} 98 | --- !u!196 &4 99 | NavMeshSettings: 100 | serializedVersion: 2 101 | m_ObjectHideFlags: 0 102 | m_BuildSettings: 103 | serializedVersion: 3 104 | agentTypeID: 0 105 | agentRadius: 0.5 106 | agentHeight: 2 107 | agentSlope: 45 108 | agentClimb: 0.4 109 | ledgeDropHeight: 0 110 | maxJumpAcrossDistance: 0 111 | minRegionArea: 2 112 | manualCellSize: 0 113 | cellSize: 0.16666667 114 | manualTileSize: 0 115 | tileSize: 256 116 | buildHeightMesh: 0 117 | maxJobWorkers: 0 118 | preserveTilesOutsideBounds: 0 119 | debug: 120 | m_Flags: 0 121 | m_NavMeshData: {fileID: 0} 122 | --- !u!1 &705507993 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 705507995} 131 | - component: {fileID: 705507994} 132 | - component: {fileID: 705507996} 133 | m_Layer: 0 134 | m_Name: Directional Light 135 | m_TagString: Untagged 136 | m_Icon: {fileID: 0} 137 | m_NavMeshLayer: 0 138 | m_StaticEditorFlags: 0 139 | m_IsActive: 1 140 | --- !u!108 &705507994 141 | Light: 142 | m_ObjectHideFlags: 0 143 | m_CorrespondingSourceObject: {fileID: 0} 144 | m_PrefabInstance: {fileID: 0} 145 | m_PrefabAsset: {fileID: 0} 146 | m_GameObject: {fileID: 705507993} 147 | m_Enabled: 1 148 | serializedVersion: 11 149 | m_Type: 1 150 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 151 | m_Intensity: 1 152 | m_Range: 10 153 | m_SpotAngle: 30 154 | m_InnerSpotAngle: 21.80208 155 | m_CookieSize: 10 156 | m_Shadows: 157 | m_Type: 2 158 | m_Resolution: -1 159 | m_CustomResolution: -1 160 | m_Strength: 1 161 | m_Bias: 0.05 162 | m_NormalBias: 0.4 163 | m_NearPlane: 0.2 164 | m_CullingMatrixOverride: 165 | e00: 1 166 | e01: 0 167 | e02: 0 168 | e03: 0 169 | e10: 0 170 | e11: 1 171 | e12: 0 172 | e13: 0 173 | e20: 0 174 | e21: 0 175 | e22: 1 176 | e23: 0 177 | e30: 0 178 | e31: 0 179 | e32: 0 180 | e33: 1 181 | m_UseCullingMatrixOverride: 0 182 | m_Cookie: {fileID: 0} 183 | m_DrawHalo: 0 184 | m_Flare: {fileID: 0} 185 | m_RenderMode: 0 186 | m_CullingMask: 187 | serializedVersion: 2 188 | m_Bits: 4294967295 189 | m_RenderingLayerMask: 1 190 | m_Lightmapping: 1 191 | m_LightShadowCasterMode: 0 192 | m_AreaSize: {x: 1, y: 1} 193 | m_BounceIntensity: 1 194 | m_ColorTemperature: 6570 195 | m_UseColorTemperature: 0 196 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 197 | m_UseBoundingSphereOverride: 0 198 | m_UseViewFrustumForShadowCasterCull: 1 199 | m_ShadowRadius: 0 200 | m_ShadowAngle: 0 201 | --- !u!4 &705507995 202 | Transform: 203 | m_ObjectHideFlags: 0 204 | m_CorrespondingSourceObject: {fileID: 0} 205 | m_PrefabInstance: {fileID: 0} 206 | m_PrefabAsset: {fileID: 0} 207 | m_GameObject: {fileID: 705507993} 208 | serializedVersion: 2 209 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 210 | m_LocalPosition: {x: 0, y: 3, z: 0} 211 | m_LocalScale: {x: 1, y: 1, z: 1} 212 | m_ConstrainProportionsScale: 0 213 | m_Children: [] 214 | m_Father: {fileID: 0} 215 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 216 | --- !u!114 &705507996 217 | MonoBehaviour: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | m_GameObject: {fileID: 705507993} 223 | m_Enabled: 1 224 | m_EditorHideFlags: 0 225 | m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} 226 | m_Name: 227 | m_EditorClassIdentifier: 228 | m_Version: 3 229 | m_UsePipelineSettings: 1 230 | m_AdditionalLightsShadowResolutionTier: 2 231 | m_LightLayerMask: 1 232 | m_RenderingLayers: 1 233 | m_CustomShadowLayers: 0 234 | m_ShadowLayerMask: 1 235 | m_ShadowRenderingLayers: 1 236 | m_LightCookieSize: {x: 1, y: 1} 237 | m_LightCookieOffset: {x: 0, y: 0} 238 | m_SoftShadowQuality: 0 239 | --- !u!1 &963194225 240 | GameObject: 241 | m_ObjectHideFlags: 0 242 | m_CorrespondingSourceObject: {fileID: 0} 243 | m_PrefabInstance: {fileID: 0} 244 | m_PrefabAsset: {fileID: 0} 245 | serializedVersion: 6 246 | m_Component: 247 | - component: {fileID: 963194228} 248 | - component: {fileID: 963194227} 249 | - component: {fileID: 963194226} 250 | m_Layer: 0 251 | m_Name: Main Camera 252 | m_TagString: MainCamera 253 | m_Icon: {fileID: 0} 254 | m_NavMeshLayer: 0 255 | m_StaticEditorFlags: 0 256 | m_IsActive: 1 257 | --- !u!81 &963194226 258 | AudioListener: 259 | m_ObjectHideFlags: 0 260 | m_CorrespondingSourceObject: {fileID: 0} 261 | m_PrefabInstance: {fileID: 0} 262 | m_PrefabAsset: {fileID: 0} 263 | m_GameObject: {fileID: 963194225} 264 | m_Enabled: 1 265 | --- !u!20 &963194227 266 | Camera: 267 | m_ObjectHideFlags: 0 268 | m_CorrespondingSourceObject: {fileID: 0} 269 | m_PrefabInstance: {fileID: 0} 270 | m_PrefabAsset: {fileID: 0} 271 | m_GameObject: {fileID: 963194225} 272 | m_Enabled: 1 273 | serializedVersion: 2 274 | m_ClearFlags: 1 275 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 276 | m_projectionMatrixMode: 1 277 | m_GateFitMode: 2 278 | m_FOVAxisMode: 0 279 | m_Iso: 200 280 | m_ShutterSpeed: 0.005 281 | m_Aperture: 16 282 | m_FocusDistance: 10 283 | m_FocalLength: 50 284 | m_BladeCount: 5 285 | m_Curvature: {x: 2, y: 11} 286 | m_BarrelClipping: 0.25 287 | m_Anamorphism: 0 288 | m_SensorSize: {x: 36, y: 24} 289 | m_LensShift: {x: 0, y: 0} 290 | m_NormalizedViewPortRect: 291 | serializedVersion: 2 292 | x: 0 293 | y: 0 294 | width: 1 295 | height: 1 296 | near clip plane: 0.3 297 | far clip plane: 1000 298 | field of view: 60 299 | orthographic: 0 300 | orthographic size: 5 301 | m_Depth: -1 302 | m_CullingMask: 303 | serializedVersion: 2 304 | m_Bits: 4294967295 305 | m_RenderingPath: -1 306 | m_TargetTexture: {fileID: 0} 307 | m_TargetDisplay: 0 308 | m_TargetEye: 3 309 | m_HDR: 1 310 | m_AllowMSAA: 1 311 | m_AllowDynamicResolution: 0 312 | m_ForceIntoRT: 0 313 | m_OcclusionCulling: 1 314 | m_StereoConvergence: 10 315 | m_StereoSeparation: 0.022 316 | --- !u!4 &963194228 317 | Transform: 318 | m_ObjectHideFlags: 0 319 | m_CorrespondingSourceObject: {fileID: 0} 320 | m_PrefabInstance: {fileID: 0} 321 | m_PrefabAsset: {fileID: 0} 322 | m_GameObject: {fileID: 963194225} 323 | serializedVersion: 2 324 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 325 | m_LocalPosition: {x: 0, y: 1, z: -10} 326 | m_LocalScale: {x: 1, y: 1, z: 1} 327 | m_ConstrainProportionsScale: 0 328 | m_Children: [] 329 | m_Father: {fileID: 0} 330 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 331 | --- !u!1 &2072706727 332 | GameObject: 333 | m_ObjectHideFlags: 0 334 | m_CorrespondingSourceObject: {fileID: 0} 335 | m_PrefabInstance: {fileID: 0} 336 | m_PrefabAsset: {fileID: 0} 337 | serializedVersion: 6 338 | m_Component: 339 | - component: {fileID: 2072706731} 340 | - component: {fileID: 2072706730} 341 | - component: {fileID: 2072706729} 342 | - component: {fileID: 2072706728} 343 | m_Layer: 0 344 | m_Name: Cube 345 | m_TagString: Untagged 346 | m_Icon: {fileID: 0} 347 | m_NavMeshLayer: 0 348 | m_StaticEditorFlags: 0 349 | m_IsActive: 1 350 | --- !u!65 &2072706728 351 | BoxCollider: 352 | m_ObjectHideFlags: 0 353 | m_CorrespondingSourceObject: {fileID: 0} 354 | m_PrefabInstance: {fileID: 0} 355 | m_PrefabAsset: {fileID: 0} 356 | m_GameObject: {fileID: 2072706727} 357 | m_Material: {fileID: 0} 358 | m_IncludeLayers: 359 | serializedVersion: 2 360 | m_Bits: 0 361 | m_ExcludeLayers: 362 | serializedVersion: 2 363 | m_Bits: 0 364 | m_LayerOverridePriority: 0 365 | m_IsTrigger: 0 366 | m_ProvidesContacts: 0 367 | m_Enabled: 1 368 | serializedVersion: 3 369 | m_Size: {x: 1, y: 1, z: 1} 370 | m_Center: {x: 0, y: 0, z: 0} 371 | --- !u!23 &2072706729 372 | MeshRenderer: 373 | m_ObjectHideFlags: 0 374 | m_CorrespondingSourceObject: {fileID: 0} 375 | m_PrefabInstance: {fileID: 0} 376 | m_PrefabAsset: {fileID: 0} 377 | m_GameObject: {fileID: 2072706727} 378 | m_Enabled: 1 379 | m_CastShadows: 1 380 | m_ReceiveShadows: 1 381 | m_DynamicOccludee: 1 382 | m_StaticShadowCaster: 0 383 | m_MotionVectors: 1 384 | m_LightProbeUsage: 1 385 | m_ReflectionProbeUsage: 1 386 | m_RayTracingMode: 2 387 | m_RayTraceProcedural: 0 388 | m_RayTracingAccelStructBuildFlagsOverride: 0 389 | m_RayTracingAccelStructBuildFlags: 1 390 | m_RenderingLayerMask: 1 391 | m_RendererPriority: 0 392 | m_Materials: 393 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 394 | m_StaticBatchInfo: 395 | firstSubMesh: 0 396 | subMeshCount: 0 397 | m_StaticBatchRoot: {fileID: 0} 398 | m_ProbeAnchor: {fileID: 0} 399 | m_LightProbeVolumeOverride: {fileID: 0} 400 | m_ScaleInLightmap: 1 401 | m_ReceiveGI: 1 402 | m_PreserveUVs: 0 403 | m_IgnoreNormalsForChartDetection: 0 404 | m_ImportantGI: 0 405 | m_StitchLightmapSeams: 1 406 | m_SelectedEditorRenderState: 3 407 | m_MinimumChartSize: 4 408 | m_AutoUVMaxDistance: 0.5 409 | m_AutoUVMaxAngle: 89 410 | m_LightmapParameters: {fileID: 0} 411 | m_SortingLayerID: 0 412 | m_SortingLayer: 0 413 | m_SortingOrder: 0 414 | m_AdditionalVertexStreams: {fileID: 0} 415 | --- !u!33 &2072706730 416 | MeshFilter: 417 | m_ObjectHideFlags: 0 418 | m_CorrespondingSourceObject: {fileID: 0} 419 | m_PrefabInstance: {fileID: 0} 420 | m_PrefabAsset: {fileID: 0} 421 | m_GameObject: {fileID: 2072706727} 422 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 423 | --- !u!4 &2072706731 424 | Transform: 425 | m_ObjectHideFlags: 0 426 | m_CorrespondingSourceObject: {fileID: 0} 427 | m_PrefabInstance: {fileID: 0} 428 | m_PrefabAsset: {fileID: 0} 429 | m_GameObject: {fileID: 2072706727} 430 | serializedVersion: 2 431 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 432 | m_LocalPosition: {x: 0, y: 0, z: 0} 433 | m_LocalScale: {x: 1, y: 1, z: 1} 434 | m_ConstrainProportionsScale: 0 435 | m_Children: [] 436 | m_Father: {fileID: 0} 437 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 438 | --- !u!1660057539 &9223372036854775807 439 | SceneRoots: 440 | m_ObjectHideFlags: 0 441 | m_Roots: 442 | - {fileID: 963194228} 443 | - {fileID: 705507995} 444 | - {fileID: 2072706731} 445 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c61bb02c636175144b98949846b9407b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/New Universal Render Pipeline Asset.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: New Universal Render Pipeline Asset 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 12 16 | k_AssetPreviousVersion: 12 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: 0b1c710f645a20e4babb99ce1c22dde3, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 1 27 | m_HDRColorBufferPrecision: 0 28 | m_MSAA: 1 29 | m_RenderScale: 1 30 | m_UpscalingFilter: 0 31 | m_FsrOverrideSharpness: 0 32 | m_FsrSharpness: 0.92 33 | m_EnableLODCrossFade: 1 34 | m_LODCrossFadeDitheringType: 1 35 | m_ShEvalMode: 0 36 | m_LightProbeSystem: 0 37 | m_ProbeVolumeMemoryBudget: 1024 38 | m_SupportProbeVolumeStreaming: 0 39 | m_ProbeVolumeSHBands: 1 40 | m_MainLightRenderingMode: 1 41 | m_MainLightShadowsSupported: 1 42 | m_MainLightShadowmapResolution: 2048 43 | m_AdditionalLightsRenderingMode: 1 44 | m_AdditionalLightsPerObjectLimit: 4 45 | m_AdditionalLightShadowsSupported: 0 46 | m_AdditionalLightsShadowmapResolution: 2048 47 | m_AdditionalLightsShadowResolutionTierLow: 256 48 | m_AdditionalLightsShadowResolutionTierMedium: 512 49 | m_AdditionalLightsShadowResolutionTierHigh: 1024 50 | m_ReflectionProbeBlending: 0 51 | m_ReflectionProbeBoxProjection: 0 52 | m_ShadowDistance: 50 53 | m_ShadowCascadeCount: 1 54 | m_Cascade2Split: 0.25 55 | m_Cascade3Split: {x: 0.1, y: 0.3} 56 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 57 | m_CascadeBorder: 0.2 58 | m_ShadowDepthBias: 1 59 | m_ShadowNormalBias: 1 60 | m_AnyShadowsSupported: 1 61 | m_SoftShadowsSupported: 0 62 | m_ConservativeEnclosingSphere: 1 63 | m_NumIterationsEnclosingSphere: 64 64 | m_SoftShadowQuality: 2 65 | m_AdditionalLightsCookieResolution: 2048 66 | m_AdditionalLightsCookieFormat: 3 67 | m_UseSRPBatcher: 1 68 | m_SupportsDynamicBatching: 0 69 | m_MixedLightingSupported: 1 70 | m_SupportsLightCookies: 1 71 | m_SupportsLightLayers: 0 72 | m_DebugLevel: 0 73 | m_StoreActionsOptimization: 0 74 | m_EnableRenderGraph: 0 75 | m_UseAdaptivePerformance: 1 76 | m_ColorGradingMode: 0 77 | m_ColorGradingLutSize: 32 78 | m_UseFastSRGBLinearConversion: 0 79 | m_SupportDataDrivenLensFlare: 1 80 | m_SupportScreenSpaceLensFlare: 1 81 | m_ShadowType: 1 82 | m_LocalShadowsSupported: 0 83 | m_LocalShadowsAtlasResolution: 256 84 | m_MaxPixelLights: 0 85 | m_ShadowAtlasResolution: 256 86 | m_VolumeFrameworkUpdateMode: 0 87 | m_VolumeProfile: {fileID: 0} 88 | m_Textures: 89 | blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} 90 | bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} 91 | apvScenesData: 92 | m_ObsoleteSerializedBakingSets: [] 93 | sceneToBakingSet: 94 | m_Keys: [] 95 | m_Values: [] 96 | bakingSets: [] 97 | sceneBounds: 98 | m_Keys: [] 99 | m_Values: [] 100 | hasProbeVolumes: 101 | m_Keys: [] 102 | m_Values: 103 | m_PrefilteringModeMainLightShadows: 1 104 | m_PrefilteringModeAdditionalLight: 4 105 | m_PrefilteringModeAdditionalLightShadows: 1 106 | m_PrefilterXRKeywords: 0 107 | m_PrefilteringModeForwardPlus: 1 108 | m_PrefilteringModeDeferredRendering: 1 109 | m_PrefilteringModeScreenSpaceOcclusion: 1 110 | m_PrefilterDebugKeywords: 0 111 | m_PrefilterWriteRenderingLayers: 0 112 | m_PrefilterHDROutput: 0 113 | m_PrefilterSSAODepthNormals: 0 114 | m_PrefilterSSAOSourceDepthLow: 0 115 | m_PrefilterSSAOSourceDepthMedium: 0 116 | m_PrefilterSSAOSourceDepthHigh: 0 117 | m_PrefilterSSAOInterleaved: 0 118 | m_PrefilterSSAOBlueNoise: 0 119 | m_PrefilterSSAOSampleCountLow: 0 120 | m_PrefilterSSAOSampleCountMedium: 0 121 | m_PrefilterSSAOSampleCountHigh: 0 122 | m_PrefilterDBufferMRT1: 0 123 | m_PrefilterDBufferMRT2: 0 124 | m_PrefilterDBufferMRT3: 0 125 | m_PrefilterSoftShadowsQualityLow: 0 126 | m_PrefilterSoftShadowsQualityMedium: 0 127 | m_PrefilterSoftShadowsQualityHigh: 0 128 | m_PrefilterSoftShadows: 0 129 | m_PrefilterScreenCoord: 0 130 | m_PrefilterNativeRenderPass: 0 131 | m_ShaderVariantLogLevel: 0 132 | m_ShadowCascades: 0 133 | -------------------------------------------------------------------------------- /Assets/Settings/New Universal Render Pipeline Asset.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9b4936a9cba99b45a1727b8a0e9afd3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Settings/New Universal Render Pipeline Asset_Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 13 | m_Name: New Universal Render Pipeline Asset_Renderer 14 | m_EditorClassIdentifier: 15 | debugShaders: 16 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} 17 | hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} 18 | probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3} 19 | probeVolumeResources: 20 | probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, type: 3} 21 | probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, type: 3} 22 | probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, type: 3} 23 | probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, type: 3} 24 | probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, type: 3} 25 | probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, type: 3} 26 | m_RendererFeatures: [] 27 | m_RendererFeatureMap: 28 | m_UseNativeRenderPass: 0 29 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 30 | xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} 31 | shaders: 32 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 33 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 34 | screenSpaceShadowPS: {fileID: 0} 35 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 36 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 37 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 38 | fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} 39 | materialErrorPS: {fileID: 0} 40 | coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} 41 | coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} 42 | blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} 43 | cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3} 44 | screenSpaceLensFlare: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3} 45 | dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} 46 | m_AssetVersion: 2 47 | m_OpaqueLayerMask: 48 | serializedVersion: 2 49 | m_Bits: 4294967295 50 | m_TransparentLayerMask: 51 | serializedVersion: 2 52 | m_Bits: 4294967295 53 | m_DefaultStencilState: 54 | overrideStencilState: 0 55 | stencilReference: 0 56 | stencilCompareFunction: 8 57 | passOperation: 2 58 | failOperation: 0 59 | zFailOperation: 0 60 | m_ShadowTransparentReceive: 1 61 | m_RenderingMode: 0 62 | m_DepthPrimingMode: 0 63 | m_CopyDepthMode: 1 64 | m_AccurateGbufferNormals: 0 65 | m_IntermediateTextureMode: 1 66 | -------------------------------------------------------------------------------- /Assets/Settings/New Universal Render Pipeline Asset_Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b1c710f645a20e4babb99ce1c22dde3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineGlobalSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3} 13 | m_Name: UniversalRenderPipelineGlobalSettings 14 | m_EditorClassIdentifier: 15 | m_Settings: 16 | m_SettingsList: [] 17 | m_RuntimeSettings: [] 18 | m_AssetVersion: 5 19 | m_DefaultVolumeProfile: {fileID: 0} 20 | m_RenderingLayerNames: 21 | - Default 22 | m_ValidRenderingLayers: 1 23 | lightLayerName0: 24 | lightLayerName1: 25 | lightLayerName2: 26 | lightLayerName3: 27 | lightLayerName4: 28 | lightLayerName5: 29 | lightLayerName6: 30 | lightLayerName7: 31 | apvScenesData: 32 | m_ObsoleteSerializedBakingSets: [] 33 | sceneToBakingSet: 34 | m_Keys: [] 35 | m_Values: [] 36 | bakingSets: [] 37 | sceneBounds: 38 | m_Keys: [] 39 | m_Values: [] 40 | hasProbeVolumes: 41 | m_Keys: [] 42 | m_Values: 43 | m_ShaderStrippingSetting: 44 | m_Version: 0 45 | m_ExportShaderVariants: 1 46 | m_ShaderVariantLogLevel: 0 47 | m_StripRuntimeDebugShaders: 1 48 | m_URPShaderStrippingSetting: 49 | m_Version: 0 50 | m_StripUnusedPostProcessingVariants: 0 51 | m_StripUnusedVariants: 1 52 | m_StripScreenCoordOverrideVariants: 1 53 | m_ShaderVariantLogLevel: 0 54 | m_ExportShaderVariants: 1 55 | m_StripDebugVariants: 1 56 | m_StripUnusedPostProcessingVariants: 0 57 | m_StripUnusedVariants: 1 58 | m_StripScreenCoordOverrideVariants: 1 59 | supportRuntimeDebugDisplay: 0 60 | references: 61 | version: 2 62 | RefIds: [] 63 | -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineGlobalSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 50175f59ec663a348a282f4e1feebbf0 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "{}" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright {yyyy} {name of copyright owner} 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.rider": "3.0.28", 4 | "com.unity.render-pipelines.universal": "16.0.5", 5 | "com.unity.timeline": "1.8.6", 6 | "com.unity.ugui": "2.0.0", 7 | "com.unity.visualeffectgraph": "16.0.5", 8 | "com.unity.modules.ai": "1.0.0", 9 | "com.unity.modules.androidjni": "1.0.0", 10 | "com.unity.modules.animation": "1.0.0", 11 | "com.unity.modules.audio": "1.0.0", 12 | "com.unity.modules.director": "1.0.0", 13 | "com.unity.modules.imageconversion": "1.0.0", 14 | "com.unity.modules.imgui": "1.0.0", 15 | "com.unity.modules.jsonserialize": "1.0.0", 16 | "com.unity.modules.particlesystem": "1.0.0", 17 | "com.unity.modules.physics": "1.0.0", 18 | "com.unity.modules.screencapture": "1.0.0", 19 | "com.unity.modules.ui": "1.0.0", 20 | "com.unity.modules.umbra": "1.0.0", 21 | "com.unity.modules.unitywebrequest": "1.0.0", 22 | "com.unity.modules.video": "1.0.0", 23 | "com.unity.modules.vr": "1.0.0", 24 | "com.unity.modules.xr": "1.0.0" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.burst": { 4 | "version": "1.8.12", 5 | "depth": 1, 6 | "source": "registry", 7 | "dependencies": { 8 | "com.unity.mathematics": "1.2.1", 9 | "com.unity.modules.jsonserialize": "1.0.0" 10 | }, 11 | "url": "https://packages.unity.com" 12 | }, 13 | "com.unity.collections": { 14 | "version": "1.4.0", 15 | "depth": 3, 16 | "source": "registry", 17 | "dependencies": { 18 | "com.unity.burst": "1.6.6", 19 | "com.unity.nuget.mono-cecil": "1.11.4", 20 | "com.unity.test-framework": "1.1.31" 21 | }, 22 | "url": "https://packages.unity.com" 23 | }, 24 | "com.unity.ext.nunit": { 25 | "version": "2.0.5", 26 | "depth": 1, 27 | "source": "registry", 28 | "dependencies": {}, 29 | "url": "https://packages.unity.com" 30 | }, 31 | "com.unity.ide.rider": { 32 | "version": "3.0.28", 33 | "depth": 0, 34 | "source": "registry", 35 | "dependencies": { 36 | "com.unity.ext.nunit": "1.0.6" 37 | }, 38 | "url": "https://packages.unity.com" 39 | }, 40 | "com.unity.mathematics": { 41 | "version": "1.2.6", 42 | "depth": 1, 43 | "source": "registry", 44 | "dependencies": {}, 45 | "url": "https://packages.unity.com" 46 | }, 47 | "com.unity.nuget.mono-cecil": { 48 | "version": "1.11.4", 49 | "depth": 4, 50 | "source": "registry", 51 | "dependencies": {}, 52 | "url": "https://packages.unity.com" 53 | }, 54 | "com.unity.render-pipelines.core": { 55 | "version": "16.0.5", 56 | "depth": 1, 57 | "source": "builtin", 58 | "dependencies": { 59 | "com.unity.mathematics": "1.2.4", 60 | "com.unity.ugui": "2.0.0", 61 | "com.unity.modules.physics": "1.0.0", 62 | "com.unity.modules.terrain": "1.0.0", 63 | "com.unity.modules.jsonserialize": "1.0.0", 64 | "com.unity.rendering.light-transport": "1.0.0" 65 | } 66 | }, 67 | "com.unity.render-pipelines.universal": { 68 | "version": "16.0.5", 69 | "depth": 0, 70 | "source": "builtin", 71 | "dependencies": { 72 | "com.unity.mathematics": "1.2.1", 73 | "com.unity.burst": "1.8.9", 74 | "com.unity.render-pipelines.core": "16.0.5", 75 | "com.unity.shadergraph": "16.0.5" 76 | } 77 | }, 78 | "com.unity.rendering.light-transport": { 79 | "version": "1.0.1", 80 | "depth": 2, 81 | "source": "builtin", 82 | "dependencies": { 83 | "com.unity.collections": "1.4.0", 84 | "com.unity.mathematics": "1.2.4", 85 | "com.unity.render-pipelines.core": "16.0.1" 86 | } 87 | }, 88 | "com.unity.searcher": { 89 | "version": "4.9.2", 90 | "depth": 2, 91 | "source": "registry", 92 | "dependencies": {}, 93 | "url": "https://packages.unity.com" 94 | }, 95 | "com.unity.shadergraph": { 96 | "version": "16.0.5", 97 | "depth": 1, 98 | "source": "builtin", 99 | "dependencies": { 100 | "com.unity.render-pipelines.core": "16.0.5", 101 | "com.unity.searcher": "4.9.2" 102 | } 103 | }, 104 | "com.unity.test-framework": { 105 | "version": "1.3.9", 106 | "depth": 4, 107 | "source": "registry", 108 | "dependencies": { 109 | "com.unity.ext.nunit": "2.0.3", 110 | "com.unity.modules.imgui": "1.0.0", 111 | "com.unity.modules.jsonserialize": "1.0.0" 112 | }, 113 | "url": "https://packages.unity.com" 114 | }, 115 | "com.unity.timeline": { 116 | "version": "1.8.6", 117 | "depth": 0, 118 | "source": "registry", 119 | "dependencies": { 120 | "com.unity.modules.director": "1.0.0", 121 | "com.unity.modules.animation": "1.0.0", 122 | "com.unity.modules.audio": "1.0.0", 123 | "com.unity.modules.particlesystem": "1.0.0" 124 | }, 125 | "url": "https://packages.unity.com" 126 | }, 127 | "com.unity.ugui": { 128 | "version": "2.0.0", 129 | "depth": 0, 130 | "source": "builtin", 131 | "dependencies": { 132 | "com.unity.modules.ui": "1.0.0", 133 | "com.unity.modules.imgui": "1.0.0" 134 | } 135 | }, 136 | "com.unity.visualeffectgraph": { 137 | "version": "16.0.5", 138 | "depth": 0, 139 | "source": "builtin", 140 | "dependencies": { 141 | "com.unity.shadergraph": "16.0.5", 142 | "com.unity.render-pipelines.core": "16.0.5" 143 | } 144 | }, 145 | "com.unity.modules.ai": { 146 | "version": "1.0.0", 147 | "depth": 0, 148 | "source": "builtin", 149 | "dependencies": {} 150 | }, 151 | "com.unity.modules.androidjni": { 152 | "version": "1.0.0", 153 | "depth": 0, 154 | "source": "builtin", 155 | "dependencies": {} 156 | }, 157 | "com.unity.modules.animation": { 158 | "version": "1.0.0", 159 | "depth": 0, 160 | "source": "builtin", 161 | "dependencies": {} 162 | }, 163 | "com.unity.modules.audio": { 164 | "version": "1.0.0", 165 | "depth": 0, 166 | "source": "builtin", 167 | "dependencies": {} 168 | }, 169 | "com.unity.modules.director": { 170 | "version": "1.0.0", 171 | "depth": 0, 172 | "source": "builtin", 173 | "dependencies": { 174 | "com.unity.modules.audio": "1.0.0", 175 | "com.unity.modules.animation": "1.0.0" 176 | } 177 | }, 178 | "com.unity.modules.imageconversion": { 179 | "version": "1.0.0", 180 | "depth": 0, 181 | "source": "builtin", 182 | "dependencies": {} 183 | }, 184 | "com.unity.modules.imgui": { 185 | "version": "1.0.0", 186 | "depth": 0, 187 | "source": "builtin", 188 | "dependencies": {} 189 | }, 190 | "com.unity.modules.jsonserialize": { 191 | "version": "1.0.0", 192 | "depth": 0, 193 | "source": "builtin", 194 | "dependencies": {} 195 | }, 196 | "com.unity.modules.particlesystem": { 197 | "version": "1.0.0", 198 | "depth": 0, 199 | "source": "builtin", 200 | "dependencies": {} 201 | }, 202 | "com.unity.modules.physics": { 203 | "version": "1.0.0", 204 | "depth": 0, 205 | "source": "builtin", 206 | "dependencies": {} 207 | }, 208 | "com.unity.modules.screencapture": { 209 | "version": "1.0.0", 210 | "depth": 0, 211 | "source": "builtin", 212 | "dependencies": { 213 | "com.unity.modules.imageconversion": "1.0.0" 214 | } 215 | }, 216 | "com.unity.modules.subsystems": { 217 | "version": "1.0.0", 218 | "depth": 1, 219 | "source": "builtin", 220 | "dependencies": { 221 | "com.unity.modules.jsonserialize": "1.0.0" 222 | } 223 | }, 224 | "com.unity.modules.terrain": { 225 | "version": "1.0.0", 226 | "depth": 2, 227 | "source": "builtin", 228 | "dependencies": {} 229 | }, 230 | "com.unity.modules.ui": { 231 | "version": "1.0.0", 232 | "depth": 0, 233 | "source": "builtin", 234 | "dependencies": {} 235 | }, 236 | "com.unity.modules.umbra": { 237 | "version": "1.0.0", 238 | "depth": 0, 239 | "source": "builtin", 240 | "dependencies": {} 241 | }, 242 | "com.unity.modules.unitywebrequest": { 243 | "version": "1.0.0", 244 | "depth": 0, 245 | "source": "builtin", 246 | "dependencies": {} 247 | }, 248 | "com.unity.modules.video": { 249 | "version": "1.0.0", 250 | "depth": 0, 251 | "source": "builtin", 252 | "dependencies": { 253 | "com.unity.modules.audio": "1.0.0", 254 | "com.unity.modules.ui": "1.0.0", 255 | "com.unity.modules.unitywebrequest": "1.0.0" 256 | } 257 | }, 258 | "com.unity.modules.vr": { 259 | "version": "1.0.0", 260 | "depth": 0, 261 | "source": "builtin", 262 | "dependencies": { 263 | "com.unity.modules.jsonserialize": "1.0.0", 264 | "com.unity.modules.physics": "1.0.0", 265 | "com.unity.modules.xr": "1.0.0" 266 | } 267 | }, 268 | "com.unity.modules.xr": { 269 | "version": "1.0.0", 270 | "depth": 0, 271 | "source": "builtin", 272 | "dependencies": { 273 | "com.unity.modules.physics": "1.0.0", 274 | "com.unity.modules.jsonserialize": "1.0.0", 275 | "com.unity.modules.subsystems": "1.0.0" 276 | } 277 | } 278 | } 279 | } 280 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_SerializeInlineMappingsOnOneLine: 1 31 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 16 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_DepthNormals: 17 | m_Mode: 1 18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 19 | m_MotionVectors: 20 | m_Mode: 1 21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 22 | m_LightHalo: 23 | m_Mode: 1 24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LensFlare: 26 | m_Mode: 1 27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 28 | m_VideoShadersIncludeMode: 2 29 | m_AlwaysIncludedShaders: 30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 36 | m_PreloadedShaders: [] 37 | m_PreloadShadersBatchTimeLimit: -1 38 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 39 | m_CustomRenderPipeline: {fileID: 11400000, guid: e9b4936a9cba99b45a1727b8a0e9afd3, type: 2} 40 | m_TransparencySortMode: 0 41 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 42 | m_DefaultRenderingPath: 1 43 | m_DefaultMobileRenderingPath: 1 44 | m_TierSettings: [] 45 | m_LightmapStripping: 0 46 | m_FogStripping: 0 47 | m_InstancingStripping: 0 48 | m_BrgStripping: 0 49 | m_LightmapKeepPlain: 1 50 | m_LightmapKeepDirCombined: 1 51 | m_LightmapKeepDynamicPlain: 1 52 | m_LightmapKeepDynamicDirCombined: 1 53 | m_LightmapKeepShadowMask: 1 54 | m_LightmapKeepSubtractive: 1 55 | m_FogKeepLinear: 1 56 | m_FogKeepExp: 1 57 | m_FogKeepExp2: 1 58 | m_AlbedoSwatchInfos: [] 59 | m_RenderPipelineGlobalSettingsMap: 60 | UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 50175f59ec663a348a282f4e1feebbf0, type: 2} 61 | m_LightsUseLinearIntensity: 1 62 | m_LightsUseColorTemperature: 1 63 | m_DefaultRenderingLayerMask: 1 64 | m_LogWhenShaderIsCompiled: 0 65 | m_LightProbeOutsideHullStrategy: 0 66 | m_CameraRelativeLightCulling: 0 67 | m_CameraRelativeShadowCulling: 0 68 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | - serializedVersion: 3 297 | m_Name: Enable Debug Button 1 298 | descriptiveName: 299 | descriptiveNegativeName: 300 | negativeButton: 301 | positiveButton: left ctrl 302 | altNegativeButton: 303 | altPositiveButton: joystick button 8 304 | gravity: 0 305 | dead: 0 306 | sensitivity: 0 307 | snap: 0 308 | invert: 0 309 | type: 0 310 | axis: 0 311 | joyNum: 0 312 | - serializedVersion: 3 313 | m_Name: Enable Debug Button 2 314 | descriptiveName: 315 | descriptiveNegativeName: 316 | negativeButton: 317 | positiveButton: backspace 318 | altNegativeButton: 319 | altPositiveButton: joystick button 9 320 | gravity: 0 321 | dead: 0 322 | sensitivity: 0 323 | snap: 0 324 | invert: 0 325 | type: 0 326 | axis: 0 327 | joyNum: 0 328 | - serializedVersion: 3 329 | m_Name: Debug Reset 330 | descriptiveName: 331 | descriptiveNegativeName: 332 | negativeButton: 333 | positiveButton: left alt 334 | altNegativeButton: 335 | altPositiveButton: joystick button 1 336 | gravity: 0 337 | dead: 0 338 | sensitivity: 0 339 | snap: 0 340 | invert: 0 341 | type: 0 342 | axis: 0 343 | joyNum: 0 344 | - serializedVersion: 3 345 | m_Name: Debug Next 346 | descriptiveName: 347 | descriptiveNegativeName: 348 | negativeButton: 349 | positiveButton: page down 350 | altNegativeButton: 351 | altPositiveButton: joystick button 5 352 | gravity: 0 353 | dead: 0 354 | sensitivity: 0 355 | snap: 0 356 | invert: 0 357 | type: 0 358 | axis: 0 359 | joyNum: 0 360 | - serializedVersion: 3 361 | m_Name: Debug Previous 362 | descriptiveName: 363 | descriptiveNegativeName: 364 | negativeButton: 365 | positiveButton: page up 366 | altNegativeButton: 367 | altPositiveButton: joystick button 4 368 | gravity: 0 369 | dead: 0 370 | sensitivity: 0 371 | snap: 0 372 | invert: 0 373 | type: 0 374 | axis: 0 375 | joyNum: 0 376 | - serializedVersion: 3 377 | m_Name: Debug Validate 378 | descriptiveName: 379 | descriptiveNegativeName: 380 | negativeButton: 381 | positiveButton: return 382 | altNegativeButton: 383 | altPositiveButton: joystick button 0 384 | gravity: 0 385 | dead: 0 386 | sensitivity: 0 387 | snap: 0 388 | invert: 0 389 | type: 0 390 | axis: 0 391 | joyNum: 0 392 | - serializedVersion: 3 393 | m_Name: Debug Persistent 394 | descriptiveName: 395 | descriptiveNegativeName: 396 | negativeButton: 397 | positiveButton: right shift 398 | altNegativeButton: 399 | altPositiveButton: joystick button 2 400 | gravity: 0 401 | dead: 0 402 | sensitivity: 0 403 | snap: 0 404 | invert: 0 405 | type: 0 406 | axis: 0 407 | joyNum: 0 408 | - serializedVersion: 3 409 | m_Name: Debug Multiplier 410 | descriptiveName: 411 | descriptiveNegativeName: 412 | negativeButton: 413 | positiveButton: left shift 414 | altNegativeButton: 415 | altPositiveButton: joystick button 3 416 | gravity: 0 417 | dead: 0 418 | sensitivity: 0 419 | snap: 0 420 | invert: 0 421 | type: 0 422 | axis: 0 423 | joyNum: 0 424 | - serializedVersion: 3 425 | m_Name: Debug Horizontal 426 | descriptiveName: 427 | descriptiveNegativeName: 428 | negativeButton: left 429 | positiveButton: right 430 | altNegativeButton: 431 | altPositiveButton: 432 | gravity: 1000 433 | dead: 0.001 434 | sensitivity: 1000 435 | snap: 0 436 | invert: 0 437 | type: 0 438 | axis: 0 439 | joyNum: 0 440 | - serializedVersion: 3 441 | m_Name: Debug Vertical 442 | descriptiveName: 443 | descriptiveNegativeName: 444 | negativeButton: down 445 | positiveButton: up 446 | altNegativeButton: 447 | altPositiveButton: 448 | gravity: 1000 449 | dead: 0.001 450 | sensitivity: 1000 451 | snap: 0 452 | invert: 0 453 | type: 0 454 | axis: 0 455 | joyNum: 0 456 | - serializedVersion: 3 457 | m_Name: Debug Vertical 458 | descriptiveName: 459 | descriptiveNegativeName: 460 | negativeButton: down 461 | positiveButton: up 462 | altNegativeButton: 463 | altPositiveButton: 464 | gravity: 1000 465 | dead: 0.001 466 | sensitivity: 1000 467 | snap: 0 468 | invert: 0 469 | type: 2 470 | axis: 6 471 | joyNum: 0 472 | - serializedVersion: 3 473 | m_Name: Debug Horizontal 474 | descriptiveName: 475 | descriptiveNegativeName: 476 | negativeButton: left 477 | positiveButton: right 478 | altNegativeButton: 479 | altPositiveButton: 480 | gravity: 1000 481 | dead: 0.001 482 | sensitivity: 1000 483 | snap: 0 484 | invert: 0 485 | type: 2 486 | axis: 5 487 | joyNum: 0 488 | m_UsePhysicalKeys: 1 489 | -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/MultiplayerManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!655991488 &1 4 | MultiplayerManager: 5 | m_ObjectHideFlags: 0 6 | m_EnableMultiplayerRoles: 0 7 | m_ActiveMultiplayerRole: 0 8 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | m_SeeAllPackageVersions: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_UserSelectedRegistryName: 29 | m_UserAddingNewScopedRegistry: 0 30 | m_RegistryInfoDraft: 31 | m_Modified: 0 32 | m_ErrorMessage: 33 | m_UserModificationsInstanceId: -830 34 | m_OriginalInstanceId: -832 35 | m_LoadAssets: 0 36 | -------------------------------------------------------------------------------- /ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "m_Dictionary": { 3 | "m_DictionaryValues": [] 4 | } 5 | } -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 27 7 | productGUID: edc99a95cee19b140b57c84826fbdefc 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: Boids-Unity-ComputeShader-Sandbox 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1920 46 | defaultScreenHeight: 1080 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 1 51 | unsupportedMSAAFallback: 0 52 | m_SpriteBatchVertexThreshold: 300 53 | m_MTRendering: 1 54 | mipStripping: 0 55 | numberOfMipsStripped: 0 56 | numberOfMipsStrippedPerMipmapLimitGroup: {} 57 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 58 | iosShowActivityIndicatorOnLoading: -1 59 | androidShowActivityIndicatorOnLoading: -1 60 | iosUseCustomAppBackgroundBehavior: 0 61 | allowedAutorotateToPortrait: 1 62 | allowedAutorotateToPortraitUpsideDown: 1 63 | allowedAutorotateToLandscapeRight: 1 64 | allowedAutorotateToLandscapeLeft: 1 65 | useOSAutorotation: 1 66 | use32BitDisplayBuffer: 1 67 | preserveFramebufferAlpha: 0 68 | disableDepthAndStencilBuffers: 0 69 | androidStartInFullscreen: 1 70 | androidRenderOutsideSafeArea: 1 71 | androidUseSwappy: 1 72 | androidBlitType: 0 73 | androidResizableWindow: 0 74 | androidDefaultWindowWidth: 1920 75 | androidDefaultWindowHeight: 1080 76 | androidMinimumWindowWidth: 400 77 | androidMinimumWindowHeight: 300 78 | androidFullscreenMode: 1 79 | androidAutoRotationBehavior: 1 80 | androidApplicationEntry: 2 81 | defaultIsNativeResolution: 1 82 | macRetinaSupport: 1 83 | runInBackground: 1 84 | captureSingleScreen: 0 85 | muteOtherAudioSources: 0 86 | Prepare IOS For Recording: 0 87 | Force IOS Speakers When Recording: 0 88 | deferSystemGesturesMode: 0 89 | hideHomeButton: 0 90 | submitAnalytics: 1 91 | usePlayerLog: 1 92 | dedicatedServerOptimizations: 0 93 | bakeCollisionMeshes: 0 94 | forceSingleInstance: 0 95 | useFlipModelSwapchain: 1 96 | resizableWindow: 0 97 | useMacAppStoreValidation: 0 98 | macAppStoreCategory: public.app-category.games 99 | gpuSkinning: 1 100 | meshDeformation: 2 101 | xboxPIXTextureCapture: 0 102 | xboxEnableAvatar: 0 103 | xboxEnableKinect: 0 104 | xboxEnableKinectAutoTracking: 0 105 | xboxEnableFitness: 0 106 | visibleInBackground: 1 107 | allowFullscreenSwitch: 1 108 | fullscreenMode: 1 109 | xboxSpeechDB: 0 110 | xboxEnableHeadOrientation: 0 111 | xboxEnableGuest: 0 112 | xboxEnablePIXSampling: 0 113 | metalFramebufferOnly: 0 114 | xboxOneResolution: 0 115 | xboxOneSResolution: 0 116 | xboxOneXResolution: 3 117 | xboxOneMonoLoggingLevel: 0 118 | xboxOneLoggingLevel: 1 119 | xboxOneDisableEsram: 0 120 | xboxOneEnableTypeOptimization: 0 121 | xboxOnePresentImmediateThreshold: 0 122 | switchQueueCommandMemory: 0 123 | switchQueueControlMemory: 16384 124 | switchQueueComputeMemory: 262144 125 | switchNVNShaderPoolsGranularity: 33554432 126 | switchNVNDefaultPoolsGranularity: 16777216 127 | switchNVNOtherPoolsGranularity: 16777216 128 | switchGpuScratchPoolGranularity: 2097152 129 | switchAllowGpuScratchShrinking: 0 130 | switchNVNMaxPublicTextureIDCount: 0 131 | switchNVNMaxPublicSamplerIDCount: 0 132 | switchMaxWorkerMultiple: 8 133 | switchNVNGraphicsFirmwareMemory: 32 134 | vulkanNumSwapchainBuffers: 3 135 | vulkanEnableSetSRGBWrite: 0 136 | vulkanEnablePreTransform: 1 137 | vulkanEnableLateAcquireNextImage: 0 138 | vulkanEnableCommandBufferRecycling: 1 139 | loadStoreDebugModeEnabled: 0 140 | bundleVersion: 0.1 141 | preloadedAssets: [] 142 | metroInputSource: 0 143 | wsaTransparentSwapchain: 0 144 | m_HolographicPauseOnTrackingLoss: 1 145 | xboxOneDisableKinectGpuReservation: 1 146 | xboxOneEnable7thCore: 1 147 | vrSettings: 148 | enable360StereoCapture: 0 149 | isWsaHolographicRemotingEnabled: 0 150 | enableFrameTimingStats: 0 151 | enableOpenGLProfilerGPURecorders: 1 152 | allowHDRDisplaySupport: 0 153 | useHDRDisplay: 0 154 | hdrBitDepth: 0 155 | m_ColorGamuts: 00000000 156 | targetPixelDensity: 30 157 | resolutionScalingMode: 0 158 | resetResolutionOnWindowResize: 0 159 | androidSupportedAspectRatio: 1 160 | androidMaxAspectRatio: 2.1 161 | androidMinAspectRatio: 1 162 | applicationIdentifier: {} 163 | buildNumber: 164 | Bratwurst: 0 165 | Standalone: 0 166 | iPhone: 0 167 | tvOS: 0 168 | overrideDefaultApplicationIdentifier: 0 169 | AndroidBundleVersionCode: 1 170 | AndroidMinSdkVersion: 23 171 | AndroidTargetSdkVersion: 0 172 | AndroidPreferredInstallLocation: 1 173 | aotOptions: 174 | stripEngineCode: 1 175 | iPhoneStrippingLevel: 0 176 | iPhoneScriptCallOptimization: 0 177 | ForceInternetPermission: 0 178 | ForceSDCardPermission: 0 179 | CreateWallpaper: 0 180 | androidSplitApplicationBinary: 0 181 | keepLoadedShadersAlive: 0 182 | StripUnusedMeshComponents: 1 183 | strictShaderVariantMatching: 0 184 | VertexChannelCompressionMask: 4054 185 | iPhoneSdkVersion: 988 186 | iOSTargetOSVersionString: 13.0 187 | tvOSSdkVersion: 0 188 | tvOSRequireExtendedGameController: 0 189 | tvOSTargetOSVersionString: 13.0 190 | bratwurstSdkVersion: 0 191 | bratwurstTargetOSVersionString: 13.0 192 | uIPrerenderedIcon: 0 193 | uIRequiresPersistentWiFi: 0 194 | uIRequiresFullScreen: 1 195 | uIStatusBarHidden: 1 196 | uIExitOnSuspend: 0 197 | uIStatusBarStyle: 0 198 | appleTVSplashScreen: {fileID: 0} 199 | appleTVSplashScreen2x: {fileID: 0} 200 | tvOSSmallIconLayers: [] 201 | tvOSSmallIconLayers2x: [] 202 | tvOSLargeIconLayers: [] 203 | tvOSLargeIconLayers2x: [] 204 | tvOSTopShelfImageLayers: [] 205 | tvOSTopShelfImageLayers2x: [] 206 | tvOSTopShelfImageWideLayers: [] 207 | tvOSTopShelfImageWideLayers2x: [] 208 | iOSLaunchScreenType: 0 209 | iOSLaunchScreenPortrait: {fileID: 0} 210 | iOSLaunchScreenLandscape: {fileID: 0} 211 | iOSLaunchScreenBackgroundColor: 212 | serializedVersion: 2 213 | rgba: 0 214 | iOSLaunchScreenFillPct: 100 215 | iOSLaunchScreenSize: 100 216 | iOSLaunchScreenCustomXibPath: 217 | iOSLaunchScreeniPadType: 0 218 | iOSLaunchScreeniPadImage: {fileID: 0} 219 | iOSLaunchScreeniPadBackgroundColor: 220 | serializedVersion: 2 221 | rgba: 0 222 | iOSLaunchScreeniPadFillPct: 100 223 | iOSLaunchScreeniPadSize: 100 224 | iOSLaunchScreeniPadCustomXibPath: 225 | iOSLaunchScreenCustomStoryboardPath: 226 | iOSLaunchScreeniPadCustomStoryboardPath: 227 | iOSDeviceRequirements: [] 228 | iOSURLSchemes: [] 229 | macOSURLSchemes: [] 230 | iOSBackgroundModes: 0 231 | iOSMetalForceHardShadows: 0 232 | metalEditorSupport: 1 233 | metalAPIValidation: 1 234 | iOSRenderExtraFrameOnPause: 0 235 | iosCopyPluginsCodeInsteadOfSymlink: 0 236 | appleDeveloperTeamID: 237 | iOSManualSigningProvisioningProfileID: 238 | tvOSManualSigningProvisioningProfileID: 239 | bratwurstManualSigningProvisioningProfileID: 240 | iOSManualSigningProvisioningProfileType: 0 241 | tvOSManualSigningProvisioningProfileType: 0 242 | bratwurstManualSigningProvisioningProfileType: 0 243 | appleEnableAutomaticSigning: 0 244 | iOSRequireARKit: 0 245 | iOSAutomaticallyDetectAndAddCapabilities: 1 246 | appleEnableProMotion: 0 247 | shaderPrecisionModel: 0 248 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 249 | templatePackageId: com.unity.template.3d@8.1.4 250 | templateDefaultScene: Assets/Scenes/SampleScene.unity 251 | useCustomMainManifest: 0 252 | useCustomLauncherManifest: 0 253 | useCustomMainGradleTemplate: 0 254 | useCustomLauncherGradleManifest: 0 255 | useCustomBaseGradleTemplate: 0 256 | useCustomGradlePropertiesTemplate: 0 257 | useCustomGradleSettingsTemplate: 0 258 | useCustomProguardFile: 0 259 | AndroidTargetArchitectures: 2 260 | AndroidTargetDevices: 0 261 | AndroidSplashScreenScale: 0 262 | androidSplashScreen: {fileID: 0} 263 | AndroidKeystoreName: 264 | AndroidKeyaliasName: 265 | AndroidEnableArmv9SecurityFeatures: 0 266 | AndroidEnableArm64MTE: 0 267 | AndroidBuildApkPerCpuArchitecture: 0 268 | AndroidTVCompatibility: 0 269 | AndroidIsGame: 1 270 | AndroidEnableTango: 0 271 | androidEnableBanner: 1 272 | androidUseLowAccuracyLocation: 0 273 | androidUseCustomKeystore: 0 274 | m_AndroidBanners: 275 | - width: 320 276 | height: 180 277 | banner: {fileID: 0} 278 | androidGamepadSupportLevel: 0 279 | chromeosInputEmulation: 1 280 | AndroidMinifyRelease: 0 281 | AndroidMinifyDebug: 0 282 | AndroidValidateAppBundleSize: 1 283 | AndroidAppBundleSizeToValidate: 150 284 | AndroidReportGooglePlayAppDependencies: 1 285 | m_BuildTargetIcons: [] 286 | m_BuildTargetPlatformIcons: [] 287 | m_BuildTargetBatching: 288 | - m_BuildTarget: Standalone 289 | m_StaticBatching: 1 290 | m_DynamicBatching: 0 291 | - m_BuildTarget: tvOS 292 | m_StaticBatching: 1 293 | m_DynamicBatching: 0 294 | - m_BuildTarget: Android 295 | m_StaticBatching: 1 296 | m_DynamicBatching: 0 297 | - m_BuildTarget: iPhone 298 | m_StaticBatching: 1 299 | m_DynamicBatching: 0 300 | - m_BuildTarget: WebGL 301 | m_StaticBatching: 0 302 | m_DynamicBatching: 0 303 | m_BuildTargetShaderSettings: [] 304 | m_BuildTargetGraphicsJobs: 305 | - m_BuildTarget: MacStandaloneSupport 306 | m_GraphicsJobs: 0 307 | - m_BuildTarget: Switch 308 | m_GraphicsJobs: 1 309 | - m_BuildTarget: MetroSupport 310 | m_GraphicsJobs: 1 311 | - m_BuildTarget: AppleTVSupport 312 | m_GraphicsJobs: 0 313 | - m_BuildTarget: BJMSupport 314 | m_GraphicsJobs: 1 315 | - m_BuildTarget: LinuxStandaloneSupport 316 | m_GraphicsJobs: 1 317 | - m_BuildTarget: PS4Player 318 | m_GraphicsJobs: 1 319 | - m_BuildTarget: iOSSupport 320 | m_GraphicsJobs: 0 321 | - m_BuildTarget: WindowsStandaloneSupport 322 | m_GraphicsJobs: 1 323 | - m_BuildTarget: XboxOnePlayer 324 | m_GraphicsJobs: 1 325 | - m_BuildTarget: LuminSupport 326 | m_GraphicsJobs: 0 327 | - m_BuildTarget: AndroidPlayer 328 | m_GraphicsJobs: 0 329 | - m_BuildTarget: WebGLSupport 330 | m_GraphicsJobs: 0 331 | m_BuildTargetGraphicsJobMode: 332 | - m_BuildTarget: PS4Player 333 | m_GraphicsJobMode: 0 334 | - m_BuildTarget: XboxOnePlayer 335 | m_GraphicsJobMode: 0 336 | m_BuildTargetGraphicsAPIs: 337 | - m_BuildTarget: AndroidPlayer 338 | m_APIs: 150000000b000000 339 | m_Automatic: 1 340 | - m_BuildTarget: iOSSupport 341 | m_APIs: 10000000 342 | m_Automatic: 1 343 | - m_BuildTarget: AppleTVSupport 344 | m_APIs: 10000000 345 | m_Automatic: 1 346 | - m_BuildTarget: WebGLSupport 347 | m_APIs: 0b000000 348 | m_Automatic: 1 349 | m_BuildTargetVRSettings: 350 | - m_BuildTarget: Standalone 351 | m_Enabled: 0 352 | m_Devices: 353 | - Oculus 354 | - OpenVR 355 | m_DefaultShaderChunkSizeInMB: 16 356 | m_DefaultShaderChunkCount: 0 357 | openGLRequireES31: 0 358 | openGLRequireES31AEP: 0 359 | openGLRequireES32: 0 360 | m_TemplateCustomTags: {} 361 | mobileMTRendering: 362 | Android: 1 363 | iPhone: 1 364 | tvOS: 1 365 | m_BuildTargetGroupLightmapEncodingQuality: 366 | - m_BuildTarget: Android 367 | m_EncodingQuality: 1 368 | - m_BuildTarget: iPhone 369 | m_EncodingQuality: 1 370 | - m_BuildTarget: tvOS 371 | m_EncodingQuality: 1 372 | m_BuildTargetGroupHDRCubemapEncodingQuality: 373 | - m_BuildTarget: Android 374 | m_EncodingQuality: 1 375 | - m_BuildTarget: iPhone 376 | m_EncodingQuality: 1 377 | - m_BuildTarget: tvOS 378 | m_EncodingQuality: 1 379 | m_BuildTargetGroupLightmapSettings: [] 380 | m_BuildTargetGroupLoadStoreDebugModeSettings: [] 381 | m_BuildTargetNormalMapEncoding: 382 | - m_BuildTarget: Android 383 | m_Encoding: 1 384 | - m_BuildTarget: iPhone 385 | m_Encoding: 1 386 | - m_BuildTarget: tvOS 387 | m_Encoding: 1 388 | m_BuildTargetDefaultTextureCompressionFormat: 389 | - serializedVersion: 2 390 | m_BuildTarget: Android 391 | m_Formats: 03000000 392 | playModeTestRunnerEnabled: 0 393 | runPlayModeTestAsEditModeTest: 0 394 | actionOnDotNetUnhandledException: 1 395 | enableInternalProfiler: 0 396 | logObjCUncaughtExceptions: 1 397 | enableCrashReportAPI: 0 398 | cameraUsageDescription: 399 | locationUsageDescription: 400 | microphoneUsageDescription: 401 | bluetoothUsageDescription: 402 | macOSTargetOSVersion: 10.13.0 403 | switchNMETAOverride: 404 | switchNetLibKey: 405 | switchSocketMemoryPoolSize: 6144 406 | switchSocketAllocatorPoolSize: 128 407 | switchSocketConcurrencyLimit: 14 408 | switchScreenResolutionBehavior: 2 409 | switchUseCPUProfiler: 0 410 | switchEnableFileSystemTrace: 0 411 | switchLTOSetting: 0 412 | switchApplicationID: 0x01004b9000490000 413 | switchNSODependencies: 414 | switchCompilerFlags: 415 | switchTitleNames_0: 416 | switchTitleNames_1: 417 | switchTitleNames_2: 418 | switchTitleNames_3: 419 | switchTitleNames_4: 420 | switchTitleNames_5: 421 | switchTitleNames_6: 422 | switchTitleNames_7: 423 | switchTitleNames_8: 424 | switchTitleNames_9: 425 | switchTitleNames_10: 426 | switchTitleNames_11: 427 | switchTitleNames_12: 428 | switchTitleNames_13: 429 | switchTitleNames_14: 430 | switchTitleNames_15: 431 | switchPublisherNames_0: 432 | switchPublisherNames_1: 433 | switchPublisherNames_2: 434 | switchPublisherNames_3: 435 | switchPublisherNames_4: 436 | switchPublisherNames_5: 437 | switchPublisherNames_6: 438 | switchPublisherNames_7: 439 | switchPublisherNames_8: 440 | switchPublisherNames_9: 441 | switchPublisherNames_10: 442 | switchPublisherNames_11: 443 | switchPublisherNames_12: 444 | switchPublisherNames_13: 445 | switchPublisherNames_14: 446 | switchPublisherNames_15: 447 | switchIcons_0: {fileID: 0} 448 | switchIcons_1: {fileID: 0} 449 | switchIcons_2: {fileID: 0} 450 | switchIcons_3: {fileID: 0} 451 | switchIcons_4: {fileID: 0} 452 | switchIcons_5: {fileID: 0} 453 | switchIcons_6: {fileID: 0} 454 | switchIcons_7: {fileID: 0} 455 | switchIcons_8: {fileID: 0} 456 | switchIcons_9: {fileID: 0} 457 | switchIcons_10: {fileID: 0} 458 | switchIcons_11: {fileID: 0} 459 | switchIcons_12: {fileID: 0} 460 | switchIcons_13: {fileID: 0} 461 | switchIcons_14: {fileID: 0} 462 | switchIcons_15: {fileID: 0} 463 | switchSmallIcons_0: {fileID: 0} 464 | switchSmallIcons_1: {fileID: 0} 465 | switchSmallIcons_2: {fileID: 0} 466 | switchSmallIcons_3: {fileID: 0} 467 | switchSmallIcons_4: {fileID: 0} 468 | switchSmallIcons_5: {fileID: 0} 469 | switchSmallIcons_6: {fileID: 0} 470 | switchSmallIcons_7: {fileID: 0} 471 | switchSmallIcons_8: {fileID: 0} 472 | switchSmallIcons_9: {fileID: 0} 473 | switchSmallIcons_10: {fileID: 0} 474 | switchSmallIcons_11: {fileID: 0} 475 | switchSmallIcons_12: {fileID: 0} 476 | switchSmallIcons_13: {fileID: 0} 477 | switchSmallIcons_14: {fileID: 0} 478 | switchSmallIcons_15: {fileID: 0} 479 | switchManualHTML: 480 | switchAccessibleURLs: 481 | switchLegalInformation: 482 | switchMainThreadStackSize: 1048576 483 | switchPresenceGroupId: 484 | switchLogoHandling: 0 485 | switchReleaseVersion: 0 486 | switchDisplayVersion: 1.0.0 487 | switchStartupUserAccount: 0 488 | switchSupportedLanguagesMask: 0 489 | switchLogoType: 0 490 | switchApplicationErrorCodeCategory: 491 | switchUserAccountSaveDataSize: 0 492 | switchUserAccountSaveDataJournalSize: 0 493 | switchApplicationAttribute: 0 494 | switchCardSpecSize: -1 495 | switchCardSpecClock: -1 496 | switchRatingsMask: 0 497 | switchRatingsInt_0: 0 498 | switchRatingsInt_1: 0 499 | switchRatingsInt_2: 0 500 | switchRatingsInt_3: 0 501 | switchRatingsInt_4: 0 502 | switchRatingsInt_5: 0 503 | switchRatingsInt_6: 0 504 | switchRatingsInt_7: 0 505 | switchRatingsInt_8: 0 506 | switchRatingsInt_9: 0 507 | switchRatingsInt_10: 0 508 | switchRatingsInt_11: 0 509 | switchRatingsInt_12: 0 510 | switchLocalCommunicationIds_0: 511 | switchLocalCommunicationIds_1: 512 | switchLocalCommunicationIds_2: 513 | switchLocalCommunicationIds_3: 514 | switchLocalCommunicationIds_4: 515 | switchLocalCommunicationIds_5: 516 | switchLocalCommunicationIds_6: 517 | switchLocalCommunicationIds_7: 518 | switchParentalControl: 0 519 | switchAllowsScreenshot: 1 520 | switchAllowsVideoCapturing: 1 521 | switchAllowsRuntimeAddOnContentInstall: 0 522 | switchDataLossConfirmation: 0 523 | switchUserAccountLockEnabled: 0 524 | switchSystemResourceMemory: 16777216 525 | switchSupportedNpadStyles: 22 526 | switchNativeFsCacheSize: 32 527 | switchIsHoldTypeHorizontal: 0 528 | switchSupportedNpadCount: 8 529 | switchEnableTouchScreen: 1 530 | switchSocketConfigEnabled: 0 531 | switchTcpInitialSendBufferSize: 32 532 | switchTcpInitialReceiveBufferSize: 64 533 | switchTcpAutoSendBufferSizeMax: 256 534 | switchTcpAutoReceiveBufferSizeMax: 256 535 | switchUdpSendBufferSize: 9 536 | switchUdpReceiveBufferSize: 42 537 | switchSocketBufferEfficiency: 4 538 | switchSocketInitializeEnabled: 1 539 | switchNetworkInterfaceManagerInitializeEnabled: 1 540 | switchDisableHTCSPlayerConnection: 0 541 | switchUseNewStyleFilepaths: 1 542 | switchUseLegacyFmodPriorities: 0 543 | switchUseMicroSleepForYield: 1 544 | switchEnableRamDiskSupport: 0 545 | switchMicroSleepForYieldTime: 25 546 | switchRamDiskSpaceSize: 12 547 | ps4NPAgeRating: 12 548 | ps4NPTitleSecret: 549 | ps4NPTrophyPackPath: 550 | ps4ParentalLevel: 11 551 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 552 | ps4Category: 0 553 | ps4MasterVersion: 01.00 554 | ps4AppVersion: 01.00 555 | ps4AppType: 0 556 | ps4ParamSfxPath: 557 | ps4VideoOutPixelFormat: 0 558 | ps4VideoOutInitialWidth: 1920 559 | ps4VideoOutBaseModeInitialWidth: 1920 560 | ps4VideoOutReprojectionRate: 60 561 | ps4PronunciationXMLPath: 562 | ps4PronunciationSIGPath: 563 | ps4BackgroundImagePath: 564 | ps4StartupImagePath: 565 | ps4StartupImagesFolder: 566 | ps4IconImagesFolder: 567 | ps4SaveDataImagePath: 568 | ps4SdkOverride: 569 | ps4BGMPath: 570 | ps4ShareFilePath: 571 | ps4ShareOverlayImagePath: 572 | ps4PrivacyGuardImagePath: 573 | ps4ExtraSceSysFile: 574 | ps4NPtitleDatPath: 575 | ps4RemotePlayKeyAssignment: -1 576 | ps4RemotePlayKeyMappingDir: 577 | ps4PlayTogetherPlayerCount: 0 578 | ps4EnterButtonAssignment: 1 579 | ps4ApplicationParam1: 0 580 | ps4ApplicationParam2: 0 581 | ps4ApplicationParam3: 0 582 | ps4ApplicationParam4: 0 583 | ps4DownloadDataSize: 0 584 | ps4GarlicHeapSize: 2048 585 | ps4ProGarlicHeapSize: 2560 586 | playerPrefsMaxSize: 32768 587 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 588 | ps4pnSessions: 1 589 | ps4pnPresence: 1 590 | ps4pnFriends: 1 591 | ps4pnGameCustomData: 1 592 | playerPrefsSupport: 0 593 | enableApplicationExit: 0 594 | resetTempFolder: 1 595 | restrictedAudioUsageRights: 0 596 | ps4UseResolutionFallback: 0 597 | ps4ReprojectionSupport: 0 598 | ps4UseAudio3dBackend: 0 599 | ps4UseLowGarlicFragmentationMode: 1 600 | ps4SocialScreenEnabled: 0 601 | ps4ScriptOptimizationLevel: 0 602 | ps4Audio3dVirtualSpeakerCount: 14 603 | ps4attribCpuUsage: 0 604 | ps4PatchPkgPath: 605 | ps4PatchLatestPkgPath: 606 | ps4PatchChangeinfoPath: 607 | ps4PatchDayOne: 0 608 | ps4attribUserManagement: 0 609 | ps4attribMoveSupport: 0 610 | ps4attrib3DSupport: 0 611 | ps4attribShareSupport: 0 612 | ps4attribExclusiveVR: 0 613 | ps4disableAutoHideSplash: 0 614 | ps4videoRecordingFeaturesUsed: 0 615 | ps4contentSearchFeaturesUsed: 0 616 | ps4CompatibilityPS5: 0 617 | ps4AllowPS5Detection: 0 618 | ps4GPU800MHz: 1 619 | ps4attribEyeToEyeDistanceSettingVR: 0 620 | ps4IncludedModules: [] 621 | ps4attribVROutputEnabled: 0 622 | monoEnv: 623 | splashScreenBackgroundSourceLandscape: {fileID: 0} 624 | splashScreenBackgroundSourcePortrait: {fileID: 0} 625 | blurSplashScreenBackground: 1 626 | spritePackerPolicy: 627 | webGLMemorySize: 16 628 | webGLExceptionSupport: 1 629 | webGLNameFilesAsHashes: 0 630 | webGLShowDiagnostics: 0 631 | webGLDataCaching: 1 632 | webGLDebugSymbols: 0 633 | webGLEmscriptenArgs: 634 | webGLModulesDirectory: 635 | webGLTemplate: APPLICATION:Default 636 | webGLAnalyzeBuildSize: 0 637 | webGLUseEmbeddedResources: 0 638 | webGLCompressionFormat: 1 639 | webGLWasmArithmeticExceptions: 0 640 | webGLLinkerTarget: 1 641 | webGLThreadsSupport: 0 642 | webGLDecompressionFallback: 0 643 | webGLInitialMemorySize: 32 644 | webGLMaximumMemorySize: 2048 645 | webGLMemoryGrowthMode: 2 646 | webGLMemoryLinearGrowthStep: 16 647 | webGLMemoryGeometricGrowthStep: 0.2 648 | webGLMemoryGeometricGrowthCap: 96 649 | webGLEnableWebGPU: 0 650 | webGLPowerPreference: 2 651 | webGLWebAssemblyTable: 0 652 | webGLWebAssemblyBigInt: 0 653 | webGLCloseOnQuit: 0 654 | scriptingDefineSymbols: {} 655 | additionalCompilerArguments: {} 656 | platformArchitecture: {} 657 | scriptingBackend: 658 | Android: 1 659 | il2cppCompilerConfiguration: {} 660 | il2cppCodeGeneration: {} 661 | il2cppStacktraceInformation: {} 662 | managedStrippingLevel: 663 | Android: 1 664 | Bratwurst: 1 665 | EmbeddedLinux: 1 666 | GameCoreScarlett: 1 667 | GameCoreXboxOne: 1 668 | Nintendo Switch: 1 669 | PS4: 1 670 | PS5: 1 671 | QNX: 1 672 | WebGL: 1 673 | Windows Store Apps: 1 674 | XboxOne: 1 675 | iPhone: 1 676 | tvOS: 1 677 | incrementalIl2cppBuild: {} 678 | suppressCommonWarnings: 1 679 | allowUnsafeCode: 0 680 | useDeterministicCompilation: 1 681 | additionalIl2CppArgs: 682 | scriptingRuntimeVersion: 1 683 | gcIncremental: 1 684 | gcWBarrierValidation: 0 685 | apiCompatibilityLevelPerPlatform: {} 686 | editorAssembliesCompatibilityLevel: 1 687 | m_RenderingPath: 1 688 | m_MobileRenderingPath: 1 689 | metroPackageName: Boids-Unity-ComputeShader-Sandbox 690 | metroPackageVersion: 691 | metroCertificatePath: 692 | metroCertificatePassword: 693 | metroCertificateSubject: 694 | metroCertificateIssuer: 695 | metroCertificateNotAfter: 0000000000000000 696 | metroApplicationDescription: Boids-Unity-ComputeShader-Sandbox 697 | wsaImages: {} 698 | metroTileShortName: 699 | metroTileShowName: 0 700 | metroMediumTileShowName: 0 701 | metroLargeTileShowName: 0 702 | metroWideTileShowName: 0 703 | metroSupportStreamingInstall: 0 704 | metroLastRequiredScene: 0 705 | metroDefaultTileSize: 1 706 | metroTileForegroundText: 2 707 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 708 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} 709 | metroSplashScreenUseBackgroundColor: 0 710 | platformCapabilities: {} 711 | metroTargetDeviceFamilies: {} 712 | metroFTAName: 713 | metroFTAFileTypes: [] 714 | metroProtocolName: 715 | vcxProjDefaultLanguage: 716 | XboxOneProductId: 717 | XboxOneUpdateKey: 718 | XboxOneSandboxId: 719 | XboxOneContentId: 720 | XboxOneTitleId: 721 | XboxOneSCId: 722 | XboxOneGameOsOverridePath: 723 | XboxOnePackagingOverridePath: 724 | XboxOneAppManifestOverridePath: 725 | XboxOneVersion: 1.0.0.0 726 | XboxOnePackageEncryption: 0 727 | XboxOnePackageUpdateGranularity: 2 728 | XboxOneDescription: 729 | XboxOneLanguage: 730 | - enus 731 | XboxOneCapability: [] 732 | XboxOneGameRating: {} 733 | XboxOneIsContentPackage: 0 734 | XboxOneEnhancedXboxCompatibilityMode: 0 735 | XboxOneEnableGPUVariability: 1 736 | XboxOneSockets: {} 737 | XboxOneSplashScreen: {fileID: 0} 738 | XboxOneAllowedProductIds: [] 739 | XboxOnePersistentLocalStorageSize: 0 740 | XboxOneXTitleMemory: 8 741 | XboxOneOverrideIdentityName: 742 | XboxOneOverrideIdentityPublisher: 743 | vrEditorSettings: {} 744 | cloudServicesEnabled: 745 | UNet: 1 746 | luminIcon: 747 | m_Name: 748 | m_ModelFolderPath: 749 | m_PortalFolderPath: 750 | luminCert: 751 | m_CertPath: 752 | m_SignPackage: 1 753 | luminIsChannelApp: 0 754 | luminVersion: 755 | m_VersionCode: 1 756 | m_VersionName: 757 | hmiPlayerDataPath: 758 | hmiForceSRGBBlit: 0 759 | embeddedLinuxEnableGamepadInput: 0 760 | hmiCpuConfiguration: 761 | hmiLogStartupTiming: 0 762 | qnxGraphicConfPath: 763 | apiCompatibilityLevel: 6 764 | captureStartupLogs: {} 765 | activeInputHandler: 0 766 | windowsGamepadBackendHint: 0 767 | cloudProjectId: 768 | framebufferDepthMemorylessMode: 0 769 | qualitySettingsNames: [] 770 | projectName: 771 | organizationId: 772 | cloudEnabled: 0 773 | legacyClampBlendShapeWeights: 0 774 | hmiLoadingImage: {fileID: 0} 775 | platformRequiresReadableAssets: 0 776 | virtualTexturingSupportEnabled: 0 777 | insecureHttpOption: 0 778 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2023.2.9f1 2 | m_EditorVersionWithRevision: 2023.2.9f1 (0c9c2e1f4bef) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 4 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 1 22 | globalTextureMipmapLimit: 1 23 | textureMipmapLimitSettings: [] 24 | anisotropicTextures: 0 25 | antiAliasing: 0 26 | softParticles: 0 27 | softVegetation: 0 28 | realtimeReflectionProbes: 0 29 | billboardsFaceCameraPosition: 0 30 | useLegacyDetailDistribution: 1 31 | adaptiveVsync: 0 32 | vSyncCount: 0 33 | realtimeGICPUUsage: 25 34 | adaptiveVsyncExtraA: 0 35 | adaptiveVsyncExtraB: 0 36 | lodBias: 0.3 37 | maximumLODLevel: 0 38 | enableLODCrossFade: 1 39 | streamingMipmapsActive: 0 40 | streamingMipmapsAddAllCameras: 1 41 | streamingMipmapsMemoryBudget: 512 42 | streamingMipmapsRenderersPerFrame: 512 43 | streamingMipmapsMaxLevelReduction: 2 44 | streamingMipmapsMaxFileIORequests: 1024 45 | particleRaycastBudget: 4 46 | asyncUploadTimeSlice: 2 47 | asyncUploadBufferSize: 16 48 | asyncUploadPersistentBuffer: 1 49 | resolutionScalingFixedDPIFactor: 1 50 | customRenderPipeline: {fileID: 0} 51 | terrainQualityOverrides: 0 52 | terrainPixelError: 1 53 | terrainDetailDensityScale: 1 54 | terrainBasemapDistance: 1000 55 | terrainDetailDistance: 80 56 | terrainTreeDistance: 5000 57 | terrainBillboardStart: 50 58 | terrainFadeLength: 5 59 | terrainMaxTrees: 50 60 | excludedTargetPlatforms: [] 61 | - serializedVersion: 4 62 | name: Low 63 | pixelLightCount: 0 64 | shadows: 0 65 | shadowResolution: 0 66 | shadowProjection: 1 67 | shadowCascades: 1 68 | shadowDistance: 20 69 | shadowNearPlaneOffset: 3 70 | shadowCascade2Split: 0.33333334 71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 72 | shadowmaskMode: 0 73 | skinWeights: 2 74 | globalTextureMipmapLimit: 0 75 | textureMipmapLimitSettings: [] 76 | anisotropicTextures: 0 77 | antiAliasing: 0 78 | softParticles: 0 79 | softVegetation: 0 80 | realtimeReflectionProbes: 0 81 | billboardsFaceCameraPosition: 0 82 | useLegacyDetailDistribution: 1 83 | adaptiveVsync: 0 84 | vSyncCount: 0 85 | realtimeGICPUUsage: 25 86 | adaptiveVsyncExtraA: 0 87 | adaptiveVsyncExtraB: 0 88 | lodBias: 0.4 89 | maximumLODLevel: 0 90 | enableLODCrossFade: 1 91 | streamingMipmapsActive: 0 92 | streamingMipmapsAddAllCameras: 1 93 | streamingMipmapsMemoryBudget: 512 94 | streamingMipmapsRenderersPerFrame: 512 95 | streamingMipmapsMaxLevelReduction: 2 96 | streamingMipmapsMaxFileIORequests: 1024 97 | particleRaycastBudget: 16 98 | asyncUploadTimeSlice: 2 99 | asyncUploadBufferSize: 16 100 | asyncUploadPersistentBuffer: 1 101 | resolutionScalingFixedDPIFactor: 1 102 | customRenderPipeline: {fileID: 0} 103 | terrainQualityOverrides: 0 104 | terrainPixelError: 1 105 | terrainDetailDensityScale: 1 106 | terrainBasemapDistance: 1000 107 | terrainDetailDistance: 80 108 | terrainTreeDistance: 5000 109 | terrainBillboardStart: 50 110 | terrainFadeLength: 5 111 | terrainMaxTrees: 50 112 | excludedTargetPlatforms: [] 113 | - serializedVersion: 4 114 | name: Medium 115 | pixelLightCount: 1 116 | shadows: 1 117 | shadowResolution: 0 118 | shadowProjection: 1 119 | shadowCascades: 1 120 | shadowDistance: 20 121 | shadowNearPlaneOffset: 3 122 | shadowCascade2Split: 0.33333334 123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 124 | shadowmaskMode: 0 125 | skinWeights: 2 126 | globalTextureMipmapLimit: 0 127 | textureMipmapLimitSettings: [] 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 0 132 | realtimeReflectionProbes: 0 133 | billboardsFaceCameraPosition: 0 134 | useLegacyDetailDistribution: 1 135 | adaptiveVsync: 0 136 | vSyncCount: 1 137 | realtimeGICPUUsage: 25 138 | adaptiveVsyncExtraA: 0 139 | adaptiveVsyncExtraB: 0 140 | lodBias: 0.7 141 | maximumLODLevel: 0 142 | enableLODCrossFade: 1 143 | streamingMipmapsActive: 0 144 | streamingMipmapsAddAllCameras: 1 145 | streamingMipmapsMemoryBudget: 512 146 | streamingMipmapsRenderersPerFrame: 512 147 | streamingMipmapsMaxLevelReduction: 2 148 | streamingMipmapsMaxFileIORequests: 1024 149 | particleRaycastBudget: 64 150 | asyncUploadTimeSlice: 2 151 | asyncUploadBufferSize: 16 152 | asyncUploadPersistentBuffer: 1 153 | resolutionScalingFixedDPIFactor: 1 154 | customRenderPipeline: {fileID: 0} 155 | terrainQualityOverrides: 0 156 | terrainPixelError: 1 157 | terrainDetailDensityScale: 1 158 | terrainBasemapDistance: 1000 159 | terrainDetailDistance: 80 160 | terrainTreeDistance: 5000 161 | terrainBillboardStart: 50 162 | terrainFadeLength: 5 163 | terrainMaxTrees: 50 164 | excludedTargetPlatforms: [] 165 | - serializedVersion: 4 166 | name: High 167 | pixelLightCount: 2 168 | shadows: 2 169 | shadowResolution: 1 170 | shadowProjection: 1 171 | shadowCascades: 2 172 | shadowDistance: 40 173 | shadowNearPlaneOffset: 3 174 | shadowCascade2Split: 0.33333334 175 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 176 | shadowmaskMode: 1 177 | skinWeights: 2 178 | globalTextureMipmapLimit: 0 179 | textureMipmapLimitSettings: [] 180 | anisotropicTextures: 1 181 | antiAliasing: 0 182 | softParticles: 0 183 | softVegetation: 1 184 | realtimeReflectionProbes: 1 185 | billboardsFaceCameraPosition: 1 186 | useLegacyDetailDistribution: 1 187 | adaptiveVsync: 0 188 | vSyncCount: 1 189 | realtimeGICPUUsage: 50 190 | adaptiveVsyncExtraA: 0 191 | adaptiveVsyncExtraB: 0 192 | lodBias: 1 193 | maximumLODLevel: 0 194 | enableLODCrossFade: 1 195 | streamingMipmapsActive: 0 196 | streamingMipmapsAddAllCameras: 1 197 | streamingMipmapsMemoryBudget: 512 198 | streamingMipmapsRenderersPerFrame: 512 199 | streamingMipmapsMaxLevelReduction: 2 200 | streamingMipmapsMaxFileIORequests: 1024 201 | particleRaycastBudget: 256 202 | asyncUploadTimeSlice: 2 203 | asyncUploadBufferSize: 16 204 | asyncUploadPersistentBuffer: 1 205 | resolutionScalingFixedDPIFactor: 1 206 | customRenderPipeline: {fileID: 0} 207 | terrainQualityOverrides: 0 208 | terrainPixelError: 1 209 | terrainDetailDensityScale: 1 210 | terrainBasemapDistance: 1000 211 | terrainDetailDistance: 80 212 | terrainTreeDistance: 5000 213 | terrainBillboardStart: 50 214 | terrainFadeLength: 5 215 | terrainMaxTrees: 50 216 | excludedTargetPlatforms: [] 217 | - serializedVersion: 4 218 | name: Very High 219 | pixelLightCount: 3 220 | shadows: 2 221 | shadowResolution: 2 222 | shadowProjection: 1 223 | shadowCascades: 2 224 | shadowDistance: 70 225 | shadowNearPlaneOffset: 3 226 | shadowCascade2Split: 0.33333334 227 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 228 | shadowmaskMode: 1 229 | skinWeights: 4 230 | globalTextureMipmapLimit: 0 231 | textureMipmapLimitSettings: [] 232 | anisotropicTextures: 2 233 | antiAliasing: 2 234 | softParticles: 1 235 | softVegetation: 1 236 | realtimeReflectionProbes: 1 237 | billboardsFaceCameraPosition: 1 238 | useLegacyDetailDistribution: 1 239 | adaptiveVsync: 0 240 | vSyncCount: 1 241 | realtimeGICPUUsage: 50 242 | adaptiveVsyncExtraA: 0 243 | adaptiveVsyncExtraB: 0 244 | lodBias: 1.5 245 | maximumLODLevel: 0 246 | enableLODCrossFade: 1 247 | streamingMipmapsActive: 0 248 | streamingMipmapsAddAllCameras: 1 249 | streamingMipmapsMemoryBudget: 512 250 | streamingMipmapsRenderersPerFrame: 512 251 | streamingMipmapsMaxLevelReduction: 2 252 | streamingMipmapsMaxFileIORequests: 1024 253 | particleRaycastBudget: 1024 254 | asyncUploadTimeSlice: 2 255 | asyncUploadBufferSize: 16 256 | asyncUploadPersistentBuffer: 1 257 | resolutionScalingFixedDPIFactor: 1 258 | customRenderPipeline: {fileID: 0} 259 | terrainQualityOverrides: 0 260 | terrainPixelError: 1 261 | terrainDetailDensityScale: 1 262 | terrainBasemapDistance: 1000 263 | terrainDetailDistance: 80 264 | terrainTreeDistance: 5000 265 | terrainBillboardStart: 50 266 | terrainFadeLength: 5 267 | terrainMaxTrees: 50 268 | excludedTargetPlatforms: [] 269 | - serializedVersion: 4 270 | name: Ultra 271 | pixelLightCount: 4 272 | shadows: 2 273 | shadowResolution: 2 274 | shadowProjection: 1 275 | shadowCascades: 4 276 | shadowDistance: 150 277 | shadowNearPlaneOffset: 3 278 | shadowCascade2Split: 0.33333334 279 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 280 | shadowmaskMode: 1 281 | skinWeights: 4 282 | globalTextureMipmapLimit: 0 283 | textureMipmapLimitSettings: [] 284 | anisotropicTextures: 2 285 | antiAliasing: 0 286 | softParticles: 1 287 | softVegetation: 1 288 | realtimeReflectionProbes: 1 289 | billboardsFaceCameraPosition: 1 290 | useLegacyDetailDistribution: 1 291 | adaptiveVsync: 0 292 | vSyncCount: 1 293 | realtimeGICPUUsage: 100 294 | adaptiveVsyncExtraA: 0 295 | adaptiveVsyncExtraB: 0 296 | lodBias: 2 297 | maximumLODLevel: 0 298 | enableLODCrossFade: 1 299 | streamingMipmapsActive: 0 300 | streamingMipmapsAddAllCameras: 1 301 | streamingMipmapsMemoryBudget: 512 302 | streamingMipmapsRenderersPerFrame: 512 303 | streamingMipmapsMaxLevelReduction: 2 304 | streamingMipmapsMaxFileIORequests: 1024 305 | particleRaycastBudget: 4096 306 | asyncUploadTimeSlice: 2 307 | asyncUploadBufferSize: 16 308 | asyncUploadPersistentBuffer: 1 309 | resolutionScalingFixedDPIFactor: 1 310 | customRenderPipeline: {fileID: 0} 311 | terrainQualityOverrides: 0 312 | terrainPixelError: 1 313 | terrainDetailDensityScale: 1 314 | terrainBasemapDistance: 1000 315 | terrainDetailDistance: 80 316 | terrainTreeDistance: 5000 317 | terrainBillboardStart: 50 318 | terrainFadeLength: 5 319 | terrainMaxTrees: 50 320 | excludedTargetPlatforms: [] 321 | m_TextureMipmapLimitGroupNames: [] 322 | m_PerPlatformDefaultQuality: 323 | Android: 2 324 | GameCoreScarlett: 5 325 | GameCoreXboxOne: 5 326 | Lumin: 5 327 | Nintendo 3DS: 5 328 | Nintendo Switch: 5 329 | PS4: 5 330 | PS5: 5 331 | Stadia: 5 332 | Standalone: 5 333 | WebGL: 3 334 | Windows Store Apps: 5 335 | XboxOne: 5 336 | iPhone: 2 337 | tvOS: 2 338 | -------------------------------------------------------------------------------- /ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "defaultInstantiationMode": 0 8 | }, 9 | { 10 | "userAdded": false, 11 | "type": "UnityEditor.Animations.AnimatorController", 12 | "defaultInstantiationMode": 0 13 | }, 14 | { 15 | "userAdded": false, 16 | "type": "UnityEngine.AnimatorOverrideController", 17 | "defaultInstantiationMode": 0 18 | }, 19 | { 20 | "userAdded": false, 21 | "type": "UnityEditor.Audio.AudioMixerController", 22 | "defaultInstantiationMode": 0 23 | }, 24 | { 25 | "userAdded": false, 26 | "type": "UnityEngine.ComputeShader", 27 | "defaultInstantiationMode": 1 28 | }, 29 | { 30 | "userAdded": false, 31 | "type": "UnityEngine.Cubemap", 32 | "defaultInstantiationMode": 0 33 | }, 34 | { 35 | "userAdded": false, 36 | "type": "UnityEngine.GameObject", 37 | "defaultInstantiationMode": 0 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEditor.LightingDataAsset", 42 | "defaultInstantiationMode": 0 43 | }, 44 | { 45 | "userAdded": false, 46 | "type": "UnityEngine.LightingSettings", 47 | "defaultInstantiationMode": 0 48 | }, 49 | { 50 | "userAdded": false, 51 | "type": "UnityEngine.Material", 52 | "defaultInstantiationMode": 0 53 | }, 54 | { 55 | "userAdded": false, 56 | "type": "UnityEditor.MonoScript", 57 | "defaultInstantiationMode": 1 58 | }, 59 | { 60 | "userAdded": false, 61 | "type": "UnityEngine.PhysicMaterial", 62 | "defaultInstantiationMode": 0 63 | }, 64 | { 65 | "userAdded": false, 66 | "type": "UnityEngine.PhysicsMaterial2D", 67 | "defaultInstantiationMode": 0 68 | }, 69 | { 70 | "userAdded": false, 71 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 72 | "defaultInstantiationMode": 0 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 77 | "defaultInstantiationMode": 0 78 | }, 79 | { 80 | "userAdded": false, 81 | "type": "UnityEngine.Rendering.VolumeProfile", 82 | "defaultInstantiationMode": 0 83 | }, 84 | { 85 | "userAdded": false, 86 | "type": "UnityEditor.SceneAsset", 87 | "defaultInstantiationMode": 1 88 | }, 89 | { 90 | "userAdded": false, 91 | "type": "UnityEngine.Shader", 92 | "defaultInstantiationMode": 1 93 | }, 94 | { 95 | "userAdded": false, 96 | "type": "UnityEngine.ShaderVariantCollection", 97 | "defaultInstantiationMode": 1 98 | }, 99 | { 100 | "userAdded": false, 101 | "type": "UnityEngine.Texture", 102 | "defaultInstantiationMode": 0 103 | }, 104 | { 105 | "userAdded": false, 106 | "type": "UnityEngine.Texture2D", 107 | "defaultInstantiationMode": 0 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Timeline.TimelineAsset", 112 | "defaultInstantiationMode": 0 113 | } 114 | ], 115 | "defaultDependencyTypeInfo": { 116 | "userAdded": false, 117 | "type": "", 118 | "defaultInstantiationMode": 1 119 | }, 120 | "newSceneOverride": 0 121 | } -------------------------------------------------------------------------------- /ProjectSettings/ShaderGraphSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 53 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de02f9e1d18f588468e474319d09a723, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | customInterpolatorErrorThreshold: 32 16 | customInterpolatorWarningThreshold: 16 17 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/URPProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_LastMaterialVersion: 9 16 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | m_PackageRequiringCoreStatsPresent: 0 27 | UnityAdsSettings: 28 | m_Enabled: 0 29 | m_InitializeOnStartup: 1 30 | m_TestMode: 0 31 | m_IosGameId: 32 | m_AndroidGameId: 33 | m_GameIds: {} 34 | m_GameId: 35 | PerformanceReportingSettings: 36 | m_Enabled: 0 37 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 7200000, guid: 84a17cfa13e40ae4082ef42714f0a81c, type: 3} 7 | m_CopyBufferShader: {fileID: 7200000, guid: 23c51f21a3503f6428b527b01f8a2f4e, type: 3} 8 | m_SortShader: {fileID: 7200000, guid: ea257ca3cfb12a642a5025e612af6b2a, type: 3} 9 | m_StripUpdateShader: {fileID: 7200000, guid: 8fa6c4009fe2a4d4486c62736fc30ad8, type: 3} 10 | m_EmptyShader: {fileID: 4800000, guid: 33a2079f6a2db4c4eb2e44b33f4ddf6b, type: 3} 11 | m_RenderPipeSettingsPath: 12 | m_FixedTimeStep: 0.016666668 13 | m_MaxDeltaTime: 0.05 14 | m_MaxScrubTime: 30 15 | m_MaxCapacity: 100000000 16 | m_CompiledVersion: 7 17 | m_RuntimeVersion: 36 18 | m_RuntimeResources: {fileID: 11400000, guid: bc10b42afe3813544bffd38ae2cd893d, type: 2} 19 | m_BatchEmptyLifetime: 300 20 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Boids Unity Compute Shader Sandbox 2 | 3 | https://github.com/drumath2237/Boids-Unity-ComputeShader-Sandbox/assets/11372210/3efabf57-5215-4378-bd9f-0d80f6ffc6c2 4 | 5 | ## About 6 | 7 | Boids simulation implemented with Compute Shader and VFX Graph. 8 | 9 | ## Environment 10 | 11 | - Windows 10 Home 12 | - Unity 2023.2.9f1 13 | - URP 16.0.5 14 | - Visual Effect Graph 15 | 16 | ## Usage 17 | 18 | Open the scene in `Assets\BoidsComputerShaderSandbox\Scenes\Main.unity`. 19 | 20 | You can set boids entity count by changing number in the inspector of `BoidsVisualizer`. 21 | **Note that, you should re-enable the BoidsVisualzer game object when changing boids count value.** 22 | 23 | ![boids](./docs/unity-boids.png) 24 | 25 | ## Author 26 | 27 | [にー兄さん@drumath2237](https://twitter.com/ninisan_drumath) 28 | -------------------------------------------------------------------------------- /UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | RecentlyUsedSceneGuid-0: 9 | value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a 10 | flags: 0 11 | RecentlyUsedSceneGuid-1: 12 | value: 53020c005750585f5f5d5e76127b5944471619282e2a7e317d7c446ab4b2353b 13 | flags: 0 14 | vcSharedLogLevel: 15 | value: 0d5e400f0650 16 | flags: 0 17 | m_VCAutomaticAdd: 1 18 | m_VCDebugCom: 0 19 | m_VCDebugCmd: 0 20 | m_VCDebugOut: 0 21 | m_SemanticMergeMode: 2 22 | m_DesiredImportWorkerCount: 2 23 | m_StandbyImportWorkerCount: 2 24 | m_IdleImportWorkerShutdownDelay: 60000 25 | m_VCShowFailedCheckout: 1 26 | m_VCOverwriteFailedCheckoutAssets: 1 27 | m_VCProjectOverlayIcons: 1 28 | m_VCHierarchyOverlayIcons: 1 29 | m_VCOtherOverlayIcons: 1 30 | m_VCAllowAsyncUpdate: 1 31 | m_ArtifactGarbageCollection: 1 32 | m_CompressAssetsOnImport: 1 33 | -------------------------------------------------------------------------------- /UserSettings/Search.index: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Assets", 3 | "roots": ["Assets"], 4 | "includes": [], 5 | "excludes": [], 6 | "options": { 7 | "types": true, 8 | "properties": true, 9 | "extended": false, 10 | "dependencies": true 11 | }, 12 | "baseScore": 999 13 | } -------------------------------------------------------------------------------- /UserSettings/Search.settings: -------------------------------------------------------------------------------- 1 | trackSelection = true 2 | refreshSearchWindowsInPlayMode = false 3 | fetchPreview = true 4 | defaultFlags = 0 5 | keepOpen = false 6 | queryFolder = "Assets" 7 | onBoardingDoNotAskAgain = true 8 | showPackageIndexes = false 9 | showStatusBar = false 10 | scopes = { 11 | } 12 | providers = { 13 | performance = { 14 | active = false 15 | priority = 100 16 | defaultAction = null 17 | } 18 | packages = { 19 | active = true 20 | priority = 90 21 | defaultAction = null 22 | } 23 | scene = { 24 | active = true 25 | priority = 50 26 | defaultAction = null 27 | } 28 | store = { 29 | active = true 30 | priority = 100 31 | defaultAction = null 32 | } 33 | adb = { 34 | active = false 35 | priority = 2500 36 | defaultAction = null 37 | } 38 | log = { 39 | active = false 40 | priority = 210 41 | defaultAction = null 42 | } 43 | find = { 44 | active = true 45 | priority = 25 46 | defaultAction = null 47 | } 48 | profilermarkers = { 49 | active = false 50 | priority = 100 51 | defaultAction = null 52 | } 53 | asset = { 54 | active = true 55 | priority = 25 56 | defaultAction = null 57 | } 58 | presets_provider = { 59 | active = false 60 | priority = -10 61 | defaultAction = null 62 | } 63 | } 64 | objectSelectors = { 65 | } 66 | recentSearches = [ 67 | ] 68 | searchItemFavorites = [ 69 | ] 70 | savedSearchesSortOrder = 0 71 | showSavedSearchPanel = false 72 | hideTabs = false 73 | expandedQueries = [ 74 | ] 75 | queryBuilder = false 76 | ignoredProperties = "id;name;classname;imagecontentshash" 77 | helperWidgetCurrentArea = "all" 78 | disabledIndexers = "" 79 | minIndexVariations = 2 80 | findProviderIndexHelper = true -------------------------------------------------------------------------------- /docs/unity-boids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drumath2237/Boids-Unity-ComputeShader-Sandbox/1e64d2becda9851d7a6daaa30045f701ddee8f46/docs/unity-boids.png --------------------------------------------------------------------------------