Repository: microsoft/VisualProfiler-Unity Branch: main Commit: 580a58fb7553 Files: 75 Total size: 245.1 KB Directory structure: gitextract_18evvys6/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── documentation-issue.md │ │ └── feature-request.md │ ├── issue_template.md │ └── pull_request_template.md ├── .gitignore ├── LICENSE ├── README.md ├── SECURITY.md ├── VisualProfilerUnityProject/ │ ├── .gitignore │ ├── Assets/ │ │ ├── Materials/ │ │ │ ├── Ball.mat │ │ │ ├── Ball.mat.meta │ │ │ ├── Box.mat │ │ │ ├── Box.mat.meta │ │ │ ├── Floor.mat │ │ │ └── Floor.mat.meta │ │ ├── Materials.meta │ │ ├── Prefabs/ │ │ │ ├── Ball.prefab │ │ │ └── Ball.prefab.meta │ │ ├── Prefabs.meta │ │ ├── Scenes/ │ │ │ ├── SampleScene.unity │ │ │ └── SampleScene.unity.meta │ │ ├── Scenes.meta │ │ ├── Scripts/ │ │ │ ├── FlyCameraController.cs │ │ │ ├── FlyCameraController.cs.meta │ │ │ ├── Microsoft.MixedReality.Profiling.Sample.asmdef │ │ │ ├── Microsoft.MixedReality.Profiling.Sample.asmdef.meta │ │ │ ├── SampleControls.cs │ │ │ └── SampleControls.cs.meta │ │ ├── Scripts.meta │ │ ├── UniversalRenderPipelineAsset.asset │ │ ├── UniversalRenderPipelineAsset.asset.meta │ │ ├── UniversalRenderPipelineAssetRenderer.asset │ │ ├── UniversalRenderPipelineAssetRenderer.asset.meta │ │ ├── UniversalRenderPipelineGlobalSettings.asset │ │ └── UniversalRenderPipelineGlobalSettings.asset.meta │ ├── Packages/ │ │ ├── manifest.json │ │ └── packages-lock.json │ └── ProjectSettings/ │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── MemorySettings.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 └── com.microsoft.mixedreality.visualprofiler/ ├── Data/ │ ├── Font.png.meta │ ├── VisualProfiler.mat │ ├── VisualProfiler.mat.meta │ ├── VisualProfiler.shader │ └── VisualProfiler.shader.meta ├── Data.meta ├── Microsoft.MixedReality.VisualProfiler.asmdef ├── Microsoft.MixedReality.VisualProfiler.asmdef.meta ├── VisualProfiler.cs ├── VisualProfiler.cs.meta ├── package.json └── package.json.meta ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/ISSUE_TEMPLATE/bug-report.md ================================================ --- name: Bug report about: Create a bug report to help us improve title: '' labels: Bug assignees: '' --- ## Describe the bug A clear and concise description of what the bug is. ## To reproduce Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error ## Expected behavior A clear and concise description of what you expected to happen. ## Screenshots If applicable, add screenshots to help explain your problem. ## Your setup (please complete the following information) - Unity Version [e.g. 2021.3.3f1] - Visual Profiler Version [e.g. v2.1.0] ## Target platform (please complete the following information) - HoloLens 2 - Standalone PC - etc. ## Additional context Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/documentation-issue.md ================================================ --- name: Documentation Issue about: 'Something in our doc is missing or incorrect ' title: '' labels: Documentation assignees: '' --- ## Describe the issue A clear and concise what the issue ## Feature area What's incorrect? What's missing? ## Existing doc link If this is about something in an existing document, please provide link ## Additional context Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature-request.md ================================================ --- name: Feature Request about: Suggest an idea for the Visual Profiler title: '' labels: Feature Request assignees: '' --- ## Describe the problem A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] ## Describe the solution you'd like A clear and concise description of what you want to happen. ## Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered. ## Additional context Add any other context or screenshots about the feature request here. ================================================ FILE: .github/issue_template.md ================================================ ## Overview ## Expected behavior ## Actual behavior ## Steps to reproduce _(Links to sample github project preferred)_ ## Unity editor version ## Visual Profiler release version ================================================ FILE: .github/pull_request_template.md ================================================ ## Overview ## Changes - Fixes: # . ## Verification > This optional section is a place where you can detail the specific type of verification > you want from reviewers. For example, if you want reviewers to checkout the PR locally > and validate the functionality of specific scenarios, provide instructions > on the specific scenarios and what you want verified. > > If there are specific areas of concern or question feel free to highlight them here so > that reviewers can watch out for those issues. > > As a reviewer, it is possible to check out this change locally by using the following > commands (substituting {PR_ID} with the ID of this pull request): > > git fetch origin pull/{PR_ID}/head:name_of_local_branch > > git checkout name_of_local_branch ================================================ FILE: .gitignore ================================================ # Visual Studio cache directory .vs/ ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) Microsoft Corporation. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE ================================================ FILE: README.md ================================================ # Visual Profiler The Visual Profiler provides a drop in solution for viewing your mixed reality Unity application's frame rate, scene complexity, and memory usage across a variety of platforms. ![Visual Profiler Screenshot](README/Images/ProfilerScreenshot.png) Missed frames are displayed over time to visually find problem areas. Scene complexity is reported in the form of batches, draw calls, and rendered vertex counts (or triangle counts). Memory is reported as current, peak and max usage in a bar graph. > [!NOTE] > To ensure the profiler is minimally intrusive it does not create any GameObjects, perform any per frame managed allocations, and renders in a single draw call. The Visual Profiler has been verified to work on the following platforms: - Microsoft HoloLens & HoloLens 2 - Microsoft Immersive headsets (IHMD) - OpenXR platforms - Steam VR (HTC Vive / Oculus Rift) - Meta Quest & Quest 2 - Windows PCs - WebGL ## Installation The Visual Profiler is normally ingested as a Unity [package](https://docs.unity3d.com/Manual/Packages.html). To import the Visual Profiler package into your Unity project follow the below steps: > [!NOTE] > The Visual Profiler package requires Unity 2021.3 and above. 1. Open your Unity project and select `Window > Package Manager` from the file menu bar 2. Click the `'+'` icon within the Package Manager and select `"Add package from git URL..."` ![Package Manager Add](README/Images/PackageManagerAdd.png) 3. Paste *https://github.com/microsoft/VisualProfiler-Unity.git?path=/com.microsoft.mixedreality.visualprofiler#v3.4.0* into the text field and click `"Add"` ![Package Manager Paste](README/Images/PackageManagerPaste.png) 4. The Visual Profiler will now be installed within your Unity project as an immutable package within the project's `Packages` folder named `Microsoft Mixed Reality Visual Profiler`. 5. Finally, add the VisualProfiler component to any GameObject in the Unity scene you wish to profile. The profiler is initially active and visible (toggle-able via the IsVisible property), but can be toggled via the enabled/disable voice command keywords (on Windows/UWP platforms only). It is advised you use a specific release of the Visual Profiler package to ensure your project is locked to a stable release. Release version 3.4.0 is suggested in step three above. You can also pull another version, specific branch, or git commit hash by altering the URL as demonstrated below: | Syntax | URL example | |------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| | Specific version | *https://github.com/microsoft/VisualProfiler-Unity.git?path=/com.microsoft.mixedreality.visualprofiler#vX.Y.Z* | | Specific branch | *https://github.com/microsoft/VisualProfiler-Unity.git?path=/com.microsoft.mixedreality.visualprofiler#my_branch* | | Git commit hash | *https://github.com/microsoft/VisualProfiler-Unity.git?path=/com.microsoft.mixedreality.visualprofiler#badc0ffee0ddf00ddead10cc8badf00d1badb002* | ## Usage When using the profiler look for "missed frames" which appear as orange bars. Missed frames indicate your application is not hitting its target frame rate and may need optimization work. Draw call counts and vertex counts (or triangle counts) are also displayed under the missed frame indicators. These numbers can be indicative of why your app isn't meeting its target frame rate. ![Profiler Guide](README/Images/ProfilerGuide.png) One should also keep an eye on the bottom memory bar to insure memory usage isn't rapidly changing or approaching the application's memory limit. > [!NOTE] > The Visual Profiler works in both development and release builds. The profiler UI (such as anchoring, scale, follow behavior and UI color) can also be tweaked in the component inspector. ![Profiler Inspector](README/Images/ProfilerInspector.png) Custom profilers can be added to the bottom of the Visual Profiler by adding to the list of "Profiler Groups." Profiler Groups use Unity's [ProfilerRecorder](https://docs.unity3d.com/ScriptReference/Unity.Profiling.ProfilerRecorder.html) API. For example the below image shows how the "BehaviorUpdate", "LateBehaviourUpdate", and "FixedBehaviourUpdate" markers display a millisecond average over 300 samples with the group label "Scripting." ![Custom Profilers](README/Images/CustomProfilers.png) ## Sample A sample Unity project can be found in the *VisualProfilerUnityProject* folder. This project contains a simple sample scene that demonstrates the Visual Profiler being used in 3D and 2D (perspective and orthographic cameras) plus example profiler groups for C# behaviors, rendering, and physics. ![Sample](README/Images/Sample.png) ## Feedback To file issues or suggestions, please use the [Issues](https://github.com/Microsoft/VisualProfiler/issues) page for this project on GitHub. ## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. ================================================ FILE: SECURITY.md ================================================ ## Security Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. ## Reporting Security Issues **Please do not report security vulnerabilities through public GitHub issues.** Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) * Full paths of source file(s) related to the manifestation of the issue * The location of the affected source code (tag/branch/commit or direct URL) * Any special configuration required to reproduce the issue * Step-by-step instructions to reproduce the issue * Proof-of-concept or exploit code (if possible) * Impact of the issue, including how an attacker might exploit the issue This information will help us triage your report more quickly. If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. ## Preferred Languages We prefer all communications to be in English. ## Policy Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). ================================================ FILE: VisualProfilerUnityProject/.gitignore ================================================ # This .gitignore file should be placed at the root of your Unity project directory # # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore # /[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ /[Uu]ser[Ss]ettings/ # MemoryCaptures can get excessive in size. # They also could contain extremely sensitive data /[Mm]emoryCaptures/ # Asset meta data should only be ignored when the corresponding asset is also ignored !/[Aa]ssets/**/*.meta # Uncomment this line if you wish to ignore the asset store tools plugin # /[Aa]ssets/AssetStoreTools* # Autogenerated Jetbrains Rider plugin /[Aa]ssets/Plugins/Editor/JetBrains* # Visual Studio cache directory .vs/ # Gradle cache directory .gradle/ # Autogenerated VS/MD/Consulo solution and project files ExportedObj/ .consulo/ *.csproj *.unityproj *.sln *.suo *.tmp *.user *.userprefs *.pidb *.booproj *.svd *.pdb *.mdb *.opendb *.VC.db *.vsconfig *.pfx # Unity3D generated meta files *.pidb.meta *.pdb.meta *.mdb.meta *.pfx.meta # Unity3D generated file on crash reports sysinfo.txt # Builds *.apk *.aab *.unitypackage # Crashlytics generated file crashlytics-build.properties # Packed Addressables /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* # Temporary auto-generated Android Assets /[Aa]ssets/[Ss]treamingAssets/aa.meta /[Aa]ssets/[Ss]treamingAssets/aa/* # Project specific assets Assets/TextMesh Pro* Assets/Samples.meta ================================================ FILE: VisualProfilerUnityProject/Assets/Materials/Ball.mat ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Ball m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: RenderType: Opaque disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: - _BaseMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _BumpMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailAlbedoMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailMask: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailNormalMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _EmissionMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MainTex: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MetallicGlossMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _OcclusionMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _ParallaxMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _SpecGlossMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - unity_LightmapsInd: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - unity_ShadowMasks: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - _AlphaClip: 0 - _AlphaToMask: 0 - _Blend: 0 - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 0, g: 0.3411901, b: 1, a: 1} - _Color: {r: 0, g: 0.3411901, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] --- !u!114 &5731516510791417871 MonoBehaviour: m_ObjectHideFlags: 11 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: version: 7 ================================================ FILE: VisualProfilerUnityProject/Assets/Materials/Ball.mat.meta ================================================ fileFormatVersion: 2 guid: 54fedbc398772f84d9171eba06250fb2 NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Materials/Box.mat ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Box m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: RenderType: Opaque disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: - _BaseMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _BumpMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailAlbedoMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailMask: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailNormalMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _EmissionMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MainTex: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MetallicGlossMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _OcclusionMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _ParallaxMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _SpecGlossMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - unity_Lightmaps: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - unity_LightmapsInd: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - unity_ShadowMasks: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - _AlphaClip: 0 - _AlphaToMask: 0 - _Blend: 0 - _BlendModePreserveSpecular: 1 - _BumpScale: 1 - _ClearCoatMask: 0 - _ClearCoatSmoothness: 0 - _Cull: 2 - _Cutoff: 0.5 - _DetailAlbedoMapScale: 1 - _DetailNormalMapScale: 1 - _DstBlend: 0 - _DstBlendAlpha: 0 - _EnvironmentReflections: 1 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - _QueueOffset: 0 - _ReceiveShadows: 1 - _Smoothness: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _SrcBlendAlpha: 1 - _Surface: 0 - _UVSec: 0 - _WorkflowMode: 1 - _ZWrite: 1 m_Colors: - _BaseColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1} - _Color: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} m_BuildTextureStacks: [] --- !u!114 &5731516510791417871 MonoBehaviour: m_ObjectHideFlags: 11 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: version: 7 ================================================ FILE: VisualProfilerUnityProject/Assets/Materials/Box.mat.meta ================================================ fileFormatVersion: 2 guid: 1cc2328ab871a0f438d6832a0ba4ed6c NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Materials/Floor.mat ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: serializedVersion: 8 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: Floor m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] m_InvalidKeywords: [] m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 0 m_CustomRenderQueue: -1 stringTagMap: {} disabledShaderPasses: [] m_LockedProperties: m_SavedProperties: serializedVersion: 3 m_TexEnvs: - _BumpMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailAlbedoMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailMask: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _DetailNormalMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _EmissionMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _MainTex: m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0} m_Scale: {x: 2000, y: 2000} m_Offset: {x: 0, y: 0} - _MetallicGlossMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _OcclusionMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - _ParallaxMap: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Ints: [] m_Floats: - _BumpScale: 1 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 - _GlossMapScale: 1 - _Glossiness: 0.5 - _GlossyReflections: 1 - _Metallic: 0 - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 - _UVSec: 0 - _ZWrite: 1 m_Colors: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} m_BuildTextureStacks: [] ================================================ FILE: VisualProfilerUnityProject/Assets/Materials/Floor.mat.meta ================================================ fileFormatVersion: 2 guid: b0951a67577251e4f8dd5778f1e02e72 NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Materials.meta ================================================ fileFormatVersion: 2 guid: efec6db673a6d344a96a05175c2e93a7 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Prefabs/Ball.prefab ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1 &9104521733164108909 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 7007638100202555976} - component: {fileID: 7920336783303293155} - component: {fileID: 6263691772383922596} - component: {fileID: 4299646355915102626} - component: {fileID: 3936062618501033286} m_Layer: 0 m_Name: Ball m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &7007638100202555976 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9104521733164108909} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: 0} m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &7920336783303293155 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9104521733164108909} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &6263691772383922596 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9104521733164108909} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 54fedbc398772f84d9171eba06250fb2, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!135 &4299646355915102626 SphereCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9104521733164108909} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Radius: 0.5 m_Center: {x: 0, y: 0, z: 0} --- !u!54 &3936062618501033286 Rigidbody: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9104521733164108909} serializedVersion: 4 m_Mass: 1 m_Drag: 0 m_AngularDrag: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} m_InertiaTensor: {x: 1, y: 1, z: 1} m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_ImplicitCom: 1 m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 m_Constraints: 0 m_CollisionDetection: 0 ================================================ FILE: VisualProfilerUnityProject/Assets/Prefabs/Ball.prefab.meta ================================================ fileFormatVersion: 2 guid: 3b471f76c2bfeac49b58ffb4f47b854d PrefabImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Prefabs.meta ================================================ fileFormatVersion: 2 guid: 8ee3aa194b42c6247a74bda4af6cfd2c folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Scenes/SampleScene.unity ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: smallestOccluder: 5 smallestHole: 0.25 backfaceThreshold: 100 m_SceneGUID: 00000000000000000000000000000000 m_OcclusionCullingData: {fileID: 0} --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 m_FogDensity: 0.01 m_LinearFogStart: 0 m_LinearFogEnd: 300 m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} m_AmbientIntensity: 1 m_AmbientMode: 0 m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 m_FlareFadeSpeed: 3 m_HaloTexture: {fileID: 0} m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} m_DefaultReflectionMode: 0 m_DefaultReflectionResolution: 128 m_ReflectionBounces: 1 m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: serializedVersion: 12 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 m_ExtractAmbientOcclusion: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 1 m_FinalGather: 0 m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 m_BakeBackend: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 m_PVREnvironmentSampleCount: 500 m_PVREnvironmentReferencePointCount: 2048 m_PVRFilteringMode: 2 m_PVRDenoiserTypeDirect: 0 m_PVRDenoiserTypeIndirect: 0 m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 m_PVREnvironmentMIS: 0 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 m_ExportTrainingData: 0 m_TrainingDataDestination: TrainingData m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} m_LightingSettings: {fileID: 0} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.4 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &276989803 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 276989807} - component: {fileID: 276989806} - component: {fileID: 276989805} - component: {fileID: 276989804} m_Layer: 0 m_Name: Floor m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!64 &276989804 MeshCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 276989803} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 5 m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!23 &276989805 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 276989803} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: b0951a67577251e4f8dd5778f1e02e72, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &276989806 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 276989803} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &276989807 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 276989803} serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1000, y: 1000, z: 1000} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} --- !u!1 &335413767 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 335413768} - component: {fileID: 335413771} - component: {fileID: 335413770} - component: {fileID: 335413769} m_Layer: 0 m_Name: Cube (3) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &335413768 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 335413767} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: -0.95, y: 0.4, z: 0} m_LocalScale: {x: 1.8, y: 0.4, z: 0.1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 751500909} m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!65 &335413769 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 335413767} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &335413770 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 335413767} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 1cc2328ab871a0f438d6832a0ba4ed6c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &335413771 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 335413767} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &362975399 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 362975401} - component: {fileID: 362975400} m_Layer: 0 m_Name: VisualProfiler3DFollow m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 --- !u!114 &362975400 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 362975399} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ee9fe1903f7351748999dead411e0a3b, type: 3} m_Name: m_EditorClassIdentifier: isVisible: 1 frameSampleRate: 0.3 defaultFrameRate: 60 missedFramePercentage: 0.9 displayedDecimalDigits: 1 displayTriangleCount: 0 batchesQualityLevelBudget: drawCallsQualityLevelBudget: meshStatsQualityLevelBudget: windowAnchor: 7 windowOffset: {x: 0.1, y: 0.1} windowScale: 1 windowFollowSpeed: 5 snapWindow: 0 alignToCamera: 1 transformToFollow: {fileID: 1401076528} toggleKeyworlds: - Profiler - Toggle Profiler - Show Profiler - Hide Profiler layer: 0 material: {fileID: 2100000, guid: b98f8349d37aef742baaa038e99837c0, type: 2} baseColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} targetFrameRateColor: {r: 0.49803922, g: 0.7294118, b: 0, a: 1} missedFrameRateColor: {r: 0.9490196, g: 0.3137255, b: 0.13333334, a: 1} memoryUsedColor: {r: 0, g: 0.6431373, b: 0.9372549, a: 1} memoryPeakColor: {r: 1, g: 0.7254902, b: 0, a: 1} memoryLimitColor: {r: 0.39215687, g: 0.39215687, b: 0.39215687, a: 1} fontCharacterSize: {x: 16, y: 30} fontScale: {x: 0.00023, y: 0.00028} fontColumns: 32 ProfilerDisplayOrder: 0 ProfilerGroups: - DisplayName: Behaviour Markers: - StatName: BehaviourUpdate Operation: 0 - StatName: LateBehaviourUpdate Operation: 0 - StatName: FixedBehaviourUpdate Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 - DisplayName: Render Markers: - StatName: Inl_UniversalRenderTotal Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 - DisplayName: Physics Markers: - StatName: Physics.Processing Operation: 0 - StatName: Physics.Simulate Operation: 0 - StatName: Physics.FetchResults Operation: 0 - StatName: Physics.UpdateBodies Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 --- !u!4 &362975401 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 362975399} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &692745578 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 692745579} m_Layer: 0 m_Name: BallSpawn m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &692745579 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 692745578} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 2, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &705507993 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 705507995} - component: {fileID: 705507994} - component: {fileID: 705507996} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!108 &705507994 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 705507993} m_Enabled: 1 serializedVersion: 10 m_Type: 1 m_Shape: 0 m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 m_InnerSpotAngle: 21.80208 m_CookieSize: 10 m_Shadows: m_Type: 0 m_Resolution: -1 m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 m_CullingMatrixOverride: e00: 1 e01: 0 e02: 0 e03: 0 e10: 0 e11: 1 e12: 0 e13: 0 e20: 0 e21: 0 e22: 1 e23: 0 e30: 0 e31: 0 e32: 0 e33: 1 m_UseCullingMatrixOverride: 0 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} m_RenderMode: 0 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_RenderingLayerMask: 1 m_Lightmapping: 1 m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ColorTemperature: 6570 m_UseColorTemperature: 0 m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} m_UseBoundingSphereOverride: 0 m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &705507995 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 705507993} serializedVersion: 2 m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!114 &705507996 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 705507993} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} m_Name: m_EditorClassIdentifier: m_Version: 3 m_UsePipelineSettings: 1 m_AdditionalLightsShadowResolutionTier: 2 m_LightLayerMask: 1 m_RenderingLayers: 1 m_CustomShadowLayers: 0 m_ShadowLayerMask: 1 m_ShadowRenderingLayers: 1 m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 0 --- !u!1 &716433996 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 716433997} - component: {fileID: 716434000} - component: {fileID: 716433999} - component: {fileID: 716433998} m_Layer: 0 m_Name: Cube (4) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &716433997 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 716433996} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} m_LocalPosition: {x: 0.95, y: 0.4, z: 0} m_LocalScale: {x: 1.8, y: 0.4, z: 0.1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 751500909} m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!65 &716433998 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 716433996} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &716433999 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 716433996} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 1cc2328ab871a0f438d6832a0ba4ed6c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &716434000 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 716433996} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &739103468 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 739103469} - component: {fileID: 739103472} - component: {fileID: 739103471} - component: {fileID: 739103470} m_Layer: 0 m_Name: Cube (1) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &739103469 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 739103468} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.4, z: 0.95} m_LocalScale: {x: 2, y: 0.4, z: 0.1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 751500909} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &739103470 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 739103468} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &739103471 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 739103468} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 1cc2328ab871a0f438d6832a0ba4ed6c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &739103472 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 739103468} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &751500908 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 751500909} m_Layer: 0 m_Name: Box m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &751500909 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 751500908} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1952789995} - {fileID: 739103469} - {fileID: 1473212392} - {fileID: 335413768} - {fileID: 716433997} - {fileID: 1401076528} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &963194225 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 963194228} - component: {fileID: 963194227} - component: {fileID: 963194226} - component: {fileID: 963194229} - component: {fileID: 963194230} - component: {fileID: 963194231} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!81 &963194226 AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 m_Iso: 200 m_ShutterSpeed: 0.005 m_Aperture: 16 m_FocusDistance: 10 m_FocalLength: 50 m_BladeCount: 5 m_Curvature: {x: 2, y: 11} m_BarrelClipping: 0.25 m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} m_NormalizedViewPortRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 near clip plane: 0.13 far clip plane: 1000 field of view: 55 orthographic: 0 orthographic size: 5 m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 23 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 --- !u!4 &963194228 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -5} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1896249791} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &963194229 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 515798d7848359a4d957285b6653b6c7, type: 3} m_Name: m_EditorClassIdentifier: Boost: 1 MinBoost: 0.5 MaxBoost: 4 PositionLerpTime: 0.2 MouseSensitivityCurve: serializedVersion: 2 m_Curve: - serializedVersion: 3 time: 0 value: 0.5 inSlope: 0 outSlope: 5 tangentMode: 0 weightedMode: 0 inWeight: 0 outWeight: 0 - serializedVersion: 3 time: 1 value: 2.5 inSlope: 0 outSlope: 0 tangentMode: 0 weightedMode: 0 inWeight: 0 outWeight: 0 m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 RotationLerpTime: 0.1 InvertY: 0 showControlsText: 0 --- !u!114 &963194230 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} m_Name: m_EditorClassIdentifier: m_RenderShadows: 1 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 m_CameraType: 0 m_Cameras: - {fileID: 1896249788} m_RendererIndex: -1 m_VolumeLayerMask: serializedVersion: 2 m_Bits: 1 m_VolumeTrigger: {fileID: 0} m_VolumeFrameworkUpdateModeOption: 2 m_RenderPostProcessing: 0 m_Antialiasing: 0 m_AntialiasingQuality: 2 m_StopNaN: 0 m_Dithering: 0 m_ClearDepth: 1 m_AllowXRRendering: 1 m_AllowHDROutput: 1 m_UseScreenCoordOverride: 0 m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} m_RequiresDepthTexture: 0 m_RequiresColorTexture: 0 m_Version: 2 m_TaaSettings: quality: 3 frameInfluence: 0.1 jitterScale: 1 mipBias: 0 varianceClampScale: 0.9 contrastAdaptiveSharpening: 0 --- !u!114 &963194231 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: c2cb613a953f0184caebd6d56645b1e3, type: 3} m_Name: m_EditorClassIdentifier: Profiler3D: {fileID: 1563446975} Profiler3DFollow: {fileID: 362975399} Profiler2D: {fileID: 1137945030} Ball: {fileID: 9104521733164108909, guid: 3b471f76c2bfeac49b58ffb4f47b854d, type: 3} BallSpawn: {fileID: 692745579} --- !u!1 &1137945030 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 1137945032} - component: {fileID: 1137945031} m_Layer: 0 m_Name: VisualProfiler2D m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 --- !u!114 &1137945031 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1137945030} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ee9fe1903f7351748999dead411e0a3b, type: 3} m_Name: m_EditorClassIdentifier: isVisible: 1 frameSampleRate: 0.3 defaultFrameRate: 60 missedFramePercentage: 0.9 displayedDecimalDigits: 1 displayTriangleCount: 0 batchesQualityLevelBudget: drawCallsQualityLevelBudget: meshStatsQualityLevelBudget: windowAnchor: 1 windowOffset: {x: 0.1, y: 0.8} windowScale: 5 windowFollowSpeed: 5 snapWindow: 1 alignToCamera: 1 transformToFollow: {fileID: 0} toggleKeyworlds: - Profiler - Toggle Profiler - Show Profiler - Hide Profiler layer: 5 material: {fileID: 2100000, guid: b98f8349d37aef742baaa038e99837c0, type: 2} baseColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} targetFrameRateColor: {r: 0.49803922, g: 0.7294118, b: 0, a: 1} missedFrameRateColor: {r: 0.9490196, g: 0.3137255, b: 0.13333334, a: 1} memoryUsedColor: {r: 0, g: 0.6431373, b: 0.9372549, a: 1} memoryPeakColor: {r: 1, g: 0.7254902, b: 0, a: 1} memoryLimitColor: {r: 0.39215687, g: 0.39215687, b: 0.39215687, a: 1} fontCharacterSize: {x: 16, y: 30} fontScale: {x: 0.00023, y: 0.00028} fontColumns: 32 ProfilerDisplayOrder: 0 ProfilerGroups: - DisplayName: Behaviour Markers: - StatName: BehaviourUpdate Operation: 0 - StatName: LateBehaviourUpdate Operation: 0 - StatName: FixedBehaviourUpdate Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 - DisplayName: Render Markers: - StatName: Inl_UniversalRenderTotal Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 - DisplayName: Physics Markers: - StatName: Physics.Processing Operation: 0 - StatName: Physics.Simulate Operation: 0 - StatName: Physics.FetchResults Operation: 0 - StatName: Physics.UpdateBodies Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 --- !u!4 &1137945032 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1137945030} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1401076527 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 1401076528} m_Layer: 0 m_Name: FollowTarget m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &1401076528 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1401076527} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 751500909} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1473212391 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 1473212392} - component: {fileID: 1473212395} - component: {fileID: 1473212394} - component: {fileID: 1473212393} m_Layer: 0 m_Name: Cube (2) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!4 &1473212392 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1473212391} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.4, z: -0.95} m_LocalScale: {x: 2, y: 0.4, z: 0.1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 751500909} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &1473212393 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1473212391} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1473212394 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1473212391} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 1cc2328ab871a0f438d6832a0ba4ed6c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1473212395 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1473212391} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1563446975 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 1563446977} - component: {fileID: 1563446976} m_Layer: 0 m_Name: VisualProfiler3D m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!114 &1563446976 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1563446975} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ee9fe1903f7351748999dead411e0a3b, type: 3} m_Name: m_EditorClassIdentifier: isVisible: 1 frameSampleRate: 0.3 defaultFrameRate: 60 missedFramePercentage: 0.9 displayedDecimalDigits: 1 displayTriangleCount: 0 batchesQualityLevelBudget: drawCallsQualityLevelBudget: meshStatsQualityLevelBudget: windowAnchor: 7 windowOffset: {x: 0.1, y: 0.1} windowScale: 1 windowFollowSpeed: 5 snapWindow: 0 alignToCamera: 0 transformToFollow: {fileID: 0} toggleKeyworlds: - Profiler - Toggle Profiler - Show Profiler - Hide Profiler layer: 0 material: {fileID: 2100000, guid: b98f8349d37aef742baaa038e99837c0, type: 2} baseColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} targetFrameRateColor: {r: 0.49803922, g: 0.7294118, b: 0, a: 1} missedFrameRateColor: {r: 0.9490196, g: 0.3137255, b: 0.13333334, a: 1} memoryUsedColor: {r: 0, g: 0.6431373, b: 0.9372549, a: 1} memoryPeakColor: {r: 1, g: 0.7254902, b: 0, a: 1} memoryLimitColor: {r: 0.39215687, g: 0.39215687, b: 0.39215687, a: 1} fontCharacterSize: {x: 16, y: 30} fontScale: {x: 0.00023, y: 0.00028} fontColumns: 32 ProfilerDisplayOrder: 0 ProfilerGroups: - DisplayName: Behaviour Markers: - StatName: BehaviourUpdate Operation: 0 - StatName: LateBehaviourUpdate Operation: 0 - StatName: FixedBehaviourUpdate Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 - DisplayName: Render Markers: - StatName: Inl_UniversalRenderTotal Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 - DisplayName: Physics Markers: - StatName: Physics.Processing Operation: 0 - StatName: Physics.Simulate Operation: 0 - StatName: Physics.FetchResults Operation: 0 - StatName: Physics.UpdateBodies Operation: 0 SampleCapacity: 300 BudgetPercentage: 1 --- !u!4 &1563446977 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1563446975} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1896249787 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 1896249791} - component: {fileID: 1896249788} - component: {fileID: 1896249789} m_Layer: 0 m_Name: UI Camera m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!20 &1896249788 Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1896249787} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 m_Iso: 200 m_ShutterSpeed: 0.005 m_Aperture: 16 m_FocusDistance: 10 m_FocalLength: 50 m_BladeCount: 5 m_Curvature: {x: 2, y: 11} m_BarrelClipping: 0.25 m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} m_NormalizedViewPortRect: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 near clip plane: 0.13 far clip plane: 1000 field of view: 60 orthographic: 1 orthographic size: 1.05 m_Depth: 0 m_CullingMask: serializedVersion: 2 m_Bits: 32 m_RenderingPath: -1 m_TargetTexture: {fileID: 0} m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 1 m_AllowMSAA: 1 m_AllowDynamicResolution: 0 m_ForceIntoRT: 0 m_OcclusionCulling: 0 m_StereoConvergence: 10 m_StereoSeparation: 0.022 --- !u!114 &1896249789 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1896249787} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} m_Name: m_EditorClassIdentifier: m_RenderShadows: 1 m_RequiresDepthTextureOption: 2 m_RequiresOpaqueTextureOption: 2 m_CameraType: 1 m_Cameras: [] m_RendererIndex: -1 m_VolumeLayerMask: serializedVersion: 2 m_Bits: 1 m_VolumeTrigger: {fileID: 0} m_VolumeFrameworkUpdateModeOption: 2 m_RenderPostProcessing: 0 m_Antialiasing: 0 m_AntialiasingQuality: 2 m_StopNaN: 0 m_Dithering: 0 m_ClearDepth: 1 m_AllowXRRendering: 1 m_AllowHDROutput: 1 m_UseScreenCoordOverride: 0 m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} m_RequiresDepthTexture: 0 m_RequiresColorTexture: 0 m_Version: 2 m_TaaSettings: quality: 3 frameInfluence: 0.1 jitterScale: 1 mipBias: 0 varianceClampScale: 0.9 contrastAdaptiveSharpening: 0 --- !u!4 &1896249791 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1896249787} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 963194228} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1952789991 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - component: {fileID: 1952789995} - component: {fileID: 1952789994} - component: {fileID: 1952789993} - component: {fileID: 1952789992} m_Layer: 0 m_Name: Cube m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 --- !u!65 &1952789992 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952789991} m_Material: {fileID: 0} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 m_Size: {x: 1, y: 1, z: 1} m_Center: {x: 0, y: 0, z: 0} --- !u!23 &1952789993 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952789991} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 1cc2328ab871a0f438d6832a0ba4ed6c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 m_StaticBatchRoot: {fileID: 0} m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &1952789994 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952789991} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1952789995 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1952789991} serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.100000024, z: 0} m_LocalScale: {x: 2, y: 0.2, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 751500909} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 963194228} - {fileID: 705507995} - {fileID: 1563446977} - {fileID: 362975401} - {fileID: 1137945032} - {fileID: 276989807} - {fileID: 751500909} - {fileID: 692745579} ================================================ FILE: VisualProfilerUnityProject/Assets/Scenes/SampleScene.unity.meta ================================================ fileFormatVersion: 2 guid: 9fc0d4010bbf28b4594072e72b8655ab DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Scenes.meta ================================================ fileFormatVersion: 2 guid: 645d56b46d9bd714db90400ba4122e51 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts/FlyCameraController.cs ================================================ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. #if VP_USE_INPUT_SYSTEM && ENABLE_INPUT_SYSTEM #define USE_INPUT_SYSTEM #endif using System.Collections.Generic; using UnityEngine; using UnityEngine.XR; #if USE_INPUT_SYSTEM using UnityEngine.InputSystem; #endif // USE_INPUT_SYSTEM namespace Microsoft.MixedReality.Profiling.Sample { /// /// A simple "fly" camera for moving the camera while playing with a mouse/keyboard or gamepad. /// public class FlyCameraController : MonoBehaviour { private class CameraState { public Vector3 Position; public Vector3 Rotation; public void SetFromTransform(Transform t) { Position = t.position; Vector3 euler = t.eulerAngles; Rotation = new Vector3(euler.y, euler.x, euler.z); } public void Translate(Vector3 translation) { Vector3 rotatedTranslation = Quaternion.Euler(new Vector3(Rotation.y, Rotation.x, Rotation.z)) * translation; Position += rotatedTranslation; } public void LerpTowards(CameraState target, float positionLerp, float rotationLerp) { Rotation = Vector3.Lerp(Rotation, target.Rotation, rotationLerp); Position = Vector3.Lerp(Position, target.Position, positionLerp); } public void UpdateTransform(Transform t) { t.eulerAngles = new Vector3(Rotation.y, Rotation.x, Rotation.z); t.position = Position; } } [Header("Movement Settings")] [Tooltip("Exponential boost factor on translation, controllable by mouse wheel.")] public float Boost = 1.0f; [Tooltip("Minimum boost factor applied to translation.")] public float MinBoost = 0.5f; [Tooltip("Maximum boost factor applied to translation.")] public float MaxBoost = 4.0f; [Tooltip("Time it takes to interpolate camera position 99% of the way to the target."), Range(0.001f, 1.0f)] public float PositionLerpTime = 0.2f; [Header("Rotation Settings")] [Tooltip("X = Change in mouse position.\nY = Multiplicative factor for camera rotation.")] public AnimationCurve MouseSensitivityCurve = new AnimationCurve(new Keyframe(0.0f, 0.5f, 0.0f, 5f), new Keyframe(1.0f, 2.5f, 0.0f, 0.0f)); [Tooltip("Time it takes to interpolate camera rotation 99% of the way to the target."), Range(0.001f, 1.0f)] public float RotationLerpTime = 0.1f; [Tooltip("Whether or not to invert our Y axis for mouse/gamepad input to rotation.")] public bool InvertY = false; [Header("Other Settings")] public bool showControlsText = false; private CameraState targetCameraState = new CameraState(); private CameraState interpolatingCameraState = new CameraState(); private List xrDisplaySubsystems = new List(); /// /// Called when the game object state from from inactive to active. /// private void OnEnable() { targetCameraState.SetFromTransform(transform); interpolatingCameraState.SetFromTransform(transform); } /// /// Sets up initial state. /// private void Start() { SubsystemManager.GetInstances(xrDisplaySubsystems); } /// /// Called every frame to poll input and update the camera transform. /// private void Update() { if (!XRDeviceIsPresent() && Application.isFocused) { // Lock cursor when right mouse button pressed. #if USE_INPUT_SYSTEM if (Mouse.current != null && Mouse.current.rightButton.wasPressedThisFrame) #else if (Input.GetMouseButtonDown(1)) #endif // USE_INPUT_SYSTEM { Cursor.lockState = CursorLockMode.Locked; #if UNITY_EDITOR Cursor.visible = false; #endif } // Unlock when right mouse button released. #if USE_INPUT_SYSTEM if (Mouse.current != null && Mouse.current.rightButton.wasReleasedThisFrame) #else if (Input.GetMouseButtonUp(1)) #endif // USE_INPUT_SYSTEM { Cursor.lockState = CursorLockMode.None; #if UNITY_EDITOR Cursor.visible = true; #endif } // Rotation. Vector2 rotation = GetInputRotationDirection(); float rotationSensitivityFactor = MouseSensitivityCurve.Evaluate(rotation.magnitude); targetCameraState.Rotation.x += rotation.x * rotationSensitivityFactor; targetCameraState.Rotation.y += rotation.y * rotationSensitivityFactor; // Translation. float dt = Time.deltaTime; Vector3 translation = GetInputTranslationDirection() * dt; // Speed up movement when shift key held. #if USE_INPUT_SYSTEM if (Keyboard.current != null && Keyboard.current.leftShiftKey.isPressed) #else if (Input.GetKey(KeyCode.LeftShift)) #endif // USE_INPUT_SYSTEM { translation *= 10.0f; } // Modify movement by a boost factor (defined in Inspector and modified in play mode through the mouse scroll wheel). #if USE_INPUT_SYSTEM Vector2 scroll = Mouse.current != null ? Mouse.current.scroll.ReadValue() : Vector2.zero; Boost += scroll.y * dt; #else Boost += Input.mouseScrollDelta.y * dt; #endif // USE_INPUT_SYSTEM Boost = Mathf.Clamp(Boost, MinBoost, MaxBoost); translation *= Mathf.Pow(2.0f, Boost); targetCameraState.Translate(translation); // Framerate-independent interpolation. // Calculate the lerp amount, such that we get 99% of the way to our target in the specified time. float positionLerp = 1.0f - Mathf.Exp((Mathf.Log(1.0f - 0.99f) / PositionLerpTime) * dt); float rotationLerp = 1.0f - Mathf.Exp((Mathf.Log(1.0f - 0.99f) / RotationLerpTime) * dt); interpolatingCameraState.LerpTowards(targetCameraState, positionLerp, rotationLerp); interpolatingCameraState.UpdateTransform(transform); } } /// /// Displays the camera controls via a user interface. /// private void OnGUI() { if (!XRDeviceIsPresent() && showControlsText) { #if USE_INPUT_SYSTEM bool gamepadPresent = Gamepad.current != null; #else bool gamepadPresent = false; #endif // USE_INPUT_SYSTEM if (gamepadPresent) { GUI.Label(new Rect(10.0f, 10.0f, 256.0f, 128.0f), "Camera Controls\nRight Stick to Rotate\nLeft Stick to Translate"); } else { GUI.Label(new Rect(10.0f, 10.0f, 256.0f, 128.0f), "Camera Controls\nRight Click + Mouse Move to Rotate\n'W' 'A' 'S' 'D' to Translate"); } } } /// /// Returns true if an XR device is connected and running. For example a VR headset. /// private bool XRDeviceIsPresent() { foreach (var xrDisplay in xrDisplaySubsystems) { if (xrDisplay != null && xrDisplay.running) { return true; } } return false; } /// /// Turns mouse/stick controls into an input vector. /// private Vector2 GetInputRotationDirection() { Vector2 direction = Vector3.zero; #if USE_INPUT_SYSTEM if (Mouse.current != null && Mouse.current.rightButton.isPressed) #else if (Input.GetMouseButton(1)) #endif // USE_INPUT_SYSTEM { #if USE_INPUT_SYSTEM // Magical value to feel like the editor. const float rotationScaler = 0.075f; Vector2 delta = Mouse.current.delta.ReadValue() * rotationScaler; direction += new Vector2(delta.x, delta.y * (InvertY ? 1.0f : -1.0f)); #else direction += new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y") * (InvertY ? 1.0f : -1.0f)); #endif // USE_INPUT_SYSTEM } #if USE_INPUT_SYSTEM if (Gamepad.current != null) { // Magical value to feel like the editor. #if UNITY_GAMECORE && !UNITY_EDITOR const float rotationScaler = 1.0f; #else const float rotationScaler = 0.25f; #endif Vector2 delta = Gamepad.current.rightStick.ReadValue() * rotationScaler; direction += new Vector2(delta.x, delta.y * (InvertY ? 1.0f : -1.0f)); } #else // TODO - [Cameron-Micka] is is possible to query the right stick without setting up virtual axes in the legacy input system? #endif // USE_INPUT_SYSTEM return direction; } /// /// Turns WASD/stick controls into an input vector. /// private Vector3 GetInputTranslationDirection() { Vector3 direction = Vector3.zero; #if USE_INPUT_SYSTEM if (Keyboard.current != null) { if (Keyboard.current.wKey.isPressed) { direction += Vector3.forward; } if (Keyboard.current.sKey.isPressed) { direction += Vector3.back; } if (Keyboard.current.aKey.isPressed) { direction += Vector3.left; } if (Keyboard.current.dKey.isPressed) { direction += Vector3.right; } if (Keyboard.current.qKey.isPressed) { direction += Vector3.down; } if (Keyboard.current.eKey.isPressed) { direction += Vector3.up; } direction.Normalize(); } if (Gamepad.current != null) { Vector2 stick = Gamepad.current.leftStick.ReadValue(); direction += new Vector3(stick.x, 0.0f, stick.y); } #else if (Input.GetKey(KeyCode.W)) { direction += Vector3.forward; } if (Input.GetKey(KeyCode.S)) { direction += Vector3.back; } if (Input.GetKey(KeyCode.A)) { direction += Vector3.left; } if (Input.GetKey(KeyCode.D)) { direction += Vector3.right; } if (Input.GetKey(KeyCode.Q)) { direction += Vector3.down; } if (Input.GetKey(KeyCode.E)) { direction += Vector3.up; } direction.Normalize(); direction += new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical")); #endif // USE_INPUT_SYSTEM return direction; } } } ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts/FlyCameraController.cs.meta ================================================ fileFormatVersion: 2 guid: 515798d7848359a4d957285b6653b6c7 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts/Microsoft.MixedReality.Profiling.Sample.asmdef ================================================ { "name": "Microsoft.MixedReality.Profiling.Sample", "rootNamespace": "Microsoft.MixedReality.Profiling.Sample", "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": true, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [ { "name": "com.unity.inputsystem", "expression": "1.4.0", "define": "VP_USE_INPUT_SYSTEM" } ], "noEngineReferences": false } ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts/Microsoft.MixedReality.Profiling.Sample.asmdef.meta ================================================ fileFormatVersion: 2 guid: 78d68df4d2c1cdb4e9e4537adba2b111 AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts/SampleControls.cs ================================================ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System.Collections; using UnityEngine; namespace Microsoft.MixedReality.Profiling.Sample { public class SampleControls : MonoBehaviour { public GameObject Profiler3D; public GameObject Profiler3DFollow; public GameObject Profiler2D; public GameObject Ball; public Transform BallSpawn; private int selectionIndex = 0; private string[] selectionStrings = { "Profiler 3D", "Profiler 3D Follow", "Profiler 2D" }; private void OnGUI() { selectionIndex = GUI.SelectionGrid(new Rect(10, 10, 280, 40), selectionIndex, selectionStrings, 2); switch (selectionIndex) { default: case 0: { Profiler3D.SetActive(true); Profiler3DFollow.SetActive(false); Profiler2D.SetActive(false); } break; case 1: { Profiler3D.SetActive(false); Profiler3DFollow.SetActive(true); Profiler2D.SetActive(false); } break; case 2: { Profiler3D.SetActive(false); Profiler3DFollow.SetActive(false); Profiler2D.SetActive(true); } break; } if (GUI.Button(new Rect(10, 60, 80, 20), "Reset Balls")) { if (BallSpawn != null) { foreach (Transform child in BallSpawn.transform) { Destroy(child.gameObject); } } } } private void Start() { StartCoroutine(SpawnBalls()); } private IEnumerator SpawnBalls() { while (Ball != null && BallSpawn != null) { Instantiate(Ball, BallSpawn).GetComponent().angularVelocity = Random.insideUnitSphere; yield return new WaitForSeconds(0.1f); } } } } ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts/SampleControls.cs.meta ================================================ fileFormatVersion: 2 guid: c2cb613a953f0184caebd6d56645b1e3 MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/Scripts.meta ================================================ fileFormatVersion: 2 guid: f42e1690a1a9e3847b06cf55c63eb481 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/UniversalRenderPipelineAsset.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: UniversalRenderPipelineAsset m_EditorClassIdentifier: k_AssetVersion: 11 k_AssetPreviousVersion: 11 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: - {fileID: 11400000, guid: 5da3cc519153e554691ed8e68e68728b, type: 2} m_DefaultRendererIndex: 0 m_RequireDepthTexture: 0 m_RequireOpaqueTexture: 0 m_OpaqueDownsampling: 1 m_SupportsTerrainHoles: 1 m_SupportsHDR: 1 m_HDRColorBufferPrecision: 0 m_MSAA: 1 m_RenderScale: 1 m_UpscalingFilter: 0 m_FsrOverrideSharpness: 0 m_FsrSharpness: 0.92 m_EnableLODCrossFade: 1 m_LODCrossFadeDitheringType: 1 m_ShEvalMode: 0 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 2048 m_AdditionalLightsRenderingMode: 1 m_AdditionalLightsPerObjectLimit: 4 m_AdditionalLightShadowsSupported: 0 m_AdditionalLightsShadowmapResolution: 2048 m_AdditionalLightsShadowResolutionTierLow: 256 m_AdditionalLightsShadowResolutionTierMedium: 512 m_AdditionalLightsShadowResolutionTierHigh: 1024 m_ReflectionProbeBlending: 0 m_ReflectionProbeBoxProjection: 0 m_ShadowDistance: 50 m_ShadowCascadeCount: 1 m_Cascade2Split: 0.25 m_Cascade3Split: {x: 0.1, y: 0.3} m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} m_CascadeBorder: 0.2 m_ShadowDepthBias: 1 m_ShadowNormalBias: 1 m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 0 m_ConservativeEnclosingSphere: 1 m_NumIterationsEnclosingSphere: 64 m_SoftShadowQuality: 2 m_AdditionalLightsCookieResolution: 2048 m_AdditionalLightsCookieFormat: 3 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 m_SupportsLightCookies: 1 m_SupportsLightLayers: 0 m_DebugLevel: 0 m_StoreActionsOptimization: 0 m_EnableRenderGraph: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 m_UseFastSRGBLinearConversion: 0 m_SupportDataDrivenLensFlare: 1 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 m_MaxPixelLights: 0 m_ShadowAtlasResolution: 256 m_VolumeFrameworkUpdateMode: 0 m_Textures: blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} m_PrefilteringModeMainLightShadows: 1 m_PrefilteringModeAdditionalLight: 4 m_PrefilteringModeAdditionalLightShadows: 1 m_PrefilterXRKeywords: 0 m_PrefilteringModeForwardPlus: 1 m_PrefilteringModeDeferredRendering: 1 m_PrefilteringModeScreenSpaceOcclusion: 1 m_PrefilterDebugKeywords: 0 m_PrefilterWriteRenderingLayers: 0 m_PrefilterHDROutput: 0 m_PrefilterSSAODepthNormals: 0 m_PrefilterSSAOSourceDepthLow: 0 m_PrefilterSSAOSourceDepthMedium: 0 m_PrefilterSSAOSourceDepthHigh: 0 m_PrefilterSSAOInterleaved: 0 m_PrefilterSSAOBlueNoise: 0 m_PrefilterSSAOSampleCountLow: 0 m_PrefilterSSAOSampleCountMedium: 0 m_PrefilterSSAOSampleCountHigh: 0 m_PrefilterDBufferMRT1: 0 m_PrefilterDBufferMRT2: 0 m_PrefilterDBufferMRT3: 0 m_PrefilterSoftShadowsQualityLow: 0 m_PrefilterSoftShadowsQualityMedium: 0 m_PrefilterSoftShadowsQualityHigh: 0 m_PrefilterSoftShadows: 0 m_PrefilterScreenCoord: 0 m_PrefilterNativeRenderPass: 0 m_ShaderVariantLogLevel: 0 m_ShadowCascades: 0 ================================================ FILE: VisualProfilerUnityProject/Assets/UniversalRenderPipelineAsset.asset.meta ================================================ fileFormatVersion: 2 guid: 4111f02a480035642ab852db53553d24 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/UniversalRenderPipelineAssetRenderer.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} m_Name: UniversalRenderPipelineAssetRenderer m_EditorClassIdentifier: debugShaders: debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} m_RendererFeatures: [] m_RendererFeatureMap: m_UseNativeRenderPass: 0 postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} shaders: blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} screenSpaceShadowPS: {fileID: 0} samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3} objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3} dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} m_AssetVersion: 2 m_OpaqueLayerMask: serializedVersion: 2 m_Bits: 4294967295 m_TransparentLayerMask: serializedVersion: 2 m_Bits: 4294967295 m_DefaultStencilState: overrideStencilState: 0 stencilReference: 0 stencilCompareFunction: 8 passOperation: 2 failOperation: 0 zFailOperation: 0 m_ShadowTransparentReceive: 1 m_RenderingMode: 0 m_DepthPrimingMode: 0 m_CopyDepthMode: 1 m_AccurateGbufferNormals: 0 m_IntermediateTextureMode: 1 ================================================ FILE: VisualProfilerUnityProject/Assets/UniversalRenderPipelineAssetRenderer.asset.meta ================================================ fileFormatVersion: 2 guid: 5da3cc519153e554691ed8e68e68728b NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Assets/UniversalRenderPipelineGlobalSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3} m_Name: UniversalRenderPipelineGlobalSettings m_EditorClassIdentifier: k_AssetVersion: 3 m_RenderingLayerNames: - Default m_ValidRenderingLayers: 1 lightLayerName0: lightLayerName1: lightLayerName2: lightLayerName3: lightLayerName4: lightLayerName5: lightLayerName6: lightLayerName7: m_StripDebugVariants: 1 m_StripUnusedPostProcessingVariants: 0 m_StripUnusedVariants: 1 m_StripUnusedLODCrossFadeVariants: 1 m_StripScreenCoordOverrideVariants: 1 supportRuntimeDebugDisplay: 0 m_ShaderVariantLogLevel: 0 m_ExportShaderVariants: 1 ================================================ FILE: VisualProfilerUnityProject/Assets/UniversalRenderPipelineGlobalSettings.asset.meta ================================================ fileFormatVersion: 2 guid: 98f7561e83f4e64478e91723976ec453 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: VisualProfilerUnityProject/Packages/manifest.json ================================================ { "dependencies": { "com.microsoft.mixedreality.visualprofiler": "file:../../com.microsoft.mixedreality.visualprofiler", "com.unity.feature.development": "1.0.1", "com.unity.render-pipelines.universal": "14.0.9", "com.unity.textmeshpro": "3.0.8", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", "com.unity.modules.animation": "1.0.0", "com.unity.modules.assetbundle": "1.0.0", "com.unity.modules.audio": "1.0.0", "com.unity.modules.cloth": "1.0.0", "com.unity.modules.director": "1.0.0", "com.unity.modules.imageconversion": "1.0.0", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0", "com.unity.modules.particlesystem": "1.0.0", "com.unity.modules.physics": "1.0.0", "com.unity.modules.physics2d": "1.0.0", "com.unity.modules.screencapture": "1.0.0", "com.unity.modules.terrain": "1.0.0", "com.unity.modules.terrainphysics": "1.0.0", "com.unity.modules.tilemap": "1.0.0", "com.unity.modules.ui": "1.0.0", "com.unity.modules.uielements": "1.0.0", "com.unity.modules.umbra": "1.0.0", "com.unity.modules.unityanalytics": "1.0.0", "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.unitywebrequestassetbundle": "1.0.0", "com.unity.modules.unitywebrequestaudio": "1.0.0", "com.unity.modules.unitywebrequesttexture": "1.0.0", "com.unity.modules.unitywebrequestwww": "1.0.0", "com.unity.modules.vehicles": "1.0.0", "com.unity.modules.video": "1.0.0", "com.unity.modules.vr": "1.0.0", "com.unity.modules.wind": "1.0.0", "com.unity.modules.xr": "1.0.0" } } ================================================ FILE: VisualProfilerUnityProject/Packages/packages-lock.json ================================================ { "dependencies": { "com.microsoft.mixedreality.visualprofiler": { "version": "file:../../com.microsoft.mixedreality.visualprofiler", "depth": 0, "source": "local", "dependencies": {} }, "com.unity.burst": { "version": "1.8.11", "depth": 1, "source": "registry", "dependencies": { "com.unity.mathematics": "1.2.1" }, "url": "https://packages.unity.com" }, "com.unity.editorcoroutines": { "version": "1.0.0", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.ext.nunit": { "version": "1.0.6", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.feature.development": { "version": "1.0.1", "depth": 0, "source": "builtin", "dependencies": { "com.unity.ide.visualstudio": "2.0.22", "com.unity.ide.rider": "3.0.26", "com.unity.ide.vscode": "1.2.5", "com.unity.editorcoroutines": "1.0.0", "com.unity.performance.profile-analyzer": "1.2.2", "com.unity.test-framework": "1.1.33", "com.unity.testtools.codecoverage": "1.2.4" } }, "com.unity.ide.rider": { "version": "3.0.26", "depth": 1, "source": "registry", "dependencies": { "com.unity.ext.nunit": "1.0.6" }, "url": "https://packages.unity.com" }, "com.unity.ide.visualstudio": { "version": "2.0.22", "depth": 1, "source": "registry", "dependencies": { "com.unity.test-framework": "1.1.9" }, "url": "https://packages.unity.com" }, "com.unity.ide.vscode": { "version": "1.2.5", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.mathematics": { "version": "1.2.6", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.performance.profile-analyzer": { "version": "1.2.2", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.render-pipelines.core": { "version": "14.0.9", "depth": 1, "source": "builtin", "dependencies": { "com.unity.ugui": "1.0.0", "com.unity.modules.physics": "1.0.0", "com.unity.modules.terrain": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" } }, "com.unity.render-pipelines.universal": { "version": "14.0.9", "depth": 0, "source": "builtin", "dependencies": { "com.unity.mathematics": "1.2.1", "com.unity.burst": "1.8.9", "com.unity.render-pipelines.core": "14.0.9", "com.unity.shadergraph": "14.0.9", "com.unity.render-pipelines.universal-config": "14.0.9" } }, "com.unity.render-pipelines.universal-config": { "version": "14.0.9", "depth": 1, "source": "builtin", "dependencies": { "com.unity.render-pipelines.core": "14.0.9" } }, "com.unity.searcher": { "version": "4.9.2", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.settings-manager": { "version": "2.0.1", "depth": 2, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.shadergraph": { "version": "14.0.9", "depth": 1, "source": "builtin", "dependencies": { "com.unity.render-pipelines.core": "14.0.9", "com.unity.searcher": "4.9.2" } }, "com.unity.test-framework": { "version": "1.1.33", "depth": 1, "source": "registry", "dependencies": { "com.unity.ext.nunit": "1.0.6", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.testtools.codecoverage": { "version": "1.2.4", "depth": 1, "source": "registry", "dependencies": { "com.unity.test-framework": "1.0.16", "com.unity.settings-manager": "1.0.1" }, "url": "https://packages.unity.com" }, "com.unity.textmeshpro": { "version": "3.0.8", "depth": 0, "source": "registry", "dependencies": { "com.unity.ugui": "1.0.0" }, "url": "https://packages.unity.com" }, "com.unity.ugui": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.ui": "1.0.0", "com.unity.modules.imgui": "1.0.0" } }, "com.unity.modules.ai": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.androidjni": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.animation": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.assetbundle": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.audio": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.cloth": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.physics": "1.0.0" } }, "com.unity.modules.director": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.audio": "1.0.0", "com.unity.modules.animation": "1.0.0" } }, "com.unity.modules.imageconversion": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.imgui": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.jsonserialize": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.particlesystem": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.physics": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.physics2d": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.screencapture": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.imageconversion": "1.0.0" } }, "com.unity.modules.subsystems": { "version": "1.0.0", "depth": 1, "source": "builtin", "dependencies": { "com.unity.modules.jsonserialize": "1.0.0" } }, "com.unity.modules.terrain": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.terrainphysics": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.physics": "1.0.0", "com.unity.modules.terrain": "1.0.0" } }, "com.unity.modules.tilemap": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.physics2d": "1.0.0" } }, "com.unity.modules.ui": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.uielements": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.ui": "1.0.0", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" } }, "com.unity.modules.umbra": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.unityanalytics": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" } }, "com.unity.modules.unitywebrequest": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.unitywebrequestassetbundle": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.assetbundle": "1.0.0", "com.unity.modules.unitywebrequest": "1.0.0" } }, "com.unity.modules.unitywebrequestaudio": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.audio": "1.0.0" } }, "com.unity.modules.unitywebrequesttexture": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.imageconversion": "1.0.0" } }, "com.unity.modules.unitywebrequestwww": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.unitywebrequestassetbundle": "1.0.0", "com.unity.modules.unitywebrequestaudio": "1.0.0", "com.unity.modules.audio": "1.0.0", "com.unity.modules.assetbundle": "1.0.0", "com.unity.modules.imageconversion": "1.0.0" } }, "com.unity.modules.vehicles": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.physics": "1.0.0" } }, "com.unity.modules.video": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.audio": "1.0.0", "com.unity.modules.ui": "1.0.0", "com.unity.modules.unitywebrequest": "1.0.0" } }, "com.unity.modules.vr": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.jsonserialize": "1.0.0", "com.unity.modules.physics": "1.0.0", "com.unity.modules.xr": "1.0.0" } }, "com.unity.modules.wind": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.xr": { "version": "1.0.0", "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.physics": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0", "com.unity.modules.subsystems": "1.0.0" } } } } ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/AudioManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!11 &1 AudioManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_Volume: 1 Rolloff Scale: 1 Doppler Factor: 1 Default Speaker Mode: 2 m_SampleRate: 0 m_DSPBufferSize: 1024 m_VirtualVoiceCount: 512 m_RealVoiceCount: 32 m_SpatializerPlugin: m_AmbisonicDecoderPlugin: m_DisableAudio: 0 m_VirtualizeEffects: 1 m_RequestedDSPBufferSize: 1024 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/ClusterInputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!236 &1 ClusterInputManager: m_ObjectHideFlags: 0 m_Inputs: [] ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/DynamicsManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 serializedVersion: 11 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 m_DefaultSolverVelocityIterations: 1 m_QueriesHitBackfaces: 0 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 1 m_ClothInterCollisionSettingsToggle: 0 m_ContactPairsMode: 0 m_BroadphaseType: 0 m_WorldBounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 250, y: 250, z: 250} m_WorldSubdivisions: 8 m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 m_DefaultMaxAngluarSpeed: 7 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/EditorBuildSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1045 &1 EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - enabled: 1 path: Assets/Scenes/SampleScene.unity guid: 9fc0d4010bbf28b4594072e72b8655ab m_configObjects: {} ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/EditorSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 serializedVersion: 11 m_ExternalVersionControlSupport: Visible Meta Files m_SerializationMode: 2 m_LineEndingsForNewScripts: 0 m_DefaultBehaviorMode: 0 m_PrefabRegularEnvironment: {fileID: 0} m_PrefabUIEnvironment: {fileID: 0} m_SpritePackerMode: 0 m_SpritePackerPaddingPower: 1 m_EtcTextureCompressorBehavior: 1 m_EtcTextureFastCompressor: 1 m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref m_ProjectGenerationRootNamespace: m_CollabEditorSettings: inProgressEnabled: 1 m_EnableTextureStreamingInEditMode: 1 m_EnableTextureStreamingInPlayMode: 1 m_AsyncShaderCompilation: 1 m_EnterPlayModeOptionsEnabled: 0 m_EnterPlayModeOptions: 3 m_ShowLightmapResolutionOverlay: 1 m_UseLegacyProbeSampleCount: 0 m_SerializeInlineMappingsOnOneLine: 1 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/GraphicsSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!30 &1 GraphicsSettings: m_ObjectHideFlags: 0 serializedVersion: 15 m_Deferred: m_Mode: 1 m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} m_DeferredReflections: m_Mode: 1 m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} m_ScreenSpaceShadows: m_Mode: 1 m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} m_DepthNormals: m_Mode: 1 m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} m_MotionVectors: m_Mode: 1 m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} m_LightHalo: m_Mode: 1 m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} m_VideoShadersIncludeMode: 2 m_AlwaysIncludedShaders: - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] m_PreloadShadersBatchTimeLimit: -1 m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 11400000, guid: 4111f02a480035642ab852db53553d24, type: 2} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} m_DefaultRenderingPath: 1 m_DefaultMobileRenderingPath: 1 m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 m_InstancingStripping: 0 m_BrgStripping: 0 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 m_LightmapKeepDynamicPlain: 1 m_LightmapKeepDynamicDirCombined: 1 m_LightmapKeepShadowMask: 1 m_LightmapKeepSubtractive: 1 m_FogKeepLinear: 1 m_FogKeepExp: 1 m_FogKeepExp2: 1 m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 1 m_DefaultRenderingLayerMask: 1 m_LogWhenShaderIsCompiled: 0 m_SRPDefaultSettings: UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 98f7561e83f4e64478e91723976ec453, type: 2} m_LightProbeOutsideHullStrategy: 0 m_CameraRelativeLightCulling: 0 m_CameraRelativeShadowCulling: 0 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/InputManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!13 &1 InputManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_Axes: - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: a altPositiveButton: d gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: s altPositiveButton: w gravity: 3 dead: 0.001 sensitivity: 3 snap: 1 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left ctrl altNegativeButton: altPositiveButton: mouse 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left alt altNegativeButton: altPositiveButton: mouse 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left shift altNegativeButton: altPositiveButton: mouse 2 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: space altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse X descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Mouse Y descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Mouse ScrollWheel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0 sensitivity: 0.1 snap: 0 invert: 0 type: 1 axis: 2 joyNum: 0 - serializedVersion: 3 m_Name: Horizontal descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 0 type: 2 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Vertical descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: altNegativeButton: altPositiveButton: gravity: 0 dead: 0.19 sensitivity: 1 snap: 0 invert: 1 type: 2 axis: 1 joyNum: 0 - serializedVersion: 3 m_Name: Fire1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 0 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 1 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Fire3 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 2 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Jump descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: joystick button 3 altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: return altNegativeButton: altPositiveButton: joystick button 0 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Submit descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: enter altNegativeButton: altPositiveButton: space gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Cancel descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: escape altNegativeButton: altPositiveButton: joystick button 1 gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Enable Debug Button 1 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left ctrl altNegativeButton: altPositiveButton: joystick button 8 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Enable Debug Button 2 descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: backspace altNegativeButton: altPositiveButton: joystick button 9 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Reset descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left alt altNegativeButton: altPositiveButton: joystick button 1 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Next descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: page down altNegativeButton: altPositiveButton: joystick button 5 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Previous descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: page up altNegativeButton: altPositiveButton: joystick button 4 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Validate descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: return altNegativeButton: altPositiveButton: joystick button 0 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Persistent descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: right shift altNegativeButton: altPositiveButton: joystick button 2 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Multiplier descriptiveName: descriptiveNegativeName: negativeButton: positiveButton: left shift altNegativeButton: altPositiveButton: joystick button 3 gravity: 0 dead: 0 sensitivity: 0 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 0 axis: 0 joyNum: 0 - serializedVersion: 3 m_Name: Debug Vertical descriptiveName: descriptiveNegativeName: negativeButton: down positiveButton: up altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 2 axis: 6 joyNum: 0 - serializedVersion: 3 m_Name: Debug Horizontal descriptiveName: descriptiveNegativeName: negativeButton: left positiveButton: right altNegativeButton: altPositiveButton: gravity: 1000 dead: 0.001 sensitivity: 1000 snap: 0 invert: 0 type: 2 axis: 5 joyNum: 0 m_UsePhysicalKeys: 1 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/MemorySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!387306366 &1 MemorySettings: m_ObjectHideFlags: 0 m_EditorMemorySettings: m_MainAllocatorBlockSize: -1 m_ThreadAllocatorBlockSize: -1 m_MainGfxBlockSize: -1 m_ThreadGfxBlockSize: -1 m_CacheBlockSize: -1 m_TypetreeBlockSize: -1 m_ProfilerBlockSize: -1 m_ProfilerEditorBlockSize: -1 m_BucketAllocatorGranularity: -1 m_BucketAllocatorBucketsCount: -1 m_BucketAllocatorBlockSize: -1 m_BucketAllocatorBlockCount: -1 m_ProfilerBucketAllocatorGranularity: -1 m_ProfilerBucketAllocatorBucketsCount: -1 m_ProfilerBucketAllocatorBlockSize: -1 m_ProfilerBucketAllocatorBlockCount: -1 m_TempAllocatorSizeMain: -1 m_JobTempAllocatorBlockSize: -1 m_BackgroundJobTempAllocatorBlockSize: -1 m_JobTempAllocatorReducedBlockSize: -1 m_TempAllocatorSizeGIBakingWorker: -1 m_TempAllocatorSizeNavMeshWorker: -1 m_TempAllocatorSizeAudioWorker: -1 m_TempAllocatorSizeCloudWorker: -1 m_TempAllocatorSizeGfx: -1 m_TempAllocatorSizeJobWorker: -1 m_TempAllocatorSizeBackgroundWorker: -1 m_TempAllocatorSizePreloadManager: -1 m_PlatformMemorySettings: {} ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/NavMeshAreas.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!126 &1 NavMeshProjectSettings: m_ObjectHideFlags: 0 serializedVersion: 2 areas: - name: Walkable cost: 1 - name: Not Walkable cost: 1 - name: Jump cost: 2 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 - name: cost: 1 m_LastAgentTypeID: -887442657 m_Settings: - serializedVersion: 2 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 agentSlope: 45 agentClimb: 0.75 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 minRegionArea: 2 manualCellSize: 0 cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 accuratePlacement: 0 debug: m_Flags: 0 m_SettingNames: - Humanoid ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/PackageManagerSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 61 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: m_EnablePreReleasePackages: 0 m_EnablePackageDependencies: 0 m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 m_SeeAllPackageVersions: 0 oneTimeWarningShown: 0 m_Registries: - m_Id: main m_Name: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 m_Capabilities: 7 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: m_Modified: 0 m_ErrorMessage: m_UserModificationsInstanceId: -830 m_OriginalInstanceId: -832 m_LoadAssets: 0 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json ================================================ { "m_Dictionary": { "m_DictionaryValues": [] } } ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/Physics2DSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!19 &1 Physics2DSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_Gravity: {x: 0, y: -9.81} m_DefaultMaterial: {fileID: 0} m_VelocityIterations: 8 m_PositionIterations: 3 m_VelocityThreshold: 1 m_MaxLinearCorrection: 0.2 m_MaxAngularCorrection: 8 m_MaxTranslationSpeed: 100 m_MaxRotationSpeed: 360 m_BaumgarteScale: 0.2 m_BaumgarteTimeOfImpactScale: 0.75 m_TimeToSleep: 0.5 m_LinearSleepTolerance: 0.01 m_AngularSleepTolerance: 2 m_DefaultContactOffset: 0.01 m_JobOptions: serializedVersion: 2 useMultithreading: 0 useConsistencySorting: 0 m_InterpolationPosesPerJob: 100 m_NewContactsPerJob: 30 m_CollideContactsPerJob: 100 m_ClearFlagsPerJob: 200 m_ClearBodyForcesPerJob: 200 m_SyncDiscreteFixturesPerJob: 50 m_SyncContinuousFixturesPerJob: 50 m_FindNearestContactsPerJob: 100 m_UpdateTriggerContactsPerJob: 100 m_IslandSolverCostThreshold: 100 m_IslandSolverBodyCostScale: 1 m_IslandSolverContactCostScale: 10 m_IslandSolverJointCostScale: 10 m_IslandSolverBodiesPerJob: 50 m_IslandSolverContactsPerJob: 50 m_AutoSimulation: 1 m_QueriesHitTriggers: 1 m_QueriesStartInColliders: 1 m_CallbacksOnDisable: 1 m_ReuseCollisionCallbacks: 1 m_AutoSyncTransforms: 0 m_AlwaysShowColliders: 0 m_ShowColliderSleep: 1 m_ShowColliderContacts: 0 m_ShowColliderAABB: 0 m_ContactArrowScale: 0.2 m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/PresetManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!1386491679 &1 PresetManager: m_ObjectHideFlags: 0 serializedVersion: 2 m_DefaultPresets: {} ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/ProjectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 serializedVersion: 26 productGUID: 8fccff143201df44489bf7dcf6bd86af AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 defaultScreenOrientation: 4 targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany productName: Visual Profiler defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} m_ShowUnitySplashScreen: 1 m_ShowUnitySplashLogo: 1 m_SplashScreenOverlayOpacity: 1 m_SplashScreenAnimation: 1 m_SplashScreenLogoStyle: 1 m_SplashScreenDrawMode: 0 m_SplashScreenBackgroundAnimationZoom: 1 m_SplashScreenLogoAnimationZoom: 1 m_SplashScreenBackgroundLandscapeAspect: 1 m_SplashScreenBackgroundPortraitAspect: 1 m_SplashScreenBackgroundLandscapeUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenBackgroundPortraitUvs: serializedVersion: 2 x: 0 y: 0 width: 1 height: 1 m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} defaultScreenWidth: 1920 defaultScreenHeight: 1080 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 unsupportedMSAAFallback: 0 m_SpriteBatchVertexThreshold: 300 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 numberOfMipsStrippedPerMipmapLimitGroup: {} m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 allowedAutorotateToLandscapeLeft: 1 useOSAutorotation: 1 use32BitDisplayBuffer: 1 preserveFramebufferAlpha: 0 disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 1 androidUseSwappy: 1 androidBlitType: 0 androidResizableWindow: 0 androidDefaultWindowWidth: 1920 androidDefaultWindowHeight: 1080 androidMinimumWindowWidth: 400 androidMinimumWindowHeight: 300 androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 captureSingleScreen: 0 muteOtherAudioSources: 0 Prepare IOS For Recording: 0 Force IOS Speakers When Recording: 0 deferSystemGesturesMode: 0 hideHomeButton: 0 submitAnalytics: 1 usePlayerLog: 1 dedicatedServerOptimizations: 0 bakeCollisionMeshes: 0 forceSingleInstance: 0 useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 xboxEnableKinectAutoTracking: 0 xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 fullscreenMode: 3 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 xboxEnableGuest: 0 xboxEnablePIXSampling: 0 metalFramebufferOnly: 0 xboxOneResolution: 0 xboxOneSResolution: 0 xboxOneXResolution: 3 xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 16384 switchQueueComputeMemory: 262144 switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 switchGpuScratchPoolGranularity: 2097152 switchAllowGpuScratchShrinking: 0 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 switchNVNGraphicsFirmwareMemory: 32 switchMaxWorkerMultiple: 8 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 1 vulkanEnableLateAcquireNextImage: 0 vulkanEnableCommandBufferRecycling: 1 loadStoreDebugModeEnabled: 0 bundleVersion: 0.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 1 xboxOneEnable7thCore: 1 vrSettings: enable360StereoCapture: 0 isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 enableOpenGLProfilerGPURecorders: 1 allowHDRDisplaySupport: 0 useHDRDisplay: 0 hdrBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: Standalone: com.DefaultCompany.Visual-Profiler buildNumber: Standalone: 0 VisionOS: 0 iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: stripEngineCode: 1 iPhoneStrippingLevel: 0 iPhoneScriptCallOptimization: 0 ForceInternetPermission: 0 ForceSDCardPermission: 0 CreateWallpaper: 0 APKExpansionFiles: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 1 strictShaderVariantMatching: 0 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 12.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 12.0 VisionOSSdkVersion: 0 VisionOSTargetOSVersionString: 1.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] tvOSSmallIconLayers2x: [] tvOSLargeIconLayers: [] tvOSLargeIconLayers2x: [] tvOSTopShelfImageLayers: [] tvOSTopShelfImageLayers2x: [] tvOSTopShelfImageWideLayers: [] tvOSTopShelfImageWideLayers2x: [] iOSLaunchScreenType: 0 iOSLaunchScreenPortrait: {fileID: 0} iOSLaunchScreenLandscape: {fileID: 0} iOSLaunchScreenBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreenFillPct: 100 iOSLaunchScreenSize: 100 iOSLaunchScreenCustomXibPath: iOSLaunchScreeniPadType: 0 iOSLaunchScreeniPadImage: {fileID: 0} iOSLaunchScreeniPadBackgroundColor: serializedVersion: 2 rgba: 0 iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: iOSLaunchScreenCustomStoryboardPath: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: VisionOSManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 VisionOSManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 shaderPrecisionModel: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.template.3d@8.1.1 templateDefaultScene: Assets/Scenes/SampleScene.unity useCustomMainManifest: 0 useCustomLauncherManifest: 0 useCustomMainGradleTemplate: 0 useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 useCustomGradleSettingsTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 1 AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: AndroidKeyaliasName: AndroidEnableArmv9SecurityFeatures: 0 AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 chromeosInputEmulation: 1 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: - m_BuildTarget: Android m_Icons: - m_Textures: [] m_Width: 432 m_Height: 432 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 324 m_Height: 324 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 216 m_Height: 216 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 162 m_Height: 162 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 108 m_Height: 108 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 81 m_Height: 81 m_Kind: 2 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 1 m_SubKind: - m_Textures: [] m_Width: 192 m_Height: 192 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 144 m_Height: 144 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 96 m_Height: 96 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 72 m_Height: 72 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 48 m_Height: 48 m_Kind: 0 m_SubKind: - m_Textures: [] m_Width: 36 m_Height: 36 m_Kind: 0 m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: tvOS m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: Android m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: iPhone m_StaticBatching: 1 m_DynamicBatching: 0 - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 m_BuildTargetShaderSettings: [] m_BuildTargetGraphicsJobs: - m_BuildTarget: MacStandaloneSupport m_GraphicsJobs: 0 - m_BuildTarget: Switch m_GraphicsJobs: 1 - m_BuildTarget: MetroSupport m_GraphicsJobs: 1 - m_BuildTarget: AppleTVSupport m_GraphicsJobs: 0 - m_BuildTarget: BJMSupport m_GraphicsJobs: 1 - m_BuildTarget: LinuxStandaloneSupport m_GraphicsJobs: 1 - m_BuildTarget: PS4Player m_GraphicsJobs: 1 - m_BuildTarget: iOSSupport m_GraphicsJobs: 0 - m_BuildTarget: WindowsStandaloneSupport m_GraphicsJobs: 1 - m_BuildTarget: XboxOnePlayer m_GraphicsJobs: 1 - m_BuildTarget: LuminSupport m_GraphicsJobs: 0 - m_BuildTarget: AndroidPlayer m_GraphicsJobs: 0 - m_BuildTarget: WebGLSupport m_GraphicsJobs: 0 m_BuildTargetGraphicsJobMode: - m_BuildTarget: PS4Player m_GraphicsJobMode: 0 - m_BuildTarget: XboxOnePlayer m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 150000000b000000 m_Automatic: 1 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: WebGLSupport m_APIs: 0b000000 m_Automatic: 1 m_BuildTargetVRSettings: - m_BuildTarget: Standalone m_Enabled: 0 m_Devices: - Oculus - OpenVR m_DefaultShaderChunkSizeInMB: 16 m_DefaultShaderChunkCount: 0 openGLRequireES31: 0 openGLRequireES31AEP: 0 openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: - m_BuildTarget: Android m_EncodingQuality: 1 - m_BuildTarget: iPhone m_EncodingQuality: 1 - m_BuildTarget: tvOS m_EncodingQuality: 1 m_BuildTargetGroupHDRCubemapEncodingQuality: - m_BuildTarget: Android m_EncodingQuality: 1 - m_BuildTarget: iPhone m_EncodingQuality: 1 - m_BuildTarget: tvOS m_EncodingQuality: 1 m_BuildTargetGroupLightmapSettings: [] m_BuildTargetGroupLoadStoreDebugModeSettings: [] m_BuildTargetNormalMapEncoding: - m_BuildTarget: Android m_Encoding: 1 - m_BuildTarget: iPhone m_Encoding: 1 - m_BuildTarget: tvOS m_Encoding: 1 m_BuildTargetDefaultTextureCompressionFormat: - m_BuildTarget: Android m_Format: 3 playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 enableInternalProfiler: 0 logObjCUncaughtExceptions: 1 enableCrashReportAPI: 0 cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: bluetoothUsageDescription: macOSTargetOSVersion: 10.13.0 switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 switchSocketAllocatorPoolSize: 128 switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchEnableFileSystemTrace: 0 switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchCompilerFlags: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: switchTitleNames_3: switchTitleNames_4: switchTitleNames_5: switchTitleNames_6: switchTitleNames_7: switchTitleNames_8: switchTitleNames_9: switchTitleNames_10: switchTitleNames_11: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: switchPublisherNames_3: switchPublisherNames_4: switchPublisherNames_5: switchPublisherNames_6: switchPublisherNames_7: switchPublisherNames_8: switchPublisherNames_9: switchPublisherNames_10: switchPublisherNames_11: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} switchIcons_3: {fileID: 0} switchIcons_4: {fileID: 0} switchIcons_5: {fileID: 0} switchIcons_6: {fileID: 0} switchIcons_7: {fileID: 0} switchIcons_8: {fileID: 0} switchIcons_9: {fileID: 0} switchIcons_10: {fileID: 0} switchIcons_11: {fileID: 0} switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} switchSmallIcons_3: {fileID: 0} switchSmallIcons_4: {fileID: 0} switchSmallIcons_5: {fileID: 0} switchSmallIcons_6: {fileID: 0} switchSmallIcons_7: {fileID: 0} switchSmallIcons_8: {fileID: 0} switchSmallIcons_9: {fileID: 0} switchSmallIcons_10: {fileID: 0} switchSmallIcons_11: {fileID: 0} switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: switchMainThreadStackSize: 1048576 switchPresenceGroupId: switchLogoHandling: 0 switchReleaseVersion: 0 switchDisplayVersion: 1.0.0 switchStartupUserAccount: 0 switchSupportedLanguagesMask: 0 switchLogoType: 0 switchApplicationErrorCodeCategory: switchUserAccountSaveDataSize: 0 switchUserAccountSaveDataJournalSize: 0 switchApplicationAttribute: 0 switchCardSpecSize: -1 switchCardSpecClock: -1 switchRatingsMask: 0 switchRatingsInt_0: 0 switchRatingsInt_1: 0 switchRatingsInt_2: 0 switchRatingsInt_3: 0 switchRatingsInt_4: 0 switchRatingsInt_5: 0 switchRatingsInt_6: 0 switchRatingsInt_7: 0 switchRatingsInt_8: 0 switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: switchLocalCommunicationIds_3: switchLocalCommunicationIds_4: switchLocalCommunicationIds_5: switchLocalCommunicationIds_6: switchLocalCommunicationIds_7: switchParentalControl: 0 switchAllowsScreenshot: 1 switchAllowsVideoCapturing: 1 switchAllowsRuntimeAddOnContentInstall: 0 switchDataLossConfirmation: 0 switchUserAccountLockEnabled: 0 switchSystemResourceMemory: 16777216 switchSupportedNpadStyles: 22 switchNativeFsCacheSize: 32 switchIsHoldTypeHorizontal: 0 switchSupportedNpadCount: 8 switchEnableTouchScreen: 1 switchSocketConfigEnabled: 0 switchTcpInitialSendBufferSize: 32 switchTcpInitialReceiveBufferSize: 64 switchTcpAutoSendBufferSizeMax: 256 switchTcpAutoReceiveBufferSizeMax: 256 switchUdpSendBufferSize: 9 switchUdpReceiveBufferSize: 42 switchSocketBufferEfficiency: 4 switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchUseNewStyleFilepaths: 1 switchUseLegacyFmodPriorities: 0 switchUseMicroSleepForYield: 1 switchEnableRamDiskSupport: 0 switchMicroSleepForYieldTime: 25 switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: ps4ParentalLevel: 11 ps4ContentID: ED1633-NPXX51362_00-0000000000000000 ps4Category: 0 ps4MasterVersion: 01.00 ps4AppVersion: 01.00 ps4AppType: 0 ps4ParamSfxPath: ps4VideoOutPixelFormat: 0 ps4VideoOutInitialWidth: 1920 ps4VideoOutBaseModeInitialWidth: 1920 ps4VideoOutReprojectionRate: 60 ps4PronunciationXMLPath: ps4PronunciationSIGPath: ps4BackgroundImagePath: ps4StartupImagePath: ps4StartupImagesFolder: ps4IconImagesFolder: ps4SaveDataImagePath: ps4SdkOverride: ps4BGMPath: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: ps4PlayTogetherPlayerCount: 0 ps4EnterButtonAssignment: 1 ps4ApplicationParam1: 0 ps4ApplicationParam2: 0 ps4ApplicationParam3: 0 ps4ApplicationParam4: 0 ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 ps4pnFriends: 1 ps4pnGameCustomData: 1 playerPrefsSupport: 0 enableApplicationExit: 0 resetTempFolder: 1 restrictedAudioUsageRights: 0 ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 ps4attribCpuUsage: 0 ps4PatchPkgPath: ps4PatchLatestPkgPath: ps4PatchChangeinfoPath: ps4PatchDayOne: 0 ps4attribUserManagement: 0 ps4attribMoveSupport: 0 ps4attrib3DSupport: 0 ps4attribShareSupport: 0 ps4attribExclusiveVR: 0 ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 ps4CompatibilityPS5: 0 ps4AllowPS5Detection: 0 ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 16 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 webGLShowDiagnostics: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: webGLModulesDirectory: webGLTemplate: APPLICATION:Default webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 webGLInitialMemorySize: 32 webGLMaximumMemorySize: 2048 webGLMemoryGrowthMode: 2 webGLMemoryLinearGrowthStep: 16 webGLMemoryGeometricGrowthStep: 0.2 webGLMemoryGeometricGrowthCap: 96 webGLPowerPreference: 2 scriptingDefineSymbols: {} additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: {} il2cppCompilerConfiguration: {} il2cppCodeGeneration: {} managedStrippingLevel: EmbeddedLinux: 1 GameCoreScarlett: 1 GameCoreXboxOne: 1 Nintendo Switch: 1 PS4: 1 PS5: 1 QNX: 1 Stadia: 1 VisionOS: 1 WebGL: 1 Windows Store Apps: 1 XboxOne: 1 iPhone: 1 tvOS: 1 incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: {} m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: Visual Profiler metroPackageVersion: metroCertificatePath: metroCertificatePassword: metroCertificateSubject: metroCertificateIssuer: metroCertificateNotAfter: 0000000000000000 metroApplicationDescription: Visual Profiler wsaImages: {} metroTileShortName: metroTileShowName: 0 metroMediumTileShowName: 0 metroLargeTileShowName: 0 metroWideTileShowName: 0 metroSupportStreamingInstall: 0 metroLastRequiredScene: 0 metroDefaultTileSize: 1 metroTileForegroundText: 2 metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} metroSplashScreenUseBackgroundColor: 0 platformCapabilities: {} metroTargetDeviceFamilies: {} metroFTAName: metroFTAFileTypes: [] metroProtocolName: vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: XboxOneContentId: XboxOneTitleId: XboxOneSCId: XboxOneGameOsOverridePath: XboxOnePackagingOverridePath: XboxOneAppManifestOverridePath: XboxOneVersion: 1.0.0.0 XboxOnePackageEncryption: 0 XboxOnePackageUpdateGranularity: 2 XboxOneDescription: XboxOneLanguage: - enus XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 1 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 XboxOneOverrideIdentityName: XboxOneOverrideIdentityPublisher: vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: m_Name: m_ModelFolderPath: m_PortalFolderPath: luminCert: m_CertPath: m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: hmiPlayerDataPath: hmiForceSRGBBlit: 1 embeddedLinuxEnableGamepadInput: 1 hmiLogStartupTiming: 0 hmiCpuConfiguration: apiCompatibilityLevel: 6 activeInputHandler: 0 windowsGamepadBackendHint: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 0 hmiLoadingImage: {fileID: 0} platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 insecureHttpOption: 0 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/ProjectVersion.txt ================================================ m_EditorVersion: 2022.3.15f1 m_EditorVersionWithRevision: 2022.3.15f1 (b58023a2b463) ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/QualitySettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!47 &1 QualitySettings: m_ObjectHideFlags: 0 serializedVersion: 5 m_CurrentQuality: 1 m_QualitySettings: - serializedVersion: 3 name: Very Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 15 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 skinWeights: 1 globalTextureMipmapLimit: 1 textureMipmapLimitSettings: [] anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 useLegacyDetailDistribution: 1 vSyncCount: 0 realtimeGICPUUsage: 25 lodBias: 0.3 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 terrainBasemapDistance: 1000 terrainDetailDistance: 80 terrainTreeDistance: 5000 terrainBillboardStart: 50 terrainFadeLength: 5 terrainMaxTrees: 50 excludedTargetPlatforms: [] - serializedVersion: 3 name: Low pixelLightCount: 0 shadows: 0 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 skinWeights: 2 globalTextureMipmapLimit: 0 textureMipmapLimitSettings: [] anisotropicTextures: 0 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 useLegacyDetailDistribution: 1 vSyncCount: 0 realtimeGICPUUsage: 25 lodBias: 0.4 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 16 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 terrainBasemapDistance: 1000 terrainDetailDistance: 80 terrainTreeDistance: 5000 terrainBillboardStart: 50 terrainFadeLength: 5 terrainMaxTrees: 50 excludedTargetPlatforms: [] - serializedVersion: 3 name: Medium pixelLightCount: 1 shadows: 1 shadowResolution: 0 shadowProjection: 1 shadowCascades: 1 shadowDistance: 20 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 0 skinWeights: 2 globalTextureMipmapLimit: 0 textureMipmapLimitSettings: [] anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 0 realtimeReflectionProbes: 0 billboardsFaceCameraPosition: 0 useLegacyDetailDistribution: 1 vSyncCount: 1 realtimeGICPUUsage: 25 lodBias: 0.7 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 64 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 terrainBasemapDistance: 1000 terrainDetailDistance: 80 terrainTreeDistance: 5000 terrainBillboardStart: 50 terrainFadeLength: 5 terrainMaxTrees: 50 excludedTargetPlatforms: [] - serializedVersion: 3 name: High pixelLightCount: 2 shadows: 2 shadowResolution: 1 shadowProjection: 1 shadowCascades: 2 shadowDistance: 40 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 skinWeights: 2 globalTextureMipmapLimit: 0 textureMipmapLimitSettings: [] anisotropicTextures: 1 antiAliasing: 0 softParticles: 0 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 useLegacyDetailDistribution: 1 vSyncCount: 1 realtimeGICPUUsage: 50 lodBias: 1 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 256 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 terrainBasemapDistance: 1000 terrainDetailDistance: 80 terrainTreeDistance: 5000 terrainBillboardStart: 50 terrainFadeLength: 5 terrainMaxTrees: 50 excludedTargetPlatforms: [] - serializedVersion: 3 name: Very High pixelLightCount: 3 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 2 shadowDistance: 70 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 skinWeights: 4 globalTextureMipmapLimit: 0 textureMipmapLimitSettings: [] anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 useLegacyDetailDistribution: 1 vSyncCount: 1 realtimeGICPUUsage: 50 lodBias: 1.5 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 1024 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 terrainBasemapDistance: 1000 terrainDetailDistance: 80 terrainTreeDistance: 5000 terrainBillboardStart: 50 terrainFadeLength: 5 terrainMaxTrees: 50 excludedTargetPlatforms: [] - serializedVersion: 3 name: Ultra pixelLightCount: 4 shadows: 2 shadowResolution: 2 shadowProjection: 1 shadowCascades: 4 shadowDistance: 150 shadowNearPlaneOffset: 3 shadowCascade2Split: 0.33333334 shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} shadowmaskMode: 1 skinWeights: 4 globalTextureMipmapLimit: 0 textureMipmapLimitSettings: [] anisotropicTextures: 2 antiAliasing: 2 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 billboardsFaceCameraPosition: 1 useLegacyDetailDistribution: 1 vSyncCount: 1 realtimeGICPUUsage: 100 lodBias: 2 maximumLODLevel: 0 enableLODCrossFade: 1 streamingMipmapsActive: 0 streamingMipmapsAddAllCameras: 1 streamingMipmapsMemoryBudget: 512 streamingMipmapsRenderersPerFrame: 512 streamingMipmapsMaxLevelReduction: 2 streamingMipmapsMaxFileIORequests: 1024 particleRaycastBudget: 4096 asyncUploadTimeSlice: 2 asyncUploadBufferSize: 16 asyncUploadPersistentBuffer: 1 resolutionScalingFixedDPIFactor: 1 customRenderPipeline: {fileID: 0} terrainQualityOverrides: 0 terrainPixelError: 1 terrainDetailDensityScale: 1 terrainBasemapDistance: 1000 terrainDetailDistance: 80 terrainTreeDistance: 5000 terrainBillboardStart: 50 terrainFadeLength: 5 terrainMaxTrees: 50 excludedTargetPlatforms: [] m_TextureMipmapLimitGroupNames: [] m_PerPlatformDefaultQuality: Android: 2 Lumin: 5 Nintendo 3DS: 5 Nintendo Switch: 5 PS4: 5 PSP2: 2 Server: 0 Stadia: 5 Standalone: 5 WebGL: 3 Windows Store Apps: 5 XboxOne: 5 iPhone: 2 tvOS: 2 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/SceneTemplateSettings.json ================================================ { "templatePinStates": [], "dependencyTypeInfos": [ { "userAdded": false, "type": "UnityEngine.AnimationClip", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEditor.Animations.AnimatorController", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.AnimatorOverrideController", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEditor.Audio.AudioMixerController", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.ComputeShader", "defaultInstantiationMode": 1 }, { "userAdded": false, "type": "UnityEngine.Cubemap", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.GameObject", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEditor.LightingDataAsset", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.LightingSettings", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.Material", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEditor.MonoScript", "defaultInstantiationMode": 1 }, { "userAdded": false, "type": "UnityEngine.PhysicMaterial", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.PhysicsMaterial2D", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.Rendering.VolumeProfile", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEditor.SceneAsset", "defaultInstantiationMode": 1 }, { "userAdded": false, "type": "UnityEngine.Shader", "defaultInstantiationMode": 1 }, { "userAdded": false, "type": "UnityEngine.ShaderVariantCollection", "defaultInstantiationMode": 1 }, { "userAdded": false, "type": "UnityEngine.Texture", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.Texture2D", "defaultInstantiationMode": 0 }, { "userAdded": false, "type": "UnityEngine.Timeline.TimelineAsset", "defaultInstantiationMode": 0 } ], "defaultDependencyTypeInfo": { "userAdded": false, "type": "", "defaultInstantiationMode": 1 }, "newSceneOverride": 0 } ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/ShaderGraphSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 53 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: de02f9e1d18f588468e474319d09a723, type: 3} m_Name: m_EditorClassIdentifier: shaderVariantLimit: 128 customInterpolatorErrorThreshold: 32 customInterpolatorWarningThreshold: 16 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/TagManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!78 &1 TagManager: serializedVersion: 2 tags: [] layers: - Default - TransparentFX - Ignore Raycast - - Water - UI - - - - - - - - - - - - - - - - - - - - - - - - - - m_SortingLayers: - name: Default uniqueID: 0 locked: 0 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/TimeManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 Fixed Timestep: 0.02 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/URPProjectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!114 &1 MonoBehaviour: m_ObjectHideFlags: 61 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} m_Name: m_EditorClassIdentifier: m_LastMaterialVersion: 7 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/UnityConnectSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!310 &1 UnityConnectSettings: m_ObjectHideFlags: 0 serializedVersion: 1 m_Enabled: 0 m_TestMode: 0 m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com m_DashboardUrl: https://dashboard.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com m_Enabled: 0 m_LogBufferSize: 10 m_CaptureEditorExceptions: 1 UnityPurchasingSettings: m_Enabled: 0 m_TestMode: 0 UnityAnalyticsSettings: m_Enabled: 0 m_TestMode: 0 m_InitializeOnStartup: 1 m_PackageRequiringCoreStatsPresent: 0 UnityAdsSettings: m_Enabled: 0 m_InitializeOnStartup: 1 m_TestMode: 0 m_IosGameId: m_AndroidGameId: m_GameIds: {} m_GameId: PerformanceReportingSettings: m_Enabled: 0 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/VFXManager.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!937362698 &1 VFXManager: m_ObjectHideFlags: 0 m_IndirectShader: {fileID: 0} m_CopyBufferShader: {fileID: 0} m_SortShader: {fileID: 0} m_StripUpdateShader: {fileID: 0} m_RenderPipeSettingsPath: m_FixedTimeStep: 0.016666668 m_MaxDeltaTime: 0.05 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/VersionControlSettings.asset ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!890905787 &1 VersionControlSettings: m_ObjectHideFlags: 0 m_Mode: Visible Meta Files m_CollabEditorSettings: inProgressEnabled: 1 ================================================ FILE: VisualProfilerUnityProject/ProjectSettings/XRSettings.asset ================================================ { "m_SettingKeys": [ "VR Device Disabled", "VR Device User Alert" ], "m_SettingValues": [ "False", "False" ] } ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Data/Font.png.meta ================================================ fileFormatVersion: 2 guid: 238d3109a0d14c647b77f334fd2fe5ec TextureImporter: internalIDToNameTable: [] externalObjects: {} serializedVersion: 12 mipmaps: mipMapMode: 1 enableMipMap: 0 sRGBTexture: 1 linearTexture: 0 fadeOut: 0 borderMipMap: 0 mipMapsPreserveCoverage: 0 alphaTestReferenceValue: 0.5 mipMapFadeDistanceStart: 1 mipMapFadeDistanceEnd: 3 bumpmap: convertToNormalMap: 0 externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 isReadable: 0 streamingMipmaps: 0 streamingMipmapsPriority: 0 vTOnly: 0 ignoreMasterTextureLimit: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 seamlessCubemap: 0 textureFormat: 1 maxTextureSize: 2048 textureSettings: serializedVersion: 2 filterMode: 2 aniso: 1 mipBias: 0 wrapU: 1 wrapV: 1 wrapW: 1 nPOTScale: 1 lightmap: 0 compressionQuality: 50 spriteMode: 0 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 spritePivot: {x: 0.5, y: 0.5} spritePixelsToUnits: 100 spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteGenerateFallbackPhysicsShape: 1 alphaUsage: 1 alphaIsTransparency: 0 spriteTessellationDetail: -1 textureType: 0 textureShape: 1 singleChannelComponent: 0 flipbookRows: 1 flipbookColumns: 1 maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 cookieLightType: 1 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: Standalone maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: WebGL maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: Windows Store Apps maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: Android maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 buildTarget: Server maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 textureCompression: 1 compressionQuality: 50 crunchedCompression: 0 allowsAlphaSplitting: 0 overridden: 0 androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 spriteSheet: serializedVersion: 2 sprites: [] outline: [] physicsShape: [] bones: [] spriteID: internalID: 0 vertices: [] indices: edges: [] weights: [] secondaryTextures: [] nameFileIdTable: {} spritePackingTag: pSDRemoveMatte: 0 pSDShowRemoveMatteOption: 0 userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Data/VisualProfiler.mat ================================================ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!21 &2100000 Material: serializedVersion: 6 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: VisualProfiler m_Shader: {fileID: 4800000, guid: 59811c61128561c4aa91d25965b11afb, type: 3} m_ShaderKeywords: m_LightmapFlags: 4 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 m_CustomRenderQueue: 5000 stringTagMap: {} disabledShaderPasses: [] m_SavedProperties: serializedVersion: 3 m_TexEnvs: - _FontTexture: m_Texture: {fileID: 2800000, guid: 238d3109a0d14c647b77f334fd2fe5ec, type: 3} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Floats: [] m_Colors: - _BaseColor: {r: 0, g: 0, b: 0, a: 1} - _Color: {r: 1, g: 1, b: 1, a: 1} m_BuildTextureStacks: [] ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Data/VisualProfiler.mat.meta ================================================ fileFormatVersion: 2 guid: b98f8349d37aef742baaa038e99837c0 NativeFormatImporter: externalObjects: {} mainObjectFileID: 2100000 userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Data/VisualProfiler.shader ================================================ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. Shader "Hidden/Visual Profiler" { Properties { [MainTexture] _FontTexture("Font", 2D) = "black" {} } SubShader { Pass { Name "Main" Tags{ "RenderType" = "Opaque" } Blend Off ZWrite On ZTest Always Cull Off CGPROGRAM #pragma vertex vert #pragma fragment frag // Comment in to help with RenderDoc debugging. //#pragma enable_d3d11_debug_symbols #pragma multi_compile_instancing #include "UnityCG.cginc" struct appdata_t { float4 vertex : POSITION; float2 uv : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct v2f { float4 vertex : SV_POSITION; fixed3 color : COLOR0; fixed3 baseColor : COLOR1; float2 uv : TEXCOORD0; UNITY_VERTEX_OUTPUT_STEREO }; sampler2D _FontTexture; float2 _FontScale; float4x4 _WindowLocalToWorldMatrix; UNITY_INSTANCING_BUFFER_START(Props) UNITY_DEFINE_INSTANCED_PROP(fixed4, _Color) UNITY_DEFINE_INSTANCED_PROP(fixed4, _BaseColor) UNITY_DEFINE_INSTANCED_PROP(float4, _UVOffsetScaleX) UNITY_INSTANCING_BUFFER_END(Props) v2f vert(appdata_t v) { v2f o; UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); float4 uvOffsetScaleX = UNITY_ACCESS_INSTANCED_PROP(Props, _UVOffsetScaleX); // The verticies on the right (UV 1, x) are scaled in the positive X direction for progress bars. float3 localVertex = v.vertex.xyz; localVertex.x += v.uv.x * uvOffsetScaleX.z; // Convert from window (local) to world space. // We do this in the vertex shader to avoid having to iterate over all instances each frame. o.vertex = mul(UNITY_MATRIX_VP, mul(_WindowLocalToWorldMatrix, mul(unity_ObjectToWorld, float4(localVertex, 1.0)))); // MaterialPropertyBlocks do not have a SetColorArray method, so we need to do color space conversions ourselves. #if defined(UNITY_COLORSPACE_GAMMA) o.color = UNITY_ACCESS_INSTANCED_PROP(Props, _Color).rgb; o.baseColor = UNITY_ACCESS_INSTANCED_PROP(Props, _BaseColor).rgb; #else o.color = GammaToLinearSpace(UNITY_ACCESS_INSTANCED_PROP(Props, _Color).rgb); o.baseColor = GammaToLinearSpace(UNITY_ACCESS_INSTANCED_PROP(Props, _BaseColor).rgb); #endif // Scale and offset UVs. o.uv = (v.uv * _FontScale) + uvOffsetScaleX.xy; return o; } fixed4 frag(v2f i) : SV_Target { fixed4 font = tex2D(_FontTexture, i.uv); fixed alpha = font.r; return fixed4((i.baseColor * (1.0 - alpha)) + (font.rgb * i.color * alpha), 1.0); } ENDCG } } } ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Data/VisualProfiler.shader.meta ================================================ fileFormatVersion: 2 guid: 59811c61128561c4aa91d25965b11afb ShaderImporter: externalObjects: {} defaultTextures: [] nonModifiableTextures: [] preprocessorOverride: 0 userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Data.meta ================================================ fileFormatVersion: 2 guid: fcb188ea93ea6fe4fb1e0e7eb68fc664 folderAsset: yes DefaultImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Microsoft.MixedReality.VisualProfiler.asmdef ================================================ { "name": "Microsoft.MixedReality.VisualProfiler", "rootNamespace": "Microsoft.MixedReality.Profiling", "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, "overrideReferences": false, "precompiledReferences": [], "autoReferenced": true, "defineConstraints": [], "versionDefines": [], "noEngineReferences": false } ================================================ FILE: com.microsoft.mixedreality.visualprofiler/Microsoft.MixedReality.VisualProfiler.asmdef.meta ================================================ fileFormatVersion: 2 guid: 272c9669976d53b408f84d2b03eb5ecd AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.microsoft.mixedreality.visualprofiler/VisualProfiler.cs ================================================ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System; using System.Text; using Unity.Profiling; using UnityEngine; using UnityEngine.Profiling; using UnityEngine.Rendering; #if UNITY_STANDALONE_WIN || UNITY_WSA using UnityEngine.Windows.Speech; #endif #if WINDOWS_UWP using Windows.System; #endif namespace Microsoft.MixedReality.Profiling { /// /// /// ABOUT: The VisualProfiler provides a drop in solution for viewing your Mixed Reality /// Unity application's frame rate and memory usage. Missed frames are displayed over time to /// visually find problem areas. Draw calls, batches, and vertex (or triangle) counts are displayed to /// diagnose scene complexity. Memory is reported as current, peak and max usage in a bar graph. /// /// USAGE: To use this profiler simply add this script as a component of any GameObject in /// your Unity scene. The profiler is initially active and visible (toggle-able via the /// IsVisible property), but can be toggled via the enabled/disable voice commands keywords (in Windows/UWP). /// /// IMPORTANT: Please make sure to add the microphone capability to your UWP app if you plan /// on using the enable/disable keywords, in Unity under Edit -> Project Settings -> /// Player -> Settings for Windows Store -> Publishing Settings -> Capabilities or in your /// Visual Studio Package.appxmanifest capabilities. /// /// public sealed class VisualProfiler : MonoBehaviour, ISerializationCallbackReceiver { [Header("Profiler Settings")] [SerializeField, Tooltip("Is the profiler currently visible? If disabled, prevents the profiler from rendering but still allows it to track memory usage.")] private bool isVisible = true; /// /// Is the profiler currently visible? If disabled, prevents the profiler from rendering but still allows it to track memory usage. /// public bool IsVisible { get { return isVisible; } set { isVisible = value; } } [SerializeField, Tooltip("The amount of time, in seconds, to collect frames before frame rate averaging.")] private float frameSampleRate = 0.3f; /// /// The amount of time, in seconds, to collect frames before frame rate averaging. /// public float FrameSampleRate { get { return frameSampleRate; } set { frameSampleRate = value; frameSampleRateMS = frameSampleRate * 1000.0f; } } [SerializeField, Min(0.0f), Tooltip("What frame rate should the app target if one cannot be determined by the XR device.")] private float defaultFrameRate = 60.0f; /// /// What frame rate should the app target if one cannot be determined by the XR device. /// public float DefaultFrameRate { get { return defaultFrameRate; } set { defaultFrameRate = Mathf.Max(value, 0.0f); } } [SerializeField, Range(0.0f, 1.0f), Tooltip("A missed frame is considered when the frame rate is less than the target frame rate times the missed frame percentage.")] private float missedFramePercentage = 0.9f; /// /// A missed frame is considered when the frame rate is less than the target frame rate times the missed frame percentage." /// public float MissedFramePercentage { get { return missedFramePercentage; } set { missedFramePercentage = Mathf.Clamp01(value); } } [SerializeField, Range(0, 2), Tooltip("How many decimal places to display on numeric strings.")] private int displayedDecimalDigits = 1; [SerializeField, Tooltip("Display triangle count instead of vertex count in the profiler.")] private bool displayTriangleCount = false; [SerializeField, Tooltip("Table of QualitySettings.GetQualityLevel index to batches budget. When values are above this budget the text will change color.")] private int[] batchesQualityLevelBudget = new int[0]; /// /// Table of QualitySettings.GetQualityLevel index to batches budget. When values are above this budget the text will change color. /// public int[] BatchesQualityLevelBudget { get { return batchesQualityLevelBudget; } set { batchesQualityLevelBudget = value; } } [SerializeField, Tooltip("Table of QualitySettings.GetQualityLevel index to draw calls budget. When values are above this budget the text will change color.")] private int[] drawCallsQualityLevelBudget = new int[0]; /// /// Table of QualitySettings.GetQualityLevel index to draw calls budget. When values are above this budget the text will change color. /// public int[] DrawCallsQualityLevelBudget { get { return drawCallsQualityLevelBudget; } set { drawCallsQualityLevelBudget = value; } } [SerializeField, Tooltip("Table of QualitySettings.GetQualityLevel index to vertex (or triangle) budget. When values are above this budget the text will change color.")] private int[] meshStatsQualityLevelBudget = new int[0]; /// /// Table of QualitySettings.GetQualityLevel index to vertex (or triangle) budget. When values are above this budget the text will change color. /// public int[] MeshStatsQualityLevelBudget { get { return meshStatsQualityLevelBudget; } set { meshStatsQualityLevelBudget = value; } } [Header("Window Settings")] [SerializeField, Tooltip("What part of the view port to anchor the window to.")] private TextAnchor windowAnchor = TextAnchor.LowerCenter; /// /// What part of the view port to anchor the window to. /// public TextAnchor WindowAnchor { get { return windowAnchor; } set { windowAnchor = value; } } [SerializeField, Tooltip("The offset from the view port center applied based on the window anchor selection.")] private Vector2 windowOffset = new Vector2(0.1f, 0.1f); /// /// The offset from the view port center applied based on the window anchor selection. /// public Vector2 WindowOffset { get { return windowOffset; } set { windowOffset = value; } } [SerializeField, Range(0.5f, 10.0f), Tooltip("Use to scale the window size up or down, can simulate a zooming effect.")] private float windowScale = 1.0f; /// /// Use to scale the window size up or down, can simulate a zooming effect. /// public float WindowScale { get { return windowScale; } set { windowScale = Mathf.Clamp(value, 0.5f, 10.0f); } } [SerializeField, Range(0.0f, 100.0f), Tooltip("How quickly to interpolate the window towards its target position and rotation.")] private float windowFollowSpeed = 5.0f; /// /// How quickly to interpolate the window towards its target position and rotation. /// public float WindowFollowSpeed { get { return windowFollowSpeed; } set { windowFollowSpeed = Mathf.Abs(value); } } [SerializeField, Tooltip("Should the window snap to location rather than interpolate?")] private bool snapWindow = false; /// /// Should the window snap to location rather than interpolate? /// public bool SnapWindow { get { return snapWindow; } set { snapWindow = value; } } [SerializeField, Tooltip("Should the window always align to the camera? (No local rotation.)")] private bool alignToCamera = false; /// /// Should the window always align to the camera? (No local rotation.) /// public bool AlignToCamera { get { return alignToCamera; } set { alignToCamera = value; } } [SerializeField, Tooltip("If specified, the profiler window will follow this transform instead of the main camera.")] private Transform transformToFollow = null; /// /// If specified, the profiler window will follow this transform instead of the main camera. /// public Transform TransformToFollow { get { return transformToFollow; } set { transformToFollow = value; } } /// /// Access the CPU frame rate (in frames per second). /// public float SmoothCpuFrameRate { get; private set; } /// /// Access the GPU frame rate (in frames per second). Will return zero when GPU profiling is not available. /// public float SmoothGpuFrameRate { get; private set; } /// /// Returns the target frame rate for the current platform. /// public float TargetFrameRate { get { // If the current XR SDK does not report refresh rate information, assume 60Hz. float refreshRate = 0; #if ENABLE_VR refreshRate = UnityEngine.XR.XRDevice.refreshRate; #endif return ((int)refreshRate == 0) ? defaultFrameRate : refreshRate; } } /// /// Returns the target frame time in milliseconds for the current platform. /// public float TargetFrameTime { get { return (1.0f / TargetFrameRate) * 1000.0f; } } [SerializeField, Tooltip("Voice commands to toggle the profiler on and off. (Supported in UWP only.)")] private string[] toggleKeyworlds = new string[] { "Profiler", "Toggle Profiler", "Show Profiler", "Hide Profiler" }; [Header("Visual Settings")] [SerializeField, Range(0, 31), Tooltip("The layer index used for rendering the profiler (range between 0, 31 inclusive). Can be used in conjuction with a camera's \"Culling Mask\" to chose which camera renders the profiler.")] private int layer = 0; /// /// The layer index used for rendering the profiler (range between 0, 31 inclusive). Can be used in conjuction with a camera's \"Culling Mask\" to chose which camera renders the profiler. /// public int Layer { get { return layer; } set { layer = Mathf.Clamp(value, 0, 31); } } [SerializeField, Tooltip("The material to use when rendering the profiler. The material should use the \"Hidden / Visual Profiler\" shader and have a font texture.")] private Material material; [SerializeField, Tooltip("The color of the window backplate.")] private Color baseColor = new Color(50 / 255.0f, 50 / 255.0f, 50 / 255.0f, 1.0f); [SerializeField, Tooltip("The color to display on frames which meet or exceed the target frame rate.")] private Color targetFrameRateColor = new Color(127 / 255.0f, 186 / 255.0f, 0 / 255.0f, 1.0f); [SerializeField, Tooltip("The color to display on frames which fall below the target frame rate.")] private Color missedFrameRateColor = new Color(242 / 255.0f, 80 / 255.0f, 34 / 255.0f, 1.0f); [SerializeField, Tooltip("The color to display for current memory usage values.")] private Color memoryUsedColor = new Color(0 / 255.0f, 164 / 255.0f, 239 / 255.0f, 1.0f); [SerializeField, Tooltip("The color to display for peak (aka max) memory usage values.")] private Color memoryPeakColor = new Color(255 / 255.0f, 185 / 255.0f, 0 / 255.0f, 1.0f); [SerializeField, Tooltip("The color to display for the platforms memory usage limit.")] private Color memoryLimitColor = new Color(100 / 255.0f, 100 / 255.0f, 100 / 255.0f, 1.0f); [Header("Font Settings")] [SerializeField, Tooltip("The width and height of a mono spaced character in the font texture (in pixels).")] private Vector2Int fontCharacterSize = new Vector2Int(16, 30); [SerializeField, Tooltip("The x and y scale to render a character at.")] private Vector2 fontScale = new Vector2(0.00023f, 0.00028f); [SerializeField, Min(1), Tooltip("How many characters are in a row of the font texture.")] private int fontColumns = 32; /// /// Describes a group of Unity Profiler marker. Common markers are listed here: https://docs.unity3d.com/Manual/profiler-markers.html /// [Serializable] private class ProfilerGroup { [Tooltip("The visible name of this group in the Visual Profiler. This should be no longer than 9 characters.")] public string DisplayName; [Serializable] public class Marker : IDisposable { public enum OperationType { Add, Subtract, } public void Init(int capacity) { recorder = new ProfilerRecorder(StatName, capacity: 1, ProfilerRecorderOptions.WrapAroundWhenCapacityReached | ProfilerRecorderOptions.SumAllSamplesInFrame | ProfilerRecorderOptions.StartImmediately); sampleBuffer = new long[capacity]; } public void Update() { long nextSample = recorder.LastValue; if (nextSample == 0) // ProfilerCounterValue doesn't update the LastValue. { nextSample = recorder.CurrentValue; } sumOfSamples -= sampleBuffer[nextSampleIndex]; sumOfSamples += nextSample; sampleBuffer[nextSampleIndex] = nextSample; ++nextSampleIndex; if (nextSampleIndex >= sampleBuffer.Length) { isBufferFull = true; nextSampleIndex = 0; } } public void Dispose() { recorder.Dispose(); } [Tooltip("Profiler marker or counter name.")] public string StatName; [Tooltip("Select if this marker should be added to or subtracted from the total.")] public OperationType Operation; [NonSerialized] public ProfilerRecorder recorder; [NonSerialized] public long sumOfSamples; [NonSerialized] public bool isBufferFull; [NonSerialized] private long[] sampleBuffer; [NonSerialized] private int nextSampleIndex; } [Tooltip("List of profiler markers which make up this group.")] public Marker[] Markers = new Marker[0]; [Min(1), Tooltip("The amount of samples to collect then average when displaying the profiler marker.")] public int SampleCapacity = 300; [Range(0.0f, 1.0f), Tooltip("What % of the target frame time can this profiler take before being considered over budget?")] public float BudgetPercentage = 1.0f; public TextData Text { get; set; } public float LastValuePresented { get; set; } public bool HasEverPresented { get; set; } public ProfilerMarkerDataUnit MarkerUnitType { get; private set; } public string DisplayUnitSuffix { get; private set; } private bool running = false; public void Start() { foreach (var marker in Markers) { marker.Init(SampleCapacity); } if (Markers[0] != null) { MarkerUnitType = Markers[0].recorder.UnitType; switch (MarkerUnitType) { case ProfilerMarkerDataUnit.TimeNanoseconds: DisplayUnitSuffix = "ms"; break; case ProfilerMarkerDataUnit.Bytes: DisplayUnitSuffix = "kbps"; break; case ProfilerMarkerDataUnit.Percent: DisplayUnitSuffix = "%"; break; case ProfilerMarkerDataUnit.FrequencyHz: DisplayUnitSuffix = "hz"; break; default: DisplayUnitSuffix = ""; break; } } running = true; } public void Update() { foreach (var marker in Markers) { marker.Update(); } } public void Stop() { foreach (var marker in Markers) { marker.Dispose(); } running = false; } public void Reset() { HasEverPresented = false; LastValuePresented = -1.0f; } public bool ReadyToPresent() { if (running) { foreach (var marker in Markers) { if (marker.recorder.Valid && marker.isBufferFull) { return true; } } } return false; } public float CalculateAverage() { if (!running) { return 0.0f; } float sum = 0.0f; foreach (var marker in Markers) { switch (marker.Operation) { case Marker.OperationType.Add: sum += marker.sumOfSamples; break; case Marker.OperationType.Subtract: sum -= marker.sumOfSamples; break; } } sum /= SampleCapacity; return sum; } public float CalculateDisplayValue() { float average = CalculateAverage(); switch (MarkerUnitType) { case ProfilerMarkerDataUnit.TimeNanoseconds: return average * 1e-6f; // Milliseconds case ProfilerMarkerDataUnit.Bytes: return average / 125.0f; // Kilobits/second default: return average; } } } [Header("Profiler Groups")] [SerializeField, Tooltip("If multiple rows of profiler groups are displayed, choose which order to display them in.")] private ProfilerDisplayOrderType ProfilerDisplayOrder; // = ProfilerDisplayOrderType.Rows public enum ProfilerDisplayOrderType { [InspectorName("Right, Then Down")] Rows, [InspectorName("Down, Then Right")] Columns, } [SerializeField, Tooltip("Populate this list with ProfilerRecorder profiler markers to display timing information.")] private ProfilerGroup[] ProfilerGroups = new ProfilerGroup[0]; // Constants. private const int maxStringLength = 17; private const int maxTargetFrameRate = 240; private const int frameRange = 30; // These offsets specify how many instances a portion of the UI uses as well as draw order. private const int backplateInstanceOffset = 0; private const int framesInstanceOffset = backplateInstanceOffset + 1; private const int limitInstanceOffset = framesInstanceOffset + frameRange; private const int peakInstanceOffset = limitInstanceOffset + 1; private const int usedInstanceOffset = peakInstanceOffset + 1; private const int cpuframeRateTextOffset = usedInstanceOffset + 1; private const int qualityLevelTextOffset = cpuframeRateTextOffset + maxStringLength; private const int gpuframeRateTextOffset = qualityLevelTextOffset + maxStringLength; private const int batchesTextOffset = gpuframeRateTextOffset + maxStringLength; private const int drawCallTextOffset = batchesTextOffset + maxStringLength; private const int meshStatsTextOffset = drawCallTextOffset + maxStringLength; private const int usedMemoryTextOffset = meshStatsTextOffset + maxStringLength; private const int limitMemoryTextOffset = usedMemoryTextOffset + maxStringLength; private const int peakMemoryTextOffset = limitMemoryTextOffset + maxStringLength; private const int lastOffset = peakMemoryTextOffset + maxStringLength; private static readonly int colorID = Shader.PropertyToID("_Color"); private static readonly int baseColorID = Shader.PropertyToID("_BaseColor"); private static readonly int fontScaleID = Shader.PropertyToID("_FontScale"); private static readonly int uvOffsetScaleXID = Shader.PropertyToID("_UVOffsetScaleX"); private static readonly int windowLocalToWorldID = Shader.PropertyToID("_WindowLocalToWorldMatrix"); // Pre computed state. private char[][] qualityLevelStrings = new char[0][]; private char[][] frameRateStrings = new char[maxTargetFrameRate + 1][]; private char[][] gpuFrameRateStrings = new char[maxTargetFrameRate + 1][]; private Vector4[] characterUVs = new Vector4[128]; private Vector3 characterScale = Vector3.zero; // UI state. private Vector3 windowPosition = Vector3.zero; private Quaternion windowRotation = Quaternion.identity; private class TextData { public string Prefix; public Vector3 Position; public bool RightAligned; public int Offset; public int LastCount; public TextData(Vector3 position, bool rightAligned, int offset, string prefix = "") { Position = position; RightAligned = rightAligned; Offset = offset; Prefix = prefix; LastCount = maxStringLength; } } private TextData cpuFrameRateText = null; private TextData qualityLevelText = null; private TextData gpuFrameRateText = null; private TextData batchesText = null; private TextData drawCallText = null; private TextData meshText = null; private TextData usedMemoryText = null; private TextData peakMemoryText = null; private TextData limitMemoryText = null; private Quaternion windowHorizontalRotation = Quaternion.identity; private Quaternion windowHorizontalRotationInverse = Quaternion.identity; private Quaternion windowVerticalRotation = Quaternion.identity; private Quaternion windowVerticalRotationInverse = Quaternion.identity; private char[] stringBuffer = new char[256]; private int qualityLevel = -1; private int cpuFrameRate = -1; private int gpuFrameRate = -1; private long batches = 0; private long drawCalls = 0; private long meshStatsCount = 0; private ulong memoryUsage = 0; private ulong peakMemoryUsage = 0; private ulong limitMemoryUsage = 0; private bool peakMemoryUsageDirty = false; // Profiling state. private int frameCount = 0; private float accumulatedFrameTimeCPU = 0.0f; private float accumulatedFrameTimeGPU = 0.0f; private float frameSampleRateMS = 0.0f; private FrameTiming[] frameTimings = new FrameTiming[1]; #if !UNITY_EDITOR private ProfilerRecorder batchesRecorder; private ProfilerRecorder drawCallsRecorder; private ProfilerRecorder meshStatsRecorder; #endif private Recorder[] srpBatchesRecorders; private ProfilerRecorder systemUsedMemoryRecorder; // Rendering state. private Mesh quadMesh; private MaterialPropertyBlock instancePropertyBlock; private Matrix4x4[] instanceMatrices; private Vector4[] instanceColors; private Vector4[] instanceBaseColors; private Vector4[] instanceUVOffsetScaleX; private bool instanceColorsDirty = false; private bool instanceBaseColorsDirty = false; private bool instanceUVOffsetScaleXDirty = false; private bool customUpdateInUse = false; /// /// Reset any stats the profiler is tracking. Call this if you would like to restart tracking /// statistics like peak memory usage. /// public void Refresh() { SmoothCpuFrameRate = 0.0f; SmoothGpuFrameRate = 0.0f; qualityLevel = -1; cpuFrameRate = -1; gpuFrameRate = -1; batches = 0; drawCalls = 0; meshStatsCount = 0; memoryUsage = 0; peakMemoryUsage = 0; limitMemoryUsage = 0; } /// /// Allows for an app to specific a custom point in the frame to call update. (Should be called once every frame.) /// public void CustomUpdate() { customUpdateInUse = true; if (isActiveAndEnabled) { InternalUpdate(); } } private void OnEnable() { if (material == null) { Debug.LogError("The VisualProfiler is missing a material and will not display."); } // Create a quad mesh with artificially large bounds to disable culling for instanced rendering. // TODO - [Cameron-Micka] Use shared mesh with normal bounds once Unity allows for more control over instance culling. if (quadMesh == null) { MeshFilter quadMeshFilter = GameObject.CreatePrimitive(PrimitiveType.Quad).GetComponent(); quadMesh = quadMeshFilter.mesh; quadMesh.bounds = new Bounds(Vector3.zero, Vector3.one * float.MaxValue); Destroy(quadMeshFilter.gameObject); } instancePropertyBlock = new MaterialPropertyBlock(); Vector2 defaultWindowRotation = new Vector2(10.0f, 20.0f); windowHorizontalRotation = Quaternion.AngleAxis(defaultWindowRotation.y, Vector3.right); windowHorizontalRotationInverse = Quaternion.Inverse(windowHorizontalRotation); windowVerticalRotation = Quaternion.AngleAxis(defaultWindowRotation.x, Vector3.up); windowVerticalRotationInverse = Quaternion.Inverse(windowVerticalRotation); #if !UNITY_EDITOR batchesRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Batches Count"); drawCallsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, "Draw Calls Count"); meshStatsRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Render, displayTriangleCount ? "Triangles Count" : "Vertices Count"); #endif #if ENABLE_PROFILER var samplerNames = new string[] { "SRPBRender.ApplyShader", "SRPBShadow.ApplyShader", "StdRender.ApplyShader", "StdShadow.ApplyShader" }; srpBatchesRecorders = new Recorder[samplerNames.Length]; for (int i = 0; i < samplerNames.Length; ++i) { var recorder = Recorder.Get(samplerNames[i]); if (recorder.isValid) { srpBatchesRecorders[i] = recorder; } } foreach (var profilerGroup in ProfilerGroups) { profilerGroup.Start(); } #endif systemUsedMemoryRecorder = ProfilerRecorder.StartNew(ProfilerCategory.Memory, "System Used Memory"); BuildWindow(); #if UNITY_STANDALONE_WIN || UNITY_WSA BuildKeywordRecognizer(); #endif } private void OnDisable() { #if UNITY_STANDALONE_WIN || UNITY_WSA if (keywordRecognizer != null && keywordRecognizer.IsRunning) { keywordRecognizer.Stop(); keywordRecognizer.Dispose(); keywordRecognizer = null; } #endif systemUsedMemoryRecorder.Dispose(); foreach (var profilerGroup in ProfilerGroups) { profilerGroup.Stop(); } #if !UNITY_EDITOR meshStatsRecorder.Dispose(); drawCallsRecorder.Dispose(); batchesRecorder.Dispose(); #endif } private void OnValidate() { BuildWindow(); } public void OnBeforeSerialize() { // Default values for serializable classes in arrays/lists are not supported. This ensures correct construction. for (int i = 0; i < ProfilerGroups.Length; ++i) { if (ProfilerGroups[i].SampleCapacity == 0) { ProfilerGroups[i] = new ProfilerGroup(); } } } public void OnAfterDeserialize() { } private void LateUpdate() { if (customUpdateInUse == false) { InternalUpdate(); } } private void InternalUpdate() { #if ENABLE_PROFILER foreach (var profilerGroup in ProfilerGroups) { profilerGroup.Update(); } #endif if (IsVisible) { // Update window transformation. Transform cameraTransform = Camera.main ? Camera.main.transform : null; if (cameraTransform != null) { Vector3 targetPosition = CalculateWindowPosition(cameraTransform); Quaternion targetRotaton = CalculateWindowRotation(cameraTransform); if (snapWindow) { windowPosition = targetPosition; windowRotation = targetRotaton; } else { float t = Time.deltaTime * windowFollowSpeed; windowPosition = Vector3.Lerp(windowPosition, targetPosition, t); // Lerp rather than slerp for speed over quality. windowRotation = Quaternion.Lerp(windowRotation, targetRotaton, t); } } // Update quality level text. int lastQualityLevel = QualitySettings.GetQualityLevel(); if (lastQualityLevel != qualityLevel) { char[] text = qualityLevelStrings[lastQualityLevel]; SetText(qualityLevelText, text, text.Length, Color.white); qualityLevel = lastQualityLevel; } // Many platforms do not yet support the FrameTimingManager. When timing data is returned from the FrameTimingManager we will use // its timing data, else we will depend on the deltaTime. Wider support is coming in Unity 2022.1+ // https://blog.unity.com/technology/detecting-performance-bottlenecks-with-unity-frame-timing-manager FrameTimingManager.CaptureFrameTimings(); uint frameTimingsCount = FrameTimingManager.GetLatestTimings(1, frameTimings); if (frameTimingsCount != 0) { accumulatedFrameTimeCPU += (float)frameTimings[0].cpuFrameTime; accumulatedFrameTimeGPU += (float)frameTimings[0].gpuFrameTime; } else { accumulatedFrameTimeCPU += Time.unscaledDeltaTime * 1000.0f; // No GPU time to query. } ++frameCount; if (accumulatedFrameTimeCPU >= frameSampleRateMS) { if (accumulatedFrameTimeCPU != 0.0f) { SmoothCpuFrameRate = Mathf.Max(1.0f / ((accumulatedFrameTimeCPU * 0.001f) / frameCount), 0.0f); } int lastCpuFrameRate = Mathf.Min(Mathf.RoundToInt(SmoothCpuFrameRate), maxTargetFrameRate); if (accumulatedFrameTimeGPU != 0.0f) { SmoothGpuFrameRate = Mathf.Max(1.0f / ((accumulatedFrameTimeGPU * 0.001f) / frameCount), 0.0f); } int lastGpuFrameRate = Mathf.Min(Mathf.RoundToInt(SmoothGpuFrameRate), maxTargetFrameRate); // TODO - [Cameron-Micka] Ideally we would query a device specific API (like the HolographicFramePresentationReport) to detect missed frames. bool missedFrame = lastCpuFrameRate < (int)(TargetFrameRate * missedFramePercentage); Color frameColor = missedFrame ? missedFrameRateColor : targetFrameRateColor; Vector4 frameIcon = missedFrame ? characterUVs['X'] : characterUVs[' ']; // Update frame rate text. if (lastCpuFrameRate != cpuFrameRate) { char[] text = frameRateStrings[lastCpuFrameRate]; SetText(cpuFrameRateText, text, text.Length, frameColor); cpuFrameRate = lastCpuFrameRate; } if (lastGpuFrameRate != gpuFrameRate) { char[] text = gpuFrameRateStrings[lastGpuFrameRate]; Color color = (lastGpuFrameRate < ((int)(TargetFrameRate) - 1)) ? missedFrameRateColor : targetFrameRateColor; SetText(gpuFrameRateText, text, text.Length, color); gpuFrameRate = lastGpuFrameRate; } // Animate frame colors and icons. for (int i = frameRange - 1; i > 0; --i) { int write = framesInstanceOffset + i; int read = framesInstanceOffset + i - 1; instanceBaseColors[write] = instanceBaseColors[read]; instanceUVOffsetScaleX[write] = instanceUVOffsetScaleX[read]; } instanceBaseColors[framesInstanceOffset + 0] = frameColor; instanceUVOffsetScaleX[framesInstanceOffset + 0] = frameIcon; instanceBaseColorsDirty = true; instanceUVOffsetScaleXDirty = true; // Reset timers. frameCount = 0; accumulatedFrameTimeCPU = 0.0f; accumulatedFrameTimeGPU = 0.0f; } // Update scene statistics. long lastBatches = 0; if (GraphicsSettings.useScriptableRenderPipelineBatching) { if (srpBatchesRecorders != null) { foreach (var recorder in srpBatchesRecorders) { if (recorder != null) { lastBatches += recorder.sampleBlockCount; } // Some frames erroneously report zero batches, filter these frames out. if (lastBatches == 0) { lastBatches = batches; } } } else // Recorders aren't available so reliable batch counts cannot be displayed. { lastBatches = -1; } } else { #if UNITY_EDITOR lastBatches = UnityEditor.UnityStats.batches; #else lastBatches = batchesRecorder.LastValue; #endif } if (lastBatches != batches) { SceneStatsToString(stringBuffer, batchesText, lastBatches, QualityLevelBudgetToColor(BatchesQualityLevelBudget, lastBatches)); batches = lastBatches; } #if UNITY_EDITOR long lastDrawCalls = UnityEditor.UnityStats.drawCalls; #else long lastDrawCalls = drawCallsRecorder.LastValue; #endif if (lastDrawCalls != drawCalls) { SceneStatsToString(stringBuffer, drawCallText, lastDrawCalls, QualityLevelBudgetToColor(DrawCallsQualityLevelBudget, lastDrawCalls)); drawCalls = lastDrawCalls; } #if UNITY_EDITOR long lastMeshStatsCount = displayTriangleCount ? UnityEditor.UnityStats.triangles : UnityEditor.UnityStats.vertices; #else long lastMeshStatsCount = meshStatsRecorder.LastValue; #endif if (lastMeshStatsCount != meshStatsCount) { if (WillDisplayedMeshStatsCountDiffer(lastMeshStatsCount, meshStatsCount, displayedDecimalDigits)) { MeshStatsToString(stringBuffer, displayedDecimalDigits, meshText, lastMeshStatsCount, QualityLevelBudgetToColor(MeshStatsQualityLevelBudget, lastMeshStatsCount)); } meshStatsCount = lastMeshStatsCount; } // Update memory statistics. ulong limit = AppMemoryUsageLimit; if (limit != limitMemoryUsage) { if (WillDisplayedMemoryUsageDiffer(limitMemoryUsage, limit, displayedDecimalDigits)) { MemoryUsageToString(stringBuffer, displayedDecimalDigits, limitMemoryText, limit, Color.white); } limitMemoryUsage = limit; } ulong usage = AppMemoryUsage; if (usage != memoryUsage) { Vector4 offsetScale = instanceUVOffsetScaleX[usedInstanceOffset]; offsetScale.z = -1.0f + (float)usage / limitMemoryUsage; instanceUVOffsetScaleX[usedInstanceOffset] = offsetScale; instanceUVOffsetScaleXDirty = true; if (WillDisplayedMemoryUsageDiffer(memoryUsage, usage, displayedDecimalDigits)) { MemoryUsageToString(stringBuffer, displayedDecimalDigits, usedMemoryText, usage, memoryUsedColor); } memoryUsage = usage; } if (memoryUsage > peakMemoryUsage || peakMemoryUsageDirty) { Vector4 offsetScale = instanceUVOffsetScaleX[peakInstanceOffset]; offsetScale.z = -1.0f + (float)memoryUsage / limitMemoryUsage; instanceUVOffsetScaleX[peakInstanceOffset] = offsetScale; instanceUVOffsetScaleXDirty = true; if (WillDisplayedMemoryUsageDiffer(peakMemoryUsage, memoryUsage, displayedDecimalDigits)) { MemoryUsageToString(stringBuffer, displayedDecimalDigits, peakMemoryText, memoryUsage, memoryPeakColor); } peakMemoryUsage = memoryUsage; peakMemoryUsageDirty = false; } #if ENABLE_PROFILER // Update profiler groups foreach (var profilerGroup in ProfilerGroups) { if (profilerGroup.ReadyToPresent()) { float value = profilerGroup.CalculateDisplayValue(); if (WillDisplayedProfilerValueDiffer(profilerGroup.LastValuePresented, value, displayedDecimalDigits)) { profilerGroup.HasEverPresented = true; profilerGroup.LastValuePresented = value; Color color = Color.white; // Only apply frame time budget coloring to time profilers if (profilerGroup.MarkerUnitType == ProfilerMarkerDataUnit.TimeNanoseconds) { float budget = TargetFrameTime * profilerGroup.BudgetPercentage; color = value <= budget ? targetFrameRateColor : missedFrameRateColor; } ProfilerValueToString(stringBuffer, displayedDecimalDigits, profilerGroup.Text, value, profilerGroup.DisplayUnitSuffix, color, maxStringLength); } } else if (profilerGroup.HasEverPresented == false) { profilerGroup.HasEverPresented = true; profilerGroup.LastValuePresented = -1.0f; ProfilerValueToString(stringBuffer, displayedDecimalDigits, profilerGroup.Text, -1.0f, profilerGroup.DisplayUnitSuffix, Color.white, maxStringLength); } } #endif // Render. Matrix4x4 windowLocalToWorldMatrix = Matrix4x4.TRS(windowPosition, windowRotation, Vector3.one * windowScale); instancePropertyBlock.SetMatrix(windowLocalToWorldID, windowLocalToWorldMatrix); if (instanceColorsDirty) { instancePropertyBlock.SetVectorArray(colorID, instanceColors); instanceColorsDirty = false; } if (instanceBaseColorsDirty) { instancePropertyBlock.SetVectorArray(baseColorID, instanceBaseColors); instanceBaseColorsDirty = false; } if (instanceUVOffsetScaleXDirty) { instancePropertyBlock.SetVectorArray(uvOffsetScaleXID, instanceUVOffsetScaleX); instanceUVOffsetScaleXDirty = false; } if (material != null) { Graphics.DrawMeshInstanced(quadMesh, 0, material, instanceMatrices, instanceMatrices.Length, instancePropertyBlock, UnityEngine.Rendering.ShadowCastingMode.Off, false, layer); } } else { // Keep tracking peak memory usage when not visible. ulong usage = AppMemoryUsage; if (usage > peakMemoryUsage) { peakMemoryUsage = usage; peakMemoryUsageDirty = true; } } } private void BuildWindow() { BuildQualityLevelStrings(); BuildFrameRateStrings(); BuildCharacterUVs(); #if ENABLE_PROFILER int instanceCount = lastOffset + (maxStringLength * ProfilerGroups.Length); #else int instanceCount = lastOffset; #endif instanceMatrices = new Matrix4x4[instanceCount]; instanceColors = new Vector4[instanceCount]; instanceBaseColors = new Vector4[instanceCount]; instanceUVOffsetScaleX = new Vector4[instanceCount]; Vector4 spaceUV = characterUVs[' ']; Vector3 defaultWindowSize = new Vector3(0.2f, 0.04f, 1.0f); float edge = defaultWindowSize.x * 0.5f; float[] edges = new float[] { -edge, -0.03f, edge }; // Set the default base color. for (int i = 0; i < instanceBaseColors.Length; ++i) { instanceBaseColors[i] = baseColor; } // Add a window back plate. { instanceMatrices[backplateInstanceOffset] = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, defaultWindowSize); instanceColors[backplateInstanceOffset] = baseColor; instanceBaseColors[backplateInstanceOffset] = baseColor; instanceUVOffsetScaleX[backplateInstanceOffset] = spaceUV; } // Add frame rate and quality level text. { float height = 0.02f; cpuFrameRateText = new TextData(new Vector3(edges[0], height, 0.0f), false, cpuframeRateTextOffset); LayoutText(cpuFrameRateText); qualityLevelText = new TextData(new Vector3(edges[1], height, 0.0f), false, qualityLevelTextOffset); LayoutText(qualityLevelText); gpuFrameRateText = new TextData(new Vector3(edges[2], height, 0.0f), true, gpuframeRateTextOffset); LayoutText(gpuFrameRateText); } // Add frame rate indicators. { float height = 0.008f; float size = (1.0f / frameRange) * defaultWindowSize.x; Vector3 scale = new Vector3(size, size, 1.0f); Vector3 position = new Vector3(-defaultWindowSize.x * 0.5f, height, 0.0f); position.x += scale.x * 0.5f; for (int i = 0; i < frameRange; ++i) { instanceMatrices[framesInstanceOffset + i] = Matrix4x4.TRS(position, Quaternion.identity, new Vector3(scale.x * 0.8f, scale.y * 0.8f, scale.z)); position.x += scale.x; instanceColors[framesInstanceOffset + i] = Color.white; instanceBaseColors[framesInstanceOffset + i] = targetFrameRateColor; instanceUVOffsetScaleX[framesInstanceOffset + i] = spaceUV; } } // Add scene statistics text. { float height = 0.0045f; batchesText = new TextData(new Vector3(edges[0], height, 0.0f), false, batchesTextOffset, "Batches: "); LayoutText(batchesText); drawCallText = new TextData(new Vector3(edges[1], height, 0.0f), false, drawCallTextOffset, "Draw Calls: "); LayoutText(drawCallText); meshText = new TextData(new Vector3(edges[2], height, 0.0f), true, meshStatsTextOffset, displayTriangleCount ? "Tris: " : "Verts: "); LayoutText(meshText); } // Add memory usage bars. { float height = -0.0075f; Vector3 position = new Vector3(0.0f, height, 0.0f); Vector3 scale = defaultWindowSize; scale.Scale(new Vector3(0.99f, 0.15f, 1.0f)); { instanceMatrices[limitInstanceOffset] = Matrix4x4.TRS(position, Quaternion.identity, scale); instanceColors[limitInstanceOffset] = memoryLimitColor; instanceBaseColors[limitInstanceOffset] = memoryLimitColor; instanceUVOffsetScaleX[limitInstanceOffset] = spaceUV; } { instanceMatrices[peakInstanceOffset] = Matrix4x4.TRS(position, Quaternion.identity, scale); instanceColors[peakInstanceOffset] = memoryPeakColor; instanceBaseColors[peakInstanceOffset] = memoryPeakColor; instanceUVOffsetScaleX[peakInstanceOffset] = spaceUV; } { instanceMatrices[usedInstanceOffset] = Matrix4x4.TRS(position, Quaternion.identity, scale); instanceColors[usedInstanceOffset] = memoryUsedColor; instanceBaseColors[usedInstanceOffset] = memoryUsedColor; instanceUVOffsetScaleX[usedInstanceOffset] = spaceUV; } } // Add memory usage text. { float height = -0.011f; usedMemoryText = new TextData(new Vector3(edges[0], height, 0.0f), false, usedMemoryTextOffset, "Used: "); LayoutText(usedMemoryText); peakMemoryText = new TextData(new Vector3(edges[1], height, 0.0f), false, peakMemoryTextOffset, "Peak: "); LayoutText(peakMemoryText); limitMemoryText = new TextData(new Vector3(edges[2], height, 0.0f), true, limitMemoryTextOffset, "Limit: "); LayoutText(limitMemoryText); } #if ENABLE_PROFILER // Add custom profilers. { int offset = lastOffset; float height = -0.02f; int maxColumns = 3; int numColumns = Mathf.Min(ProfilerGroups.Length, maxColumns); int numRows = (ProfilerGroups.Length + maxColumns - 1) / maxColumns; for (int row = 0; row < numRows; ++row) { for (int column = 0; column < numColumns; ++column) { int profilerGroupIndex = ProfilerDisplayOrder switch { ProfilerDisplayOrderType.Rows => row * numColumns + column, /*ProfilerDisplayOrderType.Columns*/ _ => column * numRows + row, }; if (profilerGroupIndex < ProfilerGroups.Length) { var profilerGroup = ProfilerGroups[profilerGroupIndex]; bool rightAlign = (column == 2) ? true : false; // Allow for at least 8 digits other than the prefix. int maxPrefixLength = maxStringLength - 8; string prefix = (profilerGroup.DisplayName.Length > maxPrefixLength) ? profilerGroup.DisplayName.Substring(0, maxPrefixLength) : profilerGroup.DisplayName; profilerGroup.Text = new TextData(new Vector3(edges[column], height, 0.0f), rightAlign, offset, $"{prefix}: "); LayoutText(profilerGroup.Text); offset += maxStringLength; profilerGroup.Reset(); } } height -= characterScale.y; } } #endif instanceColorsDirty = true; instanceBaseColorsDirty = true; instanceUVOffsetScaleXDirty = true; // Initialize property block state. if (instancePropertyBlock != null && material != null && material.mainTexture != null) { instancePropertyBlock.SetVector(fontScaleID, new Vector2((float)fontCharacterSize.x / material.mainTexture.width, (float)fontCharacterSize.y / material.mainTexture.height)); } Refresh(); } private void BuildQualityLevelStrings() { string prefix = "Quality: "; string[] names = QualitySettings.names; qualityLevelStrings = new char[names.Length][]; for (int i = 0; i < names.Length; ++i) { var name = prefix + names[i]; string shortName = (name.Length > maxStringLength) ? name.Substring(0, maxStringLength) : name; qualityLevelStrings[i] = shortName.ToCharArray(); } } private void BuildFrameRateStrings() { frameSampleRateMS = frameSampleRate * 1000.0f; string displayedDecimalFormat = string.Format("{{0:F{0}}}", displayedDecimalDigits); StringBuilder stringBuilder = new StringBuilder(32); StringBuilder milisecondStringBuilder = new StringBuilder(16); // Display nothing for index zero. frameRateStrings[0] = ToCharArray(stringBuilder); gpuFrameRateStrings[0] = ToCharArray(stringBuilder); for (int i = 1; i < frameRateStrings.Length; ++i) { float milliseconds = (i == 0) ? 0.0f : (1.0f / i) * 1000.0f; milisecondStringBuilder.AppendFormat(displayedDecimalFormat, milliseconds); string frame = i.ToString(); string ms = milisecondStringBuilder.ToString(); if (i == (frameRateStrings.Length - 1)) { stringBuilder.AppendFormat(">{0}fps ({1}ms)", frame, ms); } else { stringBuilder.AppendFormat("{0}fps ({1}ms)", frame, ms); } frameRateStrings[i] = ToCharArray(stringBuilder); stringBuilder.Length = 0; if (i == (frameRateStrings.Length - 1)) { stringBuilder.AppendFormat("GPU: <{1}ms", frame, ms); } else { stringBuilder.AppendFormat("GPU: {1}ms", frame, ms); } gpuFrameRateStrings[i] = ToCharArray(stringBuilder); milisecondStringBuilder.Length = 0; stringBuilder.Length = 0; } } private void BuildCharacterUVs() { characterScale = new Vector3(fontCharacterSize.x * fontScale.x, fontCharacterSize.y * fontScale.y, 1.0f); if (material != null && material.mainTexture != null) { for (char c = ' '; c < characterUVs.Length; ++c) { int index = c - ' '; float height = (float)fontCharacterSize.y / material.mainTexture.height; float x = ((float)(index % fontColumns) * fontCharacterSize.x) / material.mainTexture.width; float y = ((float)(index / fontColumns) * fontCharacterSize.y) / material.mainTexture.height; characterUVs[c] = new Vector4(x, 1.0f - height - y, 0.0f, 0.0f); } } } private Vector3 CalculateWindowPosition(Transform cameraTransform) { Vector3 position; if (transformToFollow != null) { position = transformToFollow.position; } else { float windowDistance = Mathf.Max(16.0f / Camera.main.fieldOfView, Camera.main.nearClipPlane + 0.25f); position = cameraTransform.position + (cameraTransform.forward * windowDistance); } Vector3 horizontalOffset = cameraTransform.right * windowOffset.x; Vector3 verticalOffset = cameraTransform.up * windowOffset.y; switch (windowAnchor) { case TextAnchor.UpperLeft: position += verticalOffset - horizontalOffset; break; case TextAnchor.UpperCenter: position += verticalOffset; break; case TextAnchor.UpperRight: position += verticalOffset + horizontalOffset; break; case TextAnchor.MiddleLeft: position -= horizontalOffset; break; case TextAnchor.MiddleRight: position += horizontalOffset; break; case TextAnchor.LowerLeft: position -= verticalOffset + horizontalOffset; break; case TextAnchor.LowerCenter: position -= verticalOffset; break; case TextAnchor.LowerRight: position -= verticalOffset - horizontalOffset; break; } return position; } private Quaternion CalculateWindowRotation(Transform cameraTransform) { Quaternion rotation = cameraTransform.rotation; if (!alignToCamera) { switch (windowAnchor) { case TextAnchor.UpperLeft: rotation *= windowHorizontalRotationInverse * windowVerticalRotationInverse; break; case TextAnchor.UpperCenter: rotation *= windowHorizontalRotationInverse; break; case TextAnchor.UpperRight: rotation *= windowHorizontalRotationInverse * windowVerticalRotation; break; case TextAnchor.MiddleLeft: rotation *= windowVerticalRotationInverse; break; case TextAnchor.MiddleRight: rotation *= windowVerticalRotation; break; case TextAnchor.LowerLeft: rotation *= windowHorizontalRotation * windowVerticalRotationInverse; break; case TextAnchor.LowerCenter: rotation *= windowHorizontalRotation; break; case TextAnchor.LowerRight: rotation *= windowHorizontalRotation * windowVerticalRotation; break; } } return rotation; } void LayoutText(TextData data) { Vector4 colorVector = Color.white; Vector4 spaceUV = characterUVs[' ']; Vector3 position = data.Position; position -= Vector3.up * characterScale.y * 0.5f; position += (data.RightAligned) ? Vector3.right * -characterScale.x * 0.5f : Vector3.right * characterScale.x * 0.5f; for (int i = 0; i < maxStringLength; ++i) { instanceMatrices[data.Offset + i] = Matrix4x4.TRS(position, Quaternion.identity, characterScale); instanceUVOffsetScaleX[data.Offset + i] = spaceUV; instanceColors[data.Offset + i] = colorVector; position += (data.RightAligned) ? Vector3.right * -characterScale.x : Vector3.right * characterScale.x; } data.LastCount = maxStringLength; instanceColorsDirty = true; instanceUVOffsetScaleXDirty = true; } void SetText(TextData data, char[] text, int count, Color color, int justifyLength = 0) { count = Mathf.Min(count, maxStringLength); Vector4 colorVector = color; Vector4 spaceUV = characterUVs[' ']; if (justifyLength <= count) { // Only loop though characters we need to update. int charactersToProcess = Mathf.Min(Mathf.Max(count, data.LastCount), maxStringLength); for (int i = 0; i < charactersToProcess; ++i) { int charIndex = (data.RightAligned) ? count - i - 1 : i; instanceUVOffsetScaleX[data.Offset + i] = (i < count) ? characterUVs[text[charIndex]] : spaceUV; instanceColors[data.Offset + i] = colorVector; } data.LastCount = count; } else { int prefixLength = data.Prefix.Length; int padLength = justifyLength - count; int padBegin = (data.RightAligned) ? (count - prefixLength) : prefixLength; int padEnd = padBegin + padLength; for (int i = 0; i < padBegin; ++i) { int charIndex = (data.RightAligned) ? count - i - 1 : i; instanceUVOffsetScaleX[data.Offset + i] = characterUVs[text[charIndex]]; instanceColors[data.Offset + i] = colorVector; } for (int i = padBegin; i < padEnd; ++i) { instanceUVOffsetScaleX[data.Offset + i] = spaceUV; instanceColors[data.Offset + i] = colorVector; } for (int i = padEnd; i < justifyLength; ++i) { int charIndex = (data.RightAligned) ? count - (i - padLength) - 1 : i - padLength; instanceUVOffsetScaleX[data.Offset + i] = characterUVs[text[charIndex]]; instanceColors[data.Offset + i] = colorVector; } } instanceColorsDirty = true; instanceUVOffsetScaleXDirty = true; } #if UNITY_STANDALONE_WIN || UNITY_WSA private KeywordRecognizer keywordRecognizer; private void BuildKeywordRecognizer() { if (toggleKeyworlds.Length != 0) { keywordRecognizer = new KeywordRecognizer(toggleKeyworlds); keywordRecognizer.OnPhraseRecognized += OnPhraseRecognized; keywordRecognizer.Start(); } } private void OnPhraseRecognized(PhraseRecognizedEventArgs args) { IsVisible = !IsVisible; } #endif private void MemoryUsageToString(char[] buffer, int displayedDecimalDigits, TextData data, ulong memoryUsage, Color color, int justifyLength = 0) { bool usingGigabytes = false; float usage = ConvertBytesToMegabytes(memoryUsage); if (usage > 1024.0f) { usage = ConvertMegabytesToGigabytes(usage); usingGigabytes = true; } int bufferIndex = 0; for (int i = 0; i < data.Prefix.Length; ++i) { buffer[bufferIndex++] = data.Prefix[i]; } bufferIndex = FtoA(usage, displayedDecimalDigits, buffer, bufferIndex); buffer[bufferIndex++] = usingGigabytes ? 'G' : 'M'; buffer[bufferIndex++] = 'B'; SetText(data, buffer, bufferIndex, color, justifyLength); } private void SceneStatsToString(char[] buffer, TextData data, long count, Color color, int justifyLength = 0) { int bufferIndex = 0; for (int i = 0; i < data.Prefix.Length; ++i) { buffer[bufferIndex++] = data.Prefix[i]; } if (count < 0) { buffer[bufferIndex++] = '-'; } else if (count > 1000) { float newCount = count / 1000.0f; bufferIndex = FtoA(newCount, displayedDecimalDigits, buffer, bufferIndex); buffer[bufferIndex++] = 'k'; } else { bufferIndex = ItoA((int)count, buffer, bufferIndex); } SetText(data, buffer, bufferIndex, color, justifyLength); } private void MeshStatsToString(char[] buffer, int displayedDecimalDigits, TextData data, long count, Color color, int justifyLength = 0) { int bufferIndex = 0; for (int i = 0; i < data.Prefix.Length; ++i) { buffer[bufferIndex++] = data.Prefix[i]; } bool usingMillions = false; float total = count / 1000.0f; if (total > 1000.0f) { total /= 1000.0f; usingMillions = true; } bufferIndex = FtoA(total, displayedDecimalDigits, buffer, bufferIndex); buffer[bufferIndex++] = usingMillions ? 'm' : 'k'; SetText(data, buffer, bufferIndex, color, justifyLength); } private void ProfilerValueToString(char[] buffer, int displayedDecimalDigits, TextData data, float value, string unitSuffix, Color color, int justifyLength = 0) { int bufferIndex = 0; for (int i = 0; i < data.Prefix.Length; ++i) { buffer[bufferIndex++] = data.Prefix[i]; } if (value >= 0.0f) { bufferIndex = FtoA(value, displayedDecimalDigits, buffer, bufferIndex); } else { buffer[bufferIndex++] = '-'; buffer[bufferIndex++] = '.'; buffer[bufferIndex++] = '-'; } foreach (char c in unitSuffix) { buffer[bufferIndex++] = c; } SetText(data, buffer, bufferIndex, color, justifyLength); } private Color QualityLevelBudgetToColor(int[] qualityLevelBudget, long value) { int level = QualitySettings.GetQualityLevel(); if (qualityLevelBudget.Length > level) { return (value > qualityLevelBudget[level]) ? missedFrameRateColor : targetFrameRateColor; } return Color.white; } private static char[] ToCharArray(StringBuilder stringBuilder) { char[] output = new char[stringBuilder.Length]; for (int i = 0; i < output.Length; ++i) { output[i] = stringBuilder[i]; } return output; } private static int ItoA(int value, char[] buffer, int bufferIndex) { // Using a custom number to string method to avoid the overhead, and allocations, of built in string.Format/StringBuilder methods. // We can also make some assumptions since the domain of the input number is known. if (value == 0) { buffer[bufferIndex++] = '0'; } else { int startIndex = bufferIndex; for (; value != 0; value /= 10) { buffer[bufferIndex++] = (char)((char)(value % 10) + '0'); } char temp; for (int endIndex = bufferIndex - 1; startIndex < endIndex; ++startIndex, --endIndex) { temp = buffer[startIndex]; buffer[startIndex] = buffer[endIndex]; buffer[endIndex] = temp; } } return bufferIndex; } private static int FtoA(float value, int displayedDecimalDigits, char[] buffer, int bufferIndex) { int integerDigits = (int)value; int fractionalDigits = (int)((value - integerDigits) * Mathf.Pow(10.0f, displayedDecimalDigits)); bufferIndex = ItoA(integerDigits, buffer, bufferIndex); if (displayedDecimalDigits != 0) { buffer[bufferIndex++] = '.'; } if (fractionalDigits != 0) { bufferIndex = ItoA(fractionalDigits, buffer, bufferIndex); } else { for (int i = 0; i < displayedDecimalDigits; ++i) { buffer[bufferIndex++] = '0'; } } return bufferIndex; } private ulong AppMemoryUsage { get { #if WINDOWS_UWP return MemoryManager.AppMemoryUsage; #else // "System Used Memory" will return the "working set" of the process which is similar to what Task Manager displays // in Windows. But this is not available on all platforms (like WebGL) so instead return Profiler.GetTotalReservedMemoryLong() // which is the total memory Unity has reserved for current and future allocations. var usedMemory = (ulong)systemUsedMemoryRecorder.LastValue; return (usedMemory != 0) ? usedMemory : (ulong)Profiler.GetTotalReservedMemoryLong(); #endif } } private static ulong AppMemoryUsageLimit { get { #if WINDOWS_UWP return MemoryManager.AppMemoryUsageLimit; #else return ConvertMegabytesToBytes(SystemInfo.systemMemorySize); #endif } } private static bool WillDisplayedProfilerValueDiffer(float oldValue, float newValue, int displayedDecimalDigits) { float decimalPower = Mathf.Pow(10.0f, displayedDecimalDigits); return (int)(oldValue * decimalPower) != (int)(newValue * decimalPower); } private static bool WillDisplayedMeshStatsCountDiffer(long oldCount, long newCount, int displayedDecimalDigits) { float decimalPower = Mathf.Pow(10.0f, displayedDecimalDigits) / 1000.0f; return (int)(oldCount * decimalPower) != (int)(newCount * decimalPower); } private static bool WillDisplayedMemoryUsageDiffer(ulong oldUsage, ulong newUsage, int displayedDecimalDigits) { float oldUsageMBs = ConvertBytesToMegabytes(oldUsage); float newUsageMBs = ConvertBytesToMegabytes(newUsage); float decimalPower = Mathf.Pow(10.0f, displayedDecimalDigits); return (int)(oldUsageMBs * decimalPower) != (int)(newUsageMBs * decimalPower); } private static ulong ConvertMegabytesToBytes(int megabytes) { return ((ulong)megabytes * 1024UL) * 1024UL; } private static float ConvertBytesToMegabytes(ulong bytes) { return (bytes / 1024.0f) / 1024.0f; } private static float ConvertMegabytesToGigabytes(float megabytes) { return (megabytes / 1024.0f); } } } ================================================ FILE: com.microsoft.mixedreality.visualprofiler/VisualProfiler.cs.meta ================================================ fileFormatVersion: 2 guid: ee9fe1903f7351748999dead411e0a3b MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: - material: {fileID: 2100000, guid: b98f8349d37aef742baaa038e99837c0, type: 2} executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: ================================================ FILE: com.microsoft.mixedreality.visualprofiler/package.json ================================================ { "name": "com.microsoft.mixedreality.visualprofiler", "version": "3.8.0", "displayName": "Microsoft Mixed Reality Visual Profiler", "description": "Provides a drop in solution for viewing your mixed reality Unity application's frame rate, scene complexity, and memory usage.", "documentationUrl": "https://github.com/microsoft/VisualProfiler-Unity/blob/main/README.md", "unity": "2021.3", "unityRelease": "26f1", "author": "Microsoft", "license": "MIT", "repository": { "type": "git", "url": "https://github.com/microsoft/VisualProfiler-Unity" }, "bugs": { "url": "https://github.com/microsoft/VisualProfiler-Unity/issues" }, "keywords": [ "microsoft", "mixed", "reality", "hololens", "ar", "vr", "xr" ] } ================================================ FILE: com.microsoft.mixedreality.visualprofiler/package.json.meta ================================================ fileFormatVersion: 2 guid: 8f38e6fa9cd9ecb49a3ee99198dbaf8e PackageManifestImporter: externalObjects: {} userData: assetBundleName: assetBundleVariant: