├── .gitignore ├── LICENSE.md ├── docs ├── Images │ ├── shotAssetCreator.png │ ├── shotCutouts.png │ ├── shotEdit.jpg │ └── shotOverview.jpg ├── RefImages │ ├── D3D12_bicycle0.png │ ├── D3D12_garden30.png │ ├── D3D12_truck30.png │ ├── SBIR_bicycle0.png │ ├── SBIR_garden30.png │ └── SBIR_truck30.png ├── render-pipeline-integration.md └── splat-editing.md ├── package ├── Editor.meta ├── Editor │ ├── GaussianMoveTool.cs │ ├── GaussianMoveTool.cs.meta │ ├── GaussianRotateTool.cs │ ├── GaussianRotateTool.cs.meta │ ├── GaussianScaleTool.cs │ ├── GaussianScaleTool.cs.meta │ ├── GaussianSplatAssetCreator.cs │ ├── GaussianSplatAssetCreator.cs.meta │ ├── GaussianSplatAssetEditor.cs │ ├── GaussianSplatAssetEditor.cs.meta │ ├── GaussianSplatRendererEditor.cs │ ├── GaussianSplatRendererEditor.cs.meta │ ├── GaussianSplatValidator.cs │ ├── GaussianSplatValidator.cs.meta │ ├── GaussianSplattingEditor.asmdef │ ├── GaussianSplattingEditor.asmdef.meta │ ├── GaussianTool.cs │ ├── GaussianTool.cs.meta │ ├── GaussianToolContext.cs │ ├── GaussianToolContext.cs.meta │ ├── Icons.meta │ ├── Icons │ │ ├── GaussianContext.png │ │ ├── GaussianContext.png.meta │ │ ├── GaussianContext@2x.png │ │ ├── GaussianContext@2x.png.meta │ │ ├── d_GaussianContext.png │ │ ├── d_GaussianContext.png.meta │ │ ├── d_GaussianContext@2x.png │ │ └── d_GaussianContext@2x.png.meta │ ├── Utils.meta │ └── Utils │ │ ├── CaptureScreenshot.cs │ │ ├── CaptureScreenshot.cs.meta │ │ ├── FilePickerControl.cs │ │ ├── FilePickerControl.cs.meta │ │ ├── KMeansClustering.cs │ │ ├── KMeansClustering.cs.meta │ │ ├── PLYFileReader.cs │ │ ├── PLYFileReader.cs.meta │ │ ├── TinyJsonParser.cs │ │ └── TinyJsonParser.cs.meta ├── LICENSE.md ├── LICENSE.md.meta ├── Materials.meta ├── Materials │ ├── BlackSkybox.mat │ └── BlackSkybox.mat.meta ├── Runtime.meta ├── Runtime │ ├── GaussianCutout.cs │ ├── GaussianCutout.cs.meta │ ├── GaussianSplatAsset.cs │ ├── GaussianSplatAsset.cs.meta │ ├── GaussianSplatHDRPPass.cs │ ├── GaussianSplatHDRPPass.cs.meta │ ├── GaussianSplatRenderer.cs │ ├── GaussianSplatRenderer.cs.meta │ ├── GaussianSplatURPFeature.cs │ ├── GaussianSplatURPFeature.cs.meta │ ├── GaussianSplatting.asmdef │ ├── GaussianSplatting.asmdef.meta │ ├── GaussianUtils.cs │ ├── GaussianUtils.cs.meta │ ├── GpuSorting.cs │ ├── GpuSorting.cs.meta │ ├── GpuSortingFFX.cs │ ├── GpuSortingFFX.cs.meta │ ├── GpuSortingRadix.cs │ └── GpuSortingRadix.cs.meta ├── Shaders.meta ├── Shaders │ ├── BlackSkybox.shader │ ├── BlackSkybox.shader.meta │ ├── DeviceRadixSort.hlsl │ ├── DeviceRadixSort.hlsl.meta │ ├── GaussianComposite.shader │ ├── GaussianComposite.shader.meta │ ├── GaussianDebugRenderBoxes.shader │ ├── GaussianDebugRenderBoxes.shader.meta │ ├── GaussianDebugRenderPoints.shader │ ├── GaussianDebugRenderPoints.shader.meta │ ├── GaussianSplatting.hlsl │ ├── GaussianSplatting.hlsl.meta │ ├── GpuSortFidelityFX.hlsl │ ├── GpuSortFidelityFX.hlsl.meta │ ├── RenderGaussianSplats.shader │ ├── RenderGaussianSplats.shader.meta │ ├── SphericalHarmonics.hlsl │ ├── SphericalHarmonics.hlsl.meta │ ├── SplatUtilitiesFFX.compute │ ├── SplatUtilitiesFFX.compute.meta │ ├── SplatUtilitiesRadix.compute │ └── SplatUtilitiesRadix.compute.meta ├── package.json └── package.json.meta ├── projects ├── GaussianExample-HDRP │ ├── Assets │ │ ├── GSTestScene.unity │ │ ├── GSTestScene.unity.meta │ │ ├── HDRPDefaultResources.meta │ │ └── HDRPDefaultResources │ │ │ ├── DefaultLookDevProfile.asset │ │ │ ├── DefaultLookDevProfile.asset.meta │ │ │ ├── DefaultSettingsVolumeProfile.asset │ │ │ ├── DefaultSettingsVolumeProfile.asset.meta │ │ │ ├── HDRenderPipelineAsset.asset │ │ │ ├── HDRenderPipelineAsset.asset.meta │ │ │ ├── HDRenderPipelineGlobalSettings.asset │ │ │ └── HDRenderPipelineGlobalSettings.asset.meta │ ├── Packages │ │ ├── manifest.json │ │ └── packages-lock.json │ └── ProjectSettings │ │ ├── AudioManager.asset │ │ ├── BurstAotSettings_StandaloneOSX.json │ │ ├── BurstAotSettings_StandaloneWindows.json │ │ ├── ClusterInputManager.asset │ │ ├── CommonBurstAotSettings.json │ │ ├── DynamicsManager.asset │ │ ├── EditorBuildSettings.asset │ │ ├── EditorSettings.asset │ │ ├── GraphicsSettings.asset │ │ ├── HDRPProjectSettings.asset │ │ ├── InputManager.asset │ │ ├── MemorySettings.asset │ │ ├── NavMeshAreas.asset │ │ ├── PackageManagerSettings.asset │ │ ├── Physics2DSettings.asset │ │ ├── PresetManager.asset │ │ ├── ProjectSettings.asset │ │ ├── ProjectVersion.txt │ │ ├── QualitySettings.asset │ │ ├── SceneTemplateSettings.json │ │ ├── ShaderGraphSettings.asset │ │ ├── TagManager.asset │ │ ├── TimeManager.asset │ │ ├── UnityConnectSettings.asset │ │ ├── VFXManager.asset │ │ └── VersionControlSettings.asset ├── GaussianExample-URP │ ├── Assets │ │ ├── GSTestScene.unity │ │ ├── GSTestScene.unity.meta │ │ ├── Settings.meta │ │ ├── Settings │ │ │ ├── Medium_PipelineAsset.asset │ │ │ ├── Medium_PipelineAsset.asset.meta │ │ │ ├── Medium_PipelineAsset_ForwardRenderer.asset │ │ │ └── Medium_PipelineAsset_ForwardRenderer.asset.meta │ │ ├── UniversalRenderPipelineGlobalSettings.asset │ │ └── UniversalRenderPipelineGlobalSettings.asset.meta │ ├── Packages │ │ ├── manifest.json │ │ └── packages-lock.json │ └── ProjectSettings │ │ ├── AudioManager.asset │ │ ├── BurstAotSettings_StandaloneOSX.json │ │ ├── BurstAotSettings_StandaloneWindows.json │ │ ├── ClusterInputManager.asset │ │ ├── CommonBurstAotSettings.json │ │ ├── DynamicsManager.asset │ │ ├── EditorBuildSettings.asset │ │ ├── EditorSettings.asset │ │ ├── GraphicsSettings.asset │ │ ├── InputManager.asset │ │ ├── MemorySettings.asset │ │ ├── NavMeshAreas.asset │ │ ├── PackageManagerSettings.asset │ │ ├── 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 └── GaussianExample │ ├── Assets │ ├── GSTestScene.unity │ └── GSTestScene.unity.meta │ ├── Packages │ ├── manifest.json │ └── packages-lock.json │ └── ProjectSettings │ ├── AudioManager.asset │ ├── BurstAotSettings_StandaloneOSX.json │ ├── BurstAotSettings_StandaloneWindows.json │ ├── ClusterInputManager.asset │ ├── CommonBurstAotSettings.json │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── MemorySettings.asset │ ├── NavMeshAreas.asset │ ├── PackageManagerSettings.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── SceneTemplateSettings.json │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ ├── VFXManager.asset │ └── VersionControlSettings.asset └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.csproj 2 | *.sln 3 | .DS_Store 4 | .idea 5 | 6 | /builds/* 7 | /images/* 8 | /Shot-*.png 9 | 10 | /Assets/GaussianAssets/* 11 | /Assets/GaussianAssets.meta 12 | /Assets/Models~/* 13 | /Library/* 14 | /Logs/* 15 | /Temp/* 16 | /UserSettings/* 17 | /obj/* 18 | 19 | /projects/**/Assets/GaussianAssets/* 20 | /projects/**/Assets/GaussianAssets.meta 21 | /projects/**/Assets/Models~/* 22 | /projects/**/Library/* 23 | /projects/**/Logs/* 24 | /projects/**/Temp/* 25 | /projects/**/UserSettings/* 26 | /projects/**/obj/* 27 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Aras Pranckevičius 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /docs/Images/shotAssetCreator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/Images/shotAssetCreator.png -------------------------------------------------------------------------------- /docs/Images/shotCutouts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/Images/shotCutouts.png -------------------------------------------------------------------------------- /docs/Images/shotEdit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/Images/shotEdit.jpg -------------------------------------------------------------------------------- /docs/Images/shotOverview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/Images/shotOverview.jpg -------------------------------------------------------------------------------- /docs/RefImages/D3D12_bicycle0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/RefImages/D3D12_bicycle0.png -------------------------------------------------------------------------------- /docs/RefImages/D3D12_garden30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/RefImages/D3D12_garden30.png -------------------------------------------------------------------------------- /docs/RefImages/D3D12_truck30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/RefImages/D3D12_truck30.png -------------------------------------------------------------------------------- /docs/RefImages/SBIR_bicycle0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/RefImages/SBIR_bicycle0.png -------------------------------------------------------------------------------- /docs/RefImages/SBIR_garden30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/RefImages/SBIR_garden30.png -------------------------------------------------------------------------------- /docs/RefImages/SBIR_truck30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/docs/RefImages/SBIR_truck30.png -------------------------------------------------------------------------------- /docs/render-pipeline-integration.md: -------------------------------------------------------------------------------- 1 | ## How does Gaussian Splatting integrate with the rest of rendering? 2 | 3 | ### Which Unity render pipelines are supported? 4 | 5 | "All of them" is a simple answer. More details: 6 | - I am mostly developing and testing with the built-in render pipeline (BiRP). This one does not need any extra setup; 7 | just have `GaussianSplatRenderer` components. 8 | - URP: add `GaussianSplatURPFeature` to the URP renderer settings. 9 | - HDRP: add CustomPass volume object and a `GaussianSplatHDRPPass` entry to it. It can be setup to render before transparencies, 10 | or after postprocess. Doing it after postprocess often produces better results, since before transparencies does not play well 11 | with HDRP auto-exposure thingamabobs. 12 | 13 | ### How do gaussians interact with regular rendering? 14 | 15 | GaussianSplatRenderer objects are rendered after all opaque objects and skybox is rendered, and are tested against Z buffer. 16 | This means you _can_ have opaque objects inside the "gaussian scene", and the splats will be occluded properly. 17 | 18 | However this does not work the other way around - the gaussians do _not_ write into the Z buffer, and they are rendered before 19 | all transparencies. So they will not interact with "regular" semitransparent objects well. 20 | 21 | ### Are gaussians affected by lighting? 22 | 23 | No. No lights, shadows, reflection probes, lightmaps, skybox, any of that stuff. 24 | 25 | ### Rendering order of multiple Gaussian Splat objects 26 | 27 | If you have multiple GaussianSplatRenderer objects, they will be _very roughly_ ordered, by their Transform positions. 28 | This means that if GS objects are "sufficiently not overlapping", they will render and composite correctly, but if one of them 29 | is inside another one, or overlapping "a lot", then depending on the viewing direction and their relative ordering, you can 30 | get incorrect rendering results. 31 | 32 | This is very much the same issue as you'd have with overlapping particle systems, or overlapping semitransparent objects in "regular" 33 | rendering. It's hard to solve properly! 34 | -------------------------------------------------------------------------------- /docs/splat-editing.md: -------------------------------------------------------------------------------- 1 | ## Editing Gaussian Splats 2 | 3 | There is some tooling for "editing" Gaussian Splats. With `GaussianSplatRenderer` object selected, 4 | the inspector shows options to manually edit the splats, as well as create "cutout" objects. 5 | 6 | If you have edited the splats, or have created any cutout objects, there's `Export modified PLY` 7 | button in the inspector to export the result back into regular Gaussian Splat `.ply` file. That file 8 | can be used in any other gaussian splat application, or imported into this same Unity project. 9 | When exporting, there's an option to export in world space, which means the splat Transform 10 | position, rotation and scale will get "baked" into the exported PLY splat (including proper 11 | rotation of spherical harmonics). 12 | 13 | > Note that for any sort of editing, it is advisable to use "Very High" quality preset when importing 14 | > original gaussian splat file. Otherwise you'll be editing already quantized / approximated 15 | > lossy representation. 16 | 17 | ### Manual splat editing 18 | 19 | 20 | 21 | By pressing "Edit" button in the inspector, or the splat edit tool in the scene view toolbar ("blob" 22 | icon atop of editing tools), 23 | you can go into manual splat selection mode, that works very similar to other rectangle selection 24 | tools in Unity: 25 | - Click-drag in the scene view selects the splats in the rectangle. 26 | - Shift-drag adds to the current selection, Ctrl-drag removes from selection. 27 | - `Backspace` or `Delete` key deletes selected splats. 28 | - `Ctrl/Cmd+I` inverts selection, `Ctrl/Cmd+A` selects all splats. 29 | - `F` frames view on the selected splats. 30 | - Move (`W`) tool allows moving selected splats in space. 31 | 32 | Note that **there is no Undo** for these editing operations. They all are implemented on the GPU, and 33 | making *that* work with Unity's undo system might be doable, but a bit of a hassle. A workaround 34 | is like "revert all edits" functionality, by disabling and re-eanbling the `GaussianSplatRenderer` 35 | component. 36 | 37 | If you have any Cutout objects (see below), then selection operations properly take them into account. 38 | For example, inverting the selection will *not* select splats that are "cut" by the cutouts. 39 | This means you could temporarily (mis)use cutouts to help with editing: create a box cutout, and 40 | any manual splat editing will be constrained within that box. Then move the box to edit another area, 41 | etc. 42 | 43 | ### Splat Cutouts 44 | 45 | 46 | 47 | Objects with `GaussianCutout` component on them can be set to "virtually delete" splats within 48 | an area. In the `GaussianSplatRenderer` inspector there's a list of cutout objects affecting 49 | this splat cloud, and some helper buttons to create a new cutout, clear the list, etc. 50 | 51 | Each cutout can be in Ellipsoid or Box shape, and the volume of it is controlled 52 | through regular transform position, rotation and scale. 53 | 54 | By default, a cutout hides all splats that are outside of it (when multiple cutouts are present, 55 | then a splat is visible if it's inside *any* cutout). 56 | 57 | A cutout can have `Invert` toggle turned on, in which case it hides splats that are *inside* of it 58 | (when multiple cutouts are present, then a splat is hidden if it's inside *any* inverted cutout). 59 | 60 | ### Merging Splats 61 | 62 | When you have multiple `GaussianSplatRenderer` objects selected, there's a button in inspector 63 | to Merge them. They will get merged into one, and the rest will get their GameObjects disabled. 64 | The merged splat can be further edited, or exported into PLY format. 65 | -------------------------------------------------------------------------------- /package/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 07d8a5410ba18f64e9efe04f3a023cfa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Editor/GaussianMoveTool.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using GaussianSplatting.Runtime; 4 | using UnityEditor; 5 | using UnityEditor.EditorTools; 6 | using UnityEngine; 7 | 8 | namespace GaussianSplatting.Editor 9 | { 10 | [EditorTool("Gaussian Move Tool", typeof(GaussianSplatRenderer), typeof(GaussianToolContext))] 11 | class GaussianMoveTool : GaussianTool 12 | { 13 | public override void OnToolGUI(EditorWindow window) 14 | { 15 | var gs = GetRenderer(); 16 | if (!gs || !CanBeEdited() || !HasSelection()) 17 | return; 18 | var tr = gs.transform; 19 | 20 | EditorGUI.BeginChangeCheck(); 21 | var selCenterLocal = GetSelectionCenterLocal(); 22 | var selCenterWorld = tr.TransformPoint(selCenterLocal); 23 | var newPosWorld = Handles.DoPositionHandle(selCenterWorld, Tools.handleRotation); 24 | if (EditorGUI.EndChangeCheck()) 25 | { 26 | var newPosLocal = tr.InverseTransformPoint(newPosWorld); 27 | var wasModified = gs.editModified; 28 | gs.EditTranslateSelection(newPosLocal - selCenterLocal); 29 | if (!wasModified) 30 | GaussianSplatRendererEditor.RepaintAll(); 31 | Event.current.Use(); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /package/Editor/GaussianMoveTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c9f40b54eb504648b2a0beadabbcc8d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/GaussianRotateTool.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using GaussianSplatting.Runtime; 4 | using UnityEditor; 5 | using UnityEditor.EditorTools; 6 | using UnityEngine; 7 | 8 | namespace GaussianSplatting.Editor 9 | { 10 | /* not working correctly yet 11 | [EditorTool("Gaussian Rotate Tool", typeof(GaussianSplatRenderer), typeof(GaussianToolContext))] 12 | class GaussianRotateTool : GaussianTool 13 | { 14 | Quaternion m_CurrentRotation = Quaternion.identity; 15 | Vector3 m_FrozenSelCenterLocal = Vector3.zero; 16 | bool m_FreezePivot = false; 17 | 18 | public override void OnActivated() 19 | { 20 | m_FreezePivot = false; 21 | } 22 | 23 | public override void OnToolGUI(EditorWindow window) 24 | { 25 | var gs = GetRenderer(); 26 | if (!gs || !CanBeEdited() || !HasSelection()) 27 | return; 28 | var tr = gs.transform; 29 | var evt = Event.current; 30 | 31 | var selCenterLocal = GetSelectionCenterLocal(); 32 | if (evt.type == EventType.MouseDown) 33 | { 34 | gs.EditStorePosMouseDown(); 35 | gs.EditStoreOtherMouseDown(); 36 | m_FrozenSelCenterLocal = selCenterLocal; 37 | m_FreezePivot = true; 38 | } 39 | if (evt.type == EventType.MouseUp) 40 | { 41 | m_CurrentRotation = Quaternion.identity; 42 | m_FreezePivot = false; 43 | } 44 | 45 | if (m_FreezePivot) 46 | selCenterLocal = m_FrozenSelCenterLocal; 47 | 48 | EditorGUI.BeginChangeCheck(); 49 | var selCenterWorld = tr.TransformPoint(selCenterLocal); 50 | var newRotation = Handles.DoRotationHandle(m_CurrentRotation, selCenterWorld); 51 | if (EditorGUI.EndChangeCheck()) 52 | { 53 | Matrix4x4 localToWorld = gs.transform.localToWorldMatrix; 54 | Matrix4x4 worldToLocal = gs.transform.worldToLocalMatrix; 55 | var wasModified = gs.editModified; 56 | var rotToApply = newRotation; 57 | gs.EditRotateSelection(selCenterLocal, localToWorld, worldToLocal, rotToApply); 58 | m_CurrentRotation = newRotation; 59 | if (!wasModified) 60 | GaussianSplatRendererEditor.RepaintAll(); 61 | 62 | if(GUIUtility.hotControl == 0) 63 | { 64 | m_CurrentRotation = Tools.handleRotation; 65 | } 66 | } 67 | } 68 | } 69 | */ 70 | } -------------------------------------------------------------------------------- /package/Editor/GaussianRotateTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5128238188a44c86914a22a862195242 3 | timeCreated: 1697805149 -------------------------------------------------------------------------------- /package/Editor/GaussianScaleTool.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using GaussianSplatting.Runtime; 4 | using UnityEditor; 5 | using UnityEditor.EditorTools; 6 | using UnityEngine; 7 | 8 | namespace GaussianSplatting.Editor 9 | { 10 | /* // not working correctly yet when the GS itself has scale 11 | [EditorTool("Gaussian Scale Tool", typeof(GaussianSplatRenderer), typeof(GaussianToolContext))] 12 | class GaussianScaleTool : GaussianTool 13 | { 14 | Vector3 m_CurrentScale = Vector3.one; 15 | Vector3 m_FrozenSelCenterLocal = Vector3.zero; 16 | bool m_FreezePivot = false; 17 | 18 | public override void OnActivated() 19 | { 20 | m_FreezePivot = false; 21 | } 22 | 23 | public override void OnToolGUI(EditorWindow window) 24 | { 25 | var gs = GetRenderer(); 26 | if (!gs || !CanBeEdited() || !HasSelection()) 27 | return; 28 | var tr = gs.transform; 29 | var evt = Event.current; 30 | 31 | var selCenterLocal = GetSelectionCenterLocal(); 32 | if (evt.type == EventType.MouseDown) 33 | { 34 | gs.EditStorePosMouseDown(); 35 | m_FrozenSelCenterLocal = selCenterLocal; 36 | m_FreezePivot = true; 37 | } 38 | if (evt.type == EventType.MouseUp) 39 | { 40 | m_CurrentScale = Vector3.one; 41 | m_FreezePivot = false; 42 | } 43 | 44 | if (m_FreezePivot) 45 | selCenterLocal = m_FrozenSelCenterLocal; 46 | 47 | EditorGUI.BeginChangeCheck(); 48 | var selCenterWorld = tr.TransformPoint(selCenterLocal); 49 | m_CurrentScale = Handles.DoScaleHandle(m_CurrentScale, selCenterWorld, Tools.handleRotation, HandleUtility.GetHandleSize(selCenterWorld)); 50 | if (EditorGUI.EndChangeCheck()) 51 | { 52 | Matrix4x4 localToWorld = Matrix4x4.identity; 53 | Matrix4x4 worldToLocal = Matrix4x4.identity; 54 | if (Tools.pivotRotation == PivotRotation.Global) 55 | { 56 | localToWorld = gs.transform.localToWorldMatrix; 57 | worldToLocal = gs.transform.worldToLocalMatrix; 58 | } 59 | var wasModified = gs.editModified; 60 | gs.EditScaleSelection(selCenterLocal, localToWorld, worldToLocal, m_CurrentScale); 61 | if (!wasModified) 62 | GaussianSplatRendererEditor.RepaintAll(); 63 | evt.Use(); 64 | } 65 | } 66 | } 67 | */ 68 | } -------------------------------------------------------------------------------- /package/Editor/GaussianScaleTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dbf3d17a31b942b28f5d8c187adb8fdf 3 | timeCreated: 1697732813 -------------------------------------------------------------------------------- /package/Editor/GaussianSplatAssetCreator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 635bd950b8a74c84f870d5c8f02c3974 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/GaussianSplatAssetEditor.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using GaussianSplatting.Runtime; 4 | using Unity.Collections.LowLevel.Unsafe; 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace GaussianSplatting.Editor 9 | { 10 | [CustomEditor(typeof(GaussianSplatAsset))] 11 | [CanEditMultipleObjects] 12 | public class GaussianSplatAssetEditor : UnityEditor.Editor 13 | { 14 | public override void OnInspectorGUI() 15 | { 16 | var gs = target as GaussianSplatAsset; 17 | if (!gs) 18 | return; 19 | 20 | using var _ = new EditorGUI.DisabledScope(true); 21 | 22 | if (targets.Length == 1) 23 | SingleAssetGUI(gs); 24 | else 25 | { 26 | int totalCount = 0; 27 | foreach (var tgt in targets) 28 | { 29 | var gss = tgt as GaussianSplatAsset; 30 | if (gss) 31 | { 32 | totalCount += gss.splatCount; 33 | } 34 | } 35 | EditorGUILayout.TextField("Total Splats", $"{totalCount:N0}"); 36 | } 37 | } 38 | 39 | static void SingleAssetGUI(GaussianSplatAsset gs) 40 | { 41 | var splatCount = gs.splatCount; 42 | EditorGUILayout.TextField("Splats", $"{splatCount:N0}"); 43 | var prevBackColor = GUI.backgroundColor; 44 | if (gs.formatVersion != GaussianSplatAsset.kCurrentVersion) 45 | GUI.backgroundColor *= Color.red; 46 | EditorGUILayout.IntField("Version", gs.formatVersion); 47 | GUI.backgroundColor = prevBackColor; 48 | 49 | long sizePos = gs.posData != null ? gs.posData.dataSize : 0; 50 | long sizeOther = gs.otherData != null ? gs.otherData.dataSize : 0; 51 | long sizeCol = gs.colorData != null ? gs.colorData.dataSize : 0; 52 | long sizeSH = GaussianSplatAsset.CalcSHDataSize(gs.splatCount, gs.shFormat); 53 | long sizeChunk = gs.chunkData != null ? gs.chunkData.dataSize : 0; 54 | 55 | EditorGUILayout.TextField("Memory", EditorUtility.FormatBytes(sizePos + sizeOther + sizeSH + sizeCol + sizeChunk)); 56 | EditorGUI.indentLevel++; 57 | EditorGUILayout.TextField("Positions", $"{EditorUtility.FormatBytes(sizePos)} ({gs.posFormat})"); 58 | EditorGUILayout.TextField("Other", $"{EditorUtility.FormatBytes(sizeOther)} ({gs.scaleFormat})"); 59 | EditorGUILayout.TextField("Base color", $"{EditorUtility.FormatBytes(sizeCol)} ({gs.colorFormat})"); 60 | EditorGUILayout.TextField("SHs", $"{EditorUtility.FormatBytes(sizeSH)} ({gs.shFormat})"); 61 | EditorGUILayout.TextField("Chunks", 62 | $"{EditorUtility.FormatBytes(sizeChunk)} ({UnsafeUtility.SizeOf()} B/chunk)"); 63 | EditorGUI.indentLevel--; 64 | 65 | EditorGUILayout.Vector3Field("Bounds Min", gs.boundsMin); 66 | EditorGUILayout.Vector3Field("Bounds Max", gs.boundsMax); 67 | 68 | EditorGUILayout.TextField("Data Hash", gs.dataHash.ToString()); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /package/Editor/GaussianSplatAssetEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75971a29a6deda14c9b1ff5f4ab2f2a0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/GaussianSplatRendererEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b0ce434aee9ae4ee6b1f5cd10ae7c8cb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/GaussianSplatValidator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2f8e75b80eb181a4698f733ba59b694b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/GaussianSplattingEditor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GaussianSplattingEditor", 3 | "rootNamespace": "GaussianSplatting.Editor", 4 | "references": [ 5 | "GUID:4b653174f8fcdcd49b4c9a6f1ca8c7c3", 6 | "GUID:2665a8d13d1b3f18800f46e256720795", 7 | "GUID:d8b63aba1907145bea998dd612889d6b", 8 | "GUID:e0cd26848372d4e5c891c569017e11f1" 9 | ], 10 | "includePlatforms": [ 11 | "Editor" 12 | ], 13 | "excludePlatforms": [], 14 | "allowUnsafeCode": true, 15 | "overrideReferences": false, 16 | "precompiledReferences": [], 17 | "autoReferenced": true, 18 | "defineConstraints": [], 19 | "versionDefines": [], 20 | "noEngineReferences": false 21 | } -------------------------------------------------------------------------------- /package/Editor/GaussianSplattingEditor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 14414175af4b366469db63f2efee475f 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Editor/GaussianTool.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using GaussianSplatting.Runtime; 4 | using UnityEditor.EditorTools; 5 | using UnityEngine; 6 | 7 | namespace GaussianSplatting.Editor 8 | { 9 | abstract class GaussianTool : EditorTool 10 | { 11 | protected GaussianSplatRenderer GetRenderer() 12 | { 13 | var gs = target as GaussianSplatRenderer; 14 | if (!gs || !gs.HasValidAsset || !gs.HasValidRenderSetup) 15 | return null; 16 | return gs; 17 | } 18 | 19 | protected bool CanBeEdited() 20 | { 21 | var gs = GetRenderer(); 22 | if (!gs) 23 | return false; 24 | return gs.asset.chunkData == null; // need to be lossless / non-chunked for editing 25 | } 26 | 27 | protected bool HasSelection() 28 | { 29 | var gs = GetRenderer(); 30 | if (!gs) 31 | return false; 32 | return gs.editSelectedSplats > 0; 33 | } 34 | 35 | protected Vector3 GetSelectionCenterLocal() 36 | { 37 | var gs = GetRenderer(); 38 | if (!gs || gs.editSelectedSplats == 0) 39 | return Vector3.zero; 40 | return gs.editSelectedBounds.center; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /package/Editor/GaussianTool.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6203c808ab9e64a4a8ff0277c5aa7669 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/GaussianToolContext.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80d7ecbaa1b24e6399ee95f6fc0b9c90 3 | timeCreated: 1697718362 -------------------------------------------------------------------------------- /package/Editor/Icons.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 770e497b696b99641aa1bf295d0b3552 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Editor/Icons/GaussianContext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/package/Editor/Icons/GaussianContext.png -------------------------------------------------------------------------------- /package/Editor/Icons/GaussianContext.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c61202bc8cc557546afa505174da220e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 2 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 1 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 128 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Nintendo Switch 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: LinuxHeadlessSimulation 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Server 124 | maxTextureSize: 64 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 0 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /package/Editor/Icons/GaussianContext@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/package/Editor/Icons/GaussianContext@2x.png -------------------------------------------------------------------------------- /package/Editor/Icons/GaussianContext@2x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 15d0de03329e14440b034e884fe10379 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 2 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 1 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 128 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Nintendo Switch 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: LinuxHeadlessSimulation 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Server 124 | maxTextureSize: 64 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 0 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /package/Editor/Icons/d_GaussianContext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/package/Editor/Icons/d_GaussianContext.png -------------------------------------------------------------------------------- /package/Editor/Icons/d_GaussianContext.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81df9c0903abfa345a9022d090982f5d 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 2 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 1 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 128 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Android 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: iPhone 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Windows Store Apps 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 3 136 | buildTarget: tvOS 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | - serializedVersion: 3 149 | buildTarget: Lumin 150 | maxTextureSize: 2048 151 | resizeAlgorithm: 0 152 | textureFormat: -1 153 | textureCompression: 1 154 | compressionQuality: 50 155 | crunchedCompression: 0 156 | allowsAlphaSplitting: 0 157 | overridden: 0 158 | ignorePlatformSupport: 0 159 | androidETC2FallbackOverride: 0 160 | forceMaximumCompressionQuality_BC6H_BC7: 0 161 | - serializedVersion: 3 162 | buildTarget: CloudRendering 163 | maxTextureSize: 2048 164 | resizeAlgorithm: 0 165 | textureFormat: -1 166 | textureCompression: 1 167 | compressionQuality: 50 168 | crunchedCompression: 0 169 | allowsAlphaSplitting: 0 170 | overridden: 0 171 | ignorePlatformSupport: 0 172 | androidETC2FallbackOverride: 0 173 | forceMaximumCompressionQuality_BC6H_BC7: 0 174 | - serializedVersion: 3 175 | buildTarget: Nintendo Switch 176 | maxTextureSize: 64 177 | resizeAlgorithm: 0 178 | textureFormat: -1 179 | textureCompression: 0 180 | compressionQuality: 50 181 | crunchedCompression: 0 182 | allowsAlphaSplitting: 0 183 | overridden: 0 184 | ignorePlatformSupport: 0 185 | androidETC2FallbackOverride: 0 186 | forceMaximumCompressionQuality_BC6H_BC7: 0 187 | - serializedVersion: 3 188 | buildTarget: LinuxHeadlessSimulation 189 | maxTextureSize: 64 190 | resizeAlgorithm: 0 191 | textureFormat: -1 192 | textureCompression: 0 193 | compressionQuality: 50 194 | crunchedCompression: 0 195 | allowsAlphaSplitting: 0 196 | overridden: 0 197 | ignorePlatformSupport: 0 198 | androidETC2FallbackOverride: 0 199 | forceMaximumCompressionQuality_BC6H_BC7: 0 200 | - serializedVersion: 3 201 | buildTarget: Server 202 | maxTextureSize: 64 203 | resizeAlgorithm: 0 204 | textureFormat: -1 205 | textureCompression: 0 206 | compressionQuality: 50 207 | crunchedCompression: 0 208 | allowsAlphaSplitting: 0 209 | overridden: 0 210 | ignorePlatformSupport: 0 211 | androidETC2FallbackOverride: 0 212 | forceMaximumCompressionQuality_BC6H_BC7: 0 213 | spriteSheet: 214 | serializedVersion: 2 215 | sprites: [] 216 | outline: [] 217 | physicsShape: [] 218 | bones: [] 219 | spriteID: 220 | internalID: 0 221 | vertices: [] 222 | indices: 223 | edges: [] 224 | weights: [] 225 | secondaryTextures: [] 226 | nameFileIdTable: {} 227 | mipmapLimitGroupName: 228 | pSDRemoveMatte: 0 229 | userData: 230 | assetBundleName: 231 | assetBundleVariant: 232 | -------------------------------------------------------------------------------- /package/Editor/Icons/d_GaussianContext@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendan-duncan/UnityGaussianSplatting/2e533eb62fa3a9a84e7969ac6c1a68ab3dc13945/package/Editor/Icons/d_GaussianContext@2x.png -------------------------------------------------------------------------------- /package/Editor/Icons/d_GaussianContext@2x.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e37880566baf3964e9b75e45adb36f3f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 2 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 1 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 128 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Nintendo Switch 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: LinuxHeadlessSimulation 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Server 124 | maxTextureSize: 64 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 0 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | spriteSheet: 136 | serializedVersion: 2 137 | sprites: [] 138 | outline: [] 139 | physicsShape: [] 140 | bones: [] 141 | spriteID: 142 | internalID: 0 143 | vertices: [] 144 | indices: 145 | edges: [] 146 | weights: [] 147 | secondaryTextures: [] 148 | nameFileIdTable: {} 149 | mipmapLimitGroupName: 150 | pSDRemoveMatte: 0 151 | userData: 152 | assetBundleName: 153 | assetBundleVariant: 154 | -------------------------------------------------------------------------------- /package/Editor/Utils.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f812890ad0ea4c747bdc67b6d2c1c627 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Editor/Utils/CaptureScreenshot.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace GaussianSplatting.Editor.Utils 7 | { 8 | public class CaptureScreenshot : MonoBehaviour 9 | { 10 | [MenuItem("Tools/Gaussian Splats/Debug/Capture Screenshot %g")] 11 | public static void CaptureShot() 12 | { 13 | int counter = 0; 14 | string path; 15 | while(true) 16 | { 17 | path = $"Shot-{counter:0000}.png"; 18 | if (!System.IO.File.Exists(path)) 19 | break; 20 | ++counter; 21 | } 22 | ScreenCapture.CaptureScreenshot(path); 23 | Debug.Log($"Captured {path}"); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /package/Editor/Utils/CaptureScreenshot.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c80a2b8daebbc1449b79e5ec436f39d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/Utils/FilePickerControl.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69e6c946494a9b2479ce96542339029c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/Utils/KMeansClustering.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9cecadf9c980a4ad9a30d0e1ae09d16a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/Utils/PLYFileReader.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using System; 4 | using System.Collections.Generic; 5 | using System.IO; 6 | using System.Linq; 7 | using System.Text; 8 | using Unity.Collections; 9 | 10 | namespace GaussianSplatting.Editor.Utils 11 | { 12 | public static class PLYFileReader 13 | { 14 | public static void ReadFileHeader(string filePath, out int vertexCount, out int vertexStride, out List attrNames) 15 | { 16 | vertexCount = 0; 17 | vertexStride = 0; 18 | attrNames = new List(); 19 | if (!File.Exists(filePath)) 20 | return; 21 | using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); 22 | ReadHeaderImpl(filePath, out vertexCount, out vertexStride, out attrNames, fs); 23 | } 24 | 25 | static void ReadHeaderImpl(string filePath, out int vertexCount, out int vertexStride, out List attrNames, FileStream fs) 26 | { 27 | // C# arrays and NativeArrays make it hard to have a "byte" array larger than 2GB :/ 28 | if (fs.Length >= 2 * 1024 * 1024 * 1024L) 29 | throw new IOException($"PLY {filePath} read error: currently files larger than 2GB are not supported"); 30 | 31 | // read header 32 | vertexCount = 0; 33 | vertexStride = 0; 34 | attrNames = new List(); 35 | const int kMaxHeaderLines = 9000; 36 | for (int lineIdx = 0; lineIdx < kMaxHeaderLines; ++lineIdx) 37 | { 38 | var line = ReadLine(fs); 39 | if (line == "end_header" || line.Length == 0) 40 | break; 41 | var tokens = line.Split(' '); 42 | if (tokens.Length == 3 && tokens[0] == "element" && tokens[1] == "vertex") 43 | vertexCount = int.Parse(tokens[2]); 44 | if (tokens.Length == 3 && tokens[0] == "property") 45 | { 46 | ElementType type = tokens[1] switch 47 | { 48 | "float" => ElementType.Float, 49 | "double" => ElementType.Double, 50 | "uchar" => ElementType.UChar, 51 | _ => ElementType.None 52 | }; 53 | vertexStride += TypeToSize(type); 54 | attrNames.Add(tokens[2]); 55 | } 56 | } 57 | //Debug.Log($"PLY {filePath} vtx {vertexCount} stride {vertexStride} attrs #{attrNames.Count} {string.Join(',', attrNames)}"); 58 | } 59 | 60 | public static void ReadFile(string filePath, out int vertexCount, out int vertexStride, out List attrNames, out NativeArray vertices) 61 | { 62 | using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); 63 | ReadHeaderImpl(filePath, out vertexCount, out vertexStride, out attrNames, fs); 64 | 65 | vertices = new NativeArray(vertexCount * vertexStride, Allocator.Persistent); 66 | var readBytes = fs.Read(vertices); 67 | if (readBytes != vertices.Length) 68 | throw new IOException($"PLY {filePath} read error, expected {vertices.Length} data bytes got {readBytes}"); 69 | } 70 | 71 | enum ElementType 72 | { 73 | None, 74 | Float, 75 | Double, 76 | UChar 77 | } 78 | 79 | static int TypeToSize(ElementType t) 80 | { 81 | return t switch 82 | { 83 | ElementType.None => 0, 84 | ElementType.Float => 4, 85 | ElementType.Double => 8, 86 | ElementType.UChar => 1, 87 | _ => throw new ArgumentOutOfRangeException(nameof(t), t, null) 88 | }; 89 | } 90 | 91 | static string ReadLine(FileStream fs) 92 | { 93 | var byteBuffer = new List(); 94 | while (true) 95 | { 96 | int b = fs.ReadByte(); 97 | if (b == -1 || b == '\n') 98 | break; 99 | byteBuffer.Add((byte)b); 100 | } 101 | // if line had CRLF line endings, remove the CR part 102 | if (byteBuffer.Count > 0 && byteBuffer.Last() == '\r') 103 | byteBuffer.RemoveAt(byteBuffer.Count-1); 104 | return Encoding.UTF8.GetString(byteBuffer.ToArray()); 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /package/Editor/Utils/PLYFileReader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27964c85711004ddca73909489af2e2e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Editor/Utils/TinyJsonParser.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9ea5041388393f459c378c31e4d7b1f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Aras Pranckevičius 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /package/LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: da286c32b8dba1744aecca8cb1ab4ad6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 78bfe028c2744c741bd4f94574de884a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Materials/BlackSkybox.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: BlackSkybox 11 | m_Shader: {fileID: 4800000, guid: a4867e5be68354ccda78062a92c74391, type: 3} 12 | m_Parent: {fileID: 0} 13 | m_ModifiedSerializedProperties: 0 14 | m_ValidKeywords: [] 15 | m_InvalidKeywords: [] 16 | m_LightmapFlags: 4 17 | m_EnableInstancingVariants: 0 18 | m_DoubleSidedGI: 0 19 | m_CustomRenderQueue: -1 20 | stringTagMap: {} 21 | disabledShaderPasses: [] 22 | m_LockedProperties: 23 | m_SavedProperties: 24 | serializedVersion: 3 25 | m_TexEnvs: [] 26 | m_Ints: [] 27 | m_Floats: [] 28 | m_Colors: 29 | - _Color: {r: 0, g: 0, b: 0, a: 0} 30 | m_BuildTextureStacks: [] 31 | -------------------------------------------------------------------------------- /package/Materials/BlackSkybox.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e9c9951d4a35e4a54812fa0280fa548c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71627bcf67390da439d82a2a05a57bb4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Runtime/GaussianCutout.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using System.Linq; 4 | using UnityEditor; 5 | using UnityEngine; 6 | 7 | namespace GaussianSplatting.Runtime 8 | { 9 | public class GaussianCutout : MonoBehaviour 10 | { 11 | public enum Type 12 | { 13 | Ellipsoid, 14 | Box 15 | } 16 | 17 | public Type m_Type = Type.Ellipsoid; 18 | public bool m_Invert = false; 19 | 20 | public struct ShaderData // match GaussianCutoutShaderData in CS 21 | { 22 | public Matrix4x4 matrix; 23 | public uint typeAndFlags; 24 | } 25 | 26 | public static ShaderData GetShaderData(GaussianCutout self, Matrix4x4 rendererMatrix) 27 | { 28 | ShaderData sd = default; 29 | if (self && self.isActiveAndEnabled) 30 | { 31 | var tr = self.transform; 32 | sd.matrix = tr.worldToLocalMatrix * rendererMatrix; 33 | sd.typeAndFlags = ((uint)self.m_Type) | (self.m_Invert ? 0x100u : 0u); 34 | } 35 | else 36 | { 37 | sd.typeAndFlags = ~0u; 38 | } 39 | return sd; 40 | } 41 | 42 | #if UNITY_EDITOR 43 | public void OnDrawGizmos() 44 | { 45 | Gizmos.matrix = transform.localToWorldMatrix; 46 | var color = Color.magenta; 47 | color.a = 0.2f; 48 | if (Selection.Contains(gameObject)) 49 | color.a = 0.9f; 50 | else 51 | { 52 | // mid amount of alpha if a GS object that contains us as a cutout is selected 53 | var activeGo = Selection.activeGameObject; 54 | if (activeGo != null) 55 | { 56 | var activeSplat = activeGo.GetComponent(); 57 | if (activeSplat != null) 58 | { 59 | if (activeSplat.m_Cutouts != null && activeSplat.m_Cutouts.Contains(this)) 60 | color.a = 0.5f; 61 | } 62 | } 63 | } 64 | 65 | Gizmos.color = color; 66 | if (m_Type == Type.Ellipsoid) 67 | { 68 | Gizmos.DrawWireSphere(Vector3.zero, 1.0f); 69 | } 70 | if (m_Type == Type.Box) 71 | { 72 | Gizmos.DrawWireCube(Vector3.zero, Vector3.one * 2); 73 | } 74 | } 75 | #endif // #if UNITY_EDITOR 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /package/Runtime/GaussianCutout.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c57a1c501bd05549ae157cc474bd4c4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatAsset.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 33b71fae31e6c7d438e8566dc713e666 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatHDRPPass.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | #if GS_ENABLE_HDRP 3 | 4 | using UnityEngine; 5 | using UnityEngine.Rendering.HighDefinition; 6 | using UnityEngine.Rendering; 7 | using UnityEngine.Experimental.Rendering; 8 | 9 | namespace GaussianSplatting.Runtime 10 | { 11 | // Note: I have no idea what is the proper usage of CustomPass. 12 | // Code below "seems to work" but I'm just fumbling along, without understanding any of it. 13 | class GaussianSplatHDRPPass : CustomPass 14 | { 15 | RTHandle m_RenderTarget; 16 | 17 | // It can be used to configure render targets and their clear state. Also to create temporary render target textures. 18 | // When empty this render pass will render to the active camera render target. 19 | // You should never call CommandBuffer.SetRenderTarget. Instead call ConfigureTarget and ConfigureClear. 20 | // The render pipeline will ensure target setup and clearing happens in an performance manner. 21 | protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd) 22 | { 23 | m_RenderTarget = RTHandles.Alloc(Vector2.one, 24 | colorFormat: GraphicsFormat.R16G16B16A16_SFloat, useDynamicScale: true, 25 | depthBufferBits: DepthBits.None, msaaSamples: MSAASamples.None, 26 | filterMode: FilterMode.Point, wrapMode: TextureWrapMode.Clamp, name: "_GaussianSplatRT"); 27 | } 28 | 29 | protected override void Execute(CustomPassContext ctx) 30 | { 31 | var cam = ctx.hdCamera.camera; 32 | 33 | var system = GaussianSplatRenderSystem.instance; 34 | if (!system.GatherSplatsForCamera(cam)) 35 | return; 36 | 37 | ctx.cmd.SetGlobalTexture(m_RenderTarget.name, m_RenderTarget.nameID); 38 | CoreUtils.SetRenderTarget(ctx.cmd, m_RenderTarget, ctx.cameraDepthBuffer, ClearFlag.Color, 39 | new Color(0, 0, 0, 0)); 40 | 41 | // add sorting, view calc and drawing commands for each splat object 42 | Material matComposite = 43 | GaussianSplatRenderSystem.instance.SortAndRenderSplats(ctx.hdCamera.camera, ctx.cmd); 44 | 45 | // compose 46 | ctx.cmd.BeginSample(GaussianSplatRenderSystem.s_ProfCompose); 47 | CoreUtils.SetRenderTarget(ctx.cmd, ctx.cameraColorBuffer, ClearFlag.None); 48 | CoreUtils.DrawFullScreen(ctx.cmd, matComposite, ctx.propertyBlock, shaderPassId: 0); 49 | ctx.cmd.EndSample(GaussianSplatRenderSystem.s_ProfCompose); 50 | } 51 | 52 | protected override void Cleanup() 53 | { 54 | m_RenderTarget.Release(); 55 | } 56 | } 57 | } 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatHDRPPass.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f40f16e78da87c646826cc5335ccb1f8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatRenderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c12d929a7f62c48adbe9ff45c9a33ff0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: 7 | - m_ShaderSplats: {fileID: 4800000, guid: ed800126ae8844a67aad1974ddddd59c, type: 3} 8 | - m_ShaderComposite: {fileID: 4800000, guid: 7e184af7d01193a408eb916d8acafff9, type: 3} 9 | - m_ShaderDebugPoints: {fileID: 4800000, guid: b44409fc67214394f8f47e4e2648425e, type: 3} 10 | - m_ShaderDebugBoxes: {fileID: 4800000, guid: 4006f2680fd7c8b4cbcb881454c782be, type: 3} 11 | - m_CSSplatUtilities: {fileID: 7200000, guid: ec84f78b836bd4f96a105d6b804f08bd, type: 3} 12 | - m_CSFfxSort: {fileID: 7200000, guid: dec36776b6c843544a1f6f9b436a4474, type: 3} 13 | executionOrder: 0 14 | icon: {instanceID: 0} 15 | userData: 16 | assetBundleName: 17 | assetBundleVariant: 18 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatURPFeature.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | #if GS_ENABLE_URP 3 | 4 | using UnityEngine; 5 | using UnityEngine.Experimental.Rendering; 6 | using UnityEngine.Rendering; 7 | using UnityEngine.Rendering.Universal; 8 | 9 | namespace GaussianSplatting.Runtime 10 | { 11 | // Note: I have no idea what is the purpose of ScriptableRendererFeature vs ScriptableRenderPass, which one of those 12 | // is supposed to do resource management vs logic, etc. etc. Code below "seems to work" but I'm just fumbling along, 13 | // without understanding any of it. 14 | // 15 | // ReSharper disable once InconsistentNaming 16 | class GaussianSplatURPFeature : ScriptableRendererFeature 17 | { 18 | class GSRenderPass : ScriptableRenderPass 19 | { 20 | RTHandle m_RenderTarget; 21 | internal ScriptableRenderer m_Renderer = null; 22 | internal CommandBuffer m_Cmb = null; 23 | 24 | public void Dispose() 25 | { 26 | m_RenderTarget?.Release(); 27 | } 28 | 29 | public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) 30 | { 31 | RenderTextureDescriptor rtDesc = renderingData.cameraData.cameraTargetDescriptor; 32 | rtDesc.depthBufferBits = 0; 33 | rtDesc.msaaSamples = 1; 34 | rtDesc.graphicsFormat = GraphicsFormat.R16G16B16A16_SFloat; 35 | RenderingUtils.ReAllocateIfNeeded(ref m_RenderTarget, rtDesc, FilterMode.Point, TextureWrapMode.Clamp, name: "_GaussianSplatRT"); 36 | cmd.SetGlobalTexture(m_RenderTarget.name, m_RenderTarget.nameID); 37 | 38 | ConfigureTarget(m_RenderTarget, m_Renderer.cameraDepthTargetHandle); 39 | ConfigureClear(ClearFlag.Color, new Color(0,0,0,0)); 40 | } 41 | 42 | public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) 43 | { 44 | if (m_Cmb == null) 45 | return; 46 | 47 | // add sorting, view calc and drawing commands for each splat object 48 | Material matComposite = GaussianSplatRenderSystem.instance.SortAndRenderSplats(renderingData.cameraData.camera, m_Cmb); 49 | 50 | // compose 51 | m_Cmb.BeginSample(GaussianSplatRenderSystem.s_ProfCompose); 52 | Blitter.BlitCameraTexture(m_Cmb, m_RenderTarget, m_Renderer.cameraColorTargetHandle, RenderBufferLoadAction.Load, RenderBufferStoreAction.Store, matComposite, 0); 53 | m_Cmb.EndSample(GaussianSplatRenderSystem.s_ProfCompose); 54 | context.ExecuteCommandBuffer(m_Cmb); 55 | } 56 | } 57 | 58 | GSRenderPass m_Pass; 59 | bool m_HasCamera; 60 | 61 | public override void Create() 62 | { 63 | m_Pass = new GSRenderPass 64 | { 65 | renderPassEvent = RenderPassEvent.BeforeRenderingTransparents 66 | }; 67 | } 68 | 69 | public override void OnCameraPreCull(ScriptableRenderer renderer, in CameraData cameraData) 70 | { 71 | m_HasCamera = false; 72 | var system = GaussianSplatRenderSystem.instance; 73 | if (!system.GatherSplatsForCamera(cameraData.camera)) 74 | return; 75 | 76 | CommandBuffer cmb = system.InitialClearCmdBuffer(cameraData.camera); 77 | m_Pass.m_Cmb = cmb; 78 | m_HasCamera = true; 79 | } 80 | 81 | public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) 82 | { 83 | if (!m_HasCamera) 84 | return; 85 | m_Pass.m_Renderer = renderer; 86 | renderer.EnqueuePass(m_Pass); 87 | } 88 | 89 | protected override void Dispose(bool disposing) 90 | { 91 | m_Pass?.Dispose(); 92 | m_Pass = null; 93 | } 94 | } 95 | } 96 | 97 | #endif // #if GS_ENABLE_URP 98 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatURPFeature.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01052c1a4da12064d8681d7c1800f94a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: 7 | - m_ShaderSplats: {fileID: 4800000, guid: ed800126ae8844a67aad1974ddddd59c, type: 3} 8 | - m_ShaderComposite: {fileID: 4800000, guid: 7e184af7d01193a408eb916d8acafff9, type: 3} 9 | - m_ShaderDebugPoints: {fileID: 4800000, guid: b44409fc67214394f8f47e4e2648425e, type: 3} 10 | - m_ShaderDebugBoxes: {fileID: 4800000, guid: 4006f2680fd7c8b4cbcb881454c782be, type: 3} 11 | - m_CSSplatUtilities: {fileID: 7200000, guid: ec84f78b836bd4f96a105d6b804f08bd, type: 3} 12 | - m_CSFfxSort: {fileID: 7200000, guid: dec36776b6c843544a1f6f9b436a4474, type: 3} 13 | executionOrder: 0 14 | icon: {instanceID: 0} 15 | userData: 16 | assetBundleName: 17 | assetBundleVariant: 18 | -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatting.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GaussianSplatting", 3 | "rootNamespace": "GaussianSplatting.Runtime", 4 | "references": [ 5 | "GUID:d8b63aba1907145bea998dd612889d6b", 6 | "GUID:8992d429105beaf428dfc91fb5b9f531", 7 | "GUID:15fc0a57446b3144c949da3e2b9737a9", 8 | "GUID:df380645f10b7bc4b97d4f5eb6303d95", 9 | "GUID:457756d89b35d2941b3e7b37b4ece6f1" 10 | ], 11 | "includePlatforms": [], 12 | "excludePlatforms": [], 13 | "allowUnsafeCode": true, 14 | "overrideReferences": false, 15 | "precompiledReferences": [], 16 | "autoReferenced": true, 17 | "defineConstraints": [], 18 | "versionDefines": [ 19 | { 20 | "name": "com.unity.render-pipelines.universal", 21 | "expression": "", 22 | "define": "GS_ENABLE_URP" 23 | }, 24 | { 25 | "name": "com.unity.render-pipelines.high-definition", 26 | "expression": "", 27 | "define": "GS_ENABLE_HDRP" 28 | } 29 | ], 30 | "noEngineReferences": false 31 | } -------------------------------------------------------------------------------- /package/Runtime/GaussianSplatting.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b653174f8fcdcd49b4c9a6f1ca8c7c3 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Runtime/GaussianUtils.cs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | using Unity.Mathematics; 4 | 5 | namespace GaussianSplatting.Runtime 6 | { 7 | public static class GaussianUtils 8 | { 9 | public static float Sigmoid(float v) 10 | { 11 | return math.rcp(1.0f + math.exp(-v)); 12 | } 13 | 14 | public static float3 SH0ToColor(float3 dc0) 15 | { 16 | const float kSH_C0 = 0.2820948f; 17 | return dc0 * kSH_C0 + 0.5f; 18 | } 19 | 20 | public static float3 LinearScale(float3 logScale) 21 | { 22 | return math.abs(math.exp(logScale)); 23 | } 24 | 25 | public static float SquareCentered01(float x) 26 | { 27 | x -= 0.5f; 28 | x *= x * math.sign(x); 29 | return x * 2.0f + 0.5f; 30 | } 31 | 32 | public static float InvSquareCentered01(float x) 33 | { 34 | x -= 0.5f; 35 | x *= 0.5f; 36 | x = math.sqrt(math.abs(x)) * math.sign(x); 37 | return x + 0.5f; 38 | } 39 | 40 | public static float4 NormalizeSwizzleRotation(float4 wxyz) 41 | { 42 | return math.normalize(wxyz).yzwx; 43 | } 44 | 45 | // Returns three smallest quaternion components in xyz (normalized to 0..1 range), and index/3 of the largest one in w 46 | public static float4 PackSmallest3Rotation(float4 q) 47 | { 48 | // find biggest component 49 | float4 absQ = math.abs(q); 50 | int index = 0; 51 | float maxV = absQ.x; 52 | if (absQ.y > maxV) 53 | { 54 | index = 1; 55 | maxV = absQ.y; 56 | } 57 | if (absQ.z > maxV) 58 | { 59 | index = 2; 60 | maxV = absQ.z; 61 | } 62 | if (absQ.w > maxV) 63 | { 64 | index = 3; 65 | maxV = absQ.w; 66 | } 67 | 68 | if (index == 0) q = q.yzwx; 69 | if (index == 1) q = q.xzwy; 70 | if (index == 2) q = q.xywz; 71 | 72 | float3 three = q.xyz * (q.w >= 0 ? 1 : -1); // -1/sqrt2..+1/sqrt2 range 73 | three = (three * math.SQRT2) * 0.5f + 0.5f; // 0..1 range 74 | 75 | return new float4(three, index / 3.0f); 76 | } 77 | 78 | 79 | // Based on https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/ 80 | // Insert two 0 bits after each of the 21 low bits of x 81 | static ulong MortonPart1By2(ulong x) 82 | { 83 | x &= 0x1fffff; 84 | x = (x ^ (x << 32)) & 0x1f00000000ffffUL; 85 | x = (x ^ (x << 16)) & 0x1f0000ff0000ffUL; 86 | x = (x ^ (x << 8)) & 0x100f00f00f00f00fUL; 87 | x = (x ^ (x << 4)) & 0x10c30c30c30c30c3UL; 88 | x = (x ^ (x << 2)) & 0x1249249249249249UL; 89 | return x; 90 | } 91 | // Encode three 21-bit integers into 3D Morton order 92 | public static ulong MortonEncode3(uint3 v) 93 | { 94 | return (MortonPart1By2(v.z) << 2) | (MortonPart1By2(v.y) << 1) | MortonPart1By2(v.x); 95 | } 96 | 97 | // See GaussianSplatting.hlsl 98 | public static uint2 DecodeMorton2D_16x16(uint t) 99 | { 100 | t = (t & 0xFF) | ((t & 0xFE) << 7); // -EAFBGCHEAFBGCHD 101 | t &= 0x5555; // -E-F-G-H-A-B-C-D 102 | t = (t ^ (t >> 1)) & 0x3333; // --EF--GH--AB--CD 103 | t = (t ^ (t >> 2)) & 0x0f0f; // ----EFGH----ABCD 104 | return new uint2(t & 0xF, t >> 8); // --------EFGHABCD 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /package/Runtime/GaussianUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff862528cafe3e243aa42978a6d284d8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Runtime/GpuSorting.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Assertions; 3 | using UnityEngine.Rendering; 4 | 5 | namespace GaussianSplatting.Runtime 6 | { 7 | // GPU (uint key, uint payload) 8 bit-LSD radix sort, using reduce-then-scan 8 | // Copyright Thomas Smith 2023, MIT license 9 | // https://github.com/b0nes164/GPUSorting 10 | 11 | public class GpuSorting 12 | { 13 | public struct Args 14 | { 15 | public uint count; 16 | public GraphicsBuffer inputKeys; 17 | public GraphicsBuffer inputValues; 18 | public SupportResources resources; 19 | internal int workGroupCount; 20 | } 21 | 22 | public class SupportResources 23 | { 24 | public virtual void Dispose() {} 25 | } 26 | 27 | public virtual bool Valid => false; 28 | 29 | public virtual void Dispatch(CommandBuffer cmd, Args args) { } 30 | 31 | public virtual void DisposeTempBuffers() {} 32 | 33 | protected static uint DivRoundUp(uint x, uint y) => (x + y - 1) / y; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /package/Runtime/GpuSorting.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 57ad111038c361c44956f340f01d176e -------------------------------------------------------------------------------- /package/Runtime/GpuSortingFFX.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6fba9e34ae692c478758a3e3b540782 -------------------------------------------------------------------------------- /package/Runtime/GpuSortingRadix.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65a55f12dc9f42e4196260841dd87c15 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /package/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2cbb533de67b91d45afad2ab53f7f03c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package/Shaders/BlackSkybox.shader: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | Shader "Unlit/BlackSkybox" 3 | { 4 | Properties 5 | { 6 | _Color ("Color", Color) = (0,0,0,0) 7 | } 8 | SubShader 9 | { 10 | Pass 11 | { 12 | CGPROGRAM 13 | #pragma vertex vert 14 | #pragma fragment frag 15 | 16 | #include "UnityCG.cginc" 17 | 18 | struct appdata 19 | { 20 | float4 vertex : POSITION; 21 | }; 22 | 23 | struct v2f 24 | { 25 | float4 vertex : SV_POSITION; 26 | }; 27 | 28 | v2f vert (appdata v) 29 | { 30 | v2f o; 31 | o.vertex = UnityObjectToClipPos(v.vertex); 32 | return o; 33 | } 34 | 35 | half4 _Color; 36 | 37 | half4 frag (v2f i) : SV_Target 38 | { 39 | return _Color; 40 | } 41 | ENDCG 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /package/Shaders/BlackSkybox.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4867e5be68354ccda78062a92c74391 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /package/Shaders/DeviceRadixSort.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02209b8d952e7fc418492b88139826fd 3 | ShaderIncludeImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Shaders/GaussianComposite.shader: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | Shader "Hidden/Gaussian Splatting/Composite" 3 | { 4 | SubShader 5 | { 6 | Pass 7 | { 8 | ZWrite Off 9 | ZTest Always 10 | Cull Off 11 | Blend SrcAlpha OneMinusSrcAlpha 12 | 13 | CGPROGRAM 14 | #pragma vertex vert 15 | #pragma fragment frag 16 | #pragma require compute 17 | #pragma use_dxc 18 | #include "UnityCG.cginc" 19 | 20 | struct v2f 21 | { 22 | float4 vertex : SV_POSITION; 23 | }; 24 | 25 | v2f vert (uint vtxID : SV_VertexID) 26 | { 27 | v2f o; 28 | float2 quadPos = float2(vtxID&1, (vtxID>>1)&1) * 4.0 - 1.0; 29 | o.vertex = float4(quadPos, 1, 1); 30 | return o; 31 | } 32 | 33 | Texture2D _GaussianSplatRT; 34 | 35 | half4 frag (v2f i) : SV_Target 36 | { 37 | half4 col = _GaussianSplatRT.Load(int3(i.vertex.xy, 0)); 38 | col.rgb = GammaToLinearSpace(col.rgb); 39 | col.a = saturate(col.a * 1.5); 40 | return col; 41 | } 42 | ENDCG 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /package/Shaders/GaussianComposite.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e184af7d01193a408eb916d8acafff9 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /package/Shaders/GaussianDebugRenderBoxes.shader: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | Shader "Gaussian Splatting/Debug/Render Boxes" 3 | { 4 | SubShader 5 | { 6 | Tags { "RenderType"="Transparent" "Queue"="Transparent" } 7 | 8 | Pass 9 | { 10 | ZWrite Off 11 | Blend OneMinusDstAlpha One 12 | Cull Front 13 | 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | #pragma require compute 18 | #pragma use_dxc 19 | 20 | #include "UnityCG.cginc" 21 | #include "GaussianSplatting.hlsl" 22 | 23 | StructuredBuffer _OrderBuffer; 24 | 25 | bool _DisplayChunks; 26 | 27 | struct v2f 28 | { 29 | half4 col : COLOR0; 30 | float4 vertex : SV_POSITION; 31 | }; 32 | 33 | float _SplatScale; 34 | float _SplatOpacityScale; 35 | 36 | // based on https://iquilezles.org/articles/palettes/ 37 | // cosine based palette, 4 vec3 params 38 | half3 palette(float t, half3 a, half3 b, half3 c, half3 d) 39 | { 40 | return a + b*cos(6.28318*(c*t+d)); 41 | } 42 | 43 | v2f vert (uint vtxID : SV_VertexID, uint instID : SV_InstanceID) 44 | { 45 | v2f o; 46 | bool chunks = _DisplayChunks; 47 | uint idx = vtxID; 48 | float3 localPos = float3(idx&1, (idx>>1)&1, (idx>>2)&1) * 2.0 - 1.0; 49 | 50 | float3 centerWorldPos = 0; 51 | 52 | if (!chunks) 53 | { 54 | // display splat boxes 55 | instID = _OrderBuffer[instID]; 56 | SplatData splat = LoadSplatData(instID); 57 | 58 | float4 boxRot = splat.rot; 59 | float3 boxSize = splat.scale; 60 | boxSize *= _SplatScale; 61 | 62 | float3x3 splatRotScaleMat = CalcMatrixFromRotationScale(boxRot, boxSize); 63 | splatRotScaleMat = mul((float3x3)unity_ObjectToWorld, splatRotScaleMat); 64 | 65 | centerWorldPos = splat.pos; 66 | centerWorldPos = mul(unity_ObjectToWorld, float4(centerWorldPos,1)).xyz; 67 | 68 | o.col.rgb = saturate(splat.sh.col); 69 | o.col.a = saturate(splat.opacity * _SplatOpacityScale); 70 | 71 | localPos = mul(splatRotScaleMat, localPos) * 2; 72 | } 73 | else 74 | { 75 | // display chunk boxes 76 | localPos = localPos * 0.5 + 0.5; 77 | SplatChunkInfo chunk = _SplatChunks[instID]; 78 | float3 posMin = float3(chunk.posX.x, chunk.posY.x, chunk.posZ.x); 79 | float3 posMax = float3(chunk.posX.y, chunk.posY.y, chunk.posZ.y); 80 | 81 | localPos = lerp(posMin, posMax, localPos); 82 | localPos = mul(unity_ObjectToWorld, float4(localPos,1)).xyz; 83 | 84 | o.col.rgb = palette((float)instID / (float)_SplatChunkCount, half3(0.5,0.5,0.5), half3(0.5,0.5,0.5), half3(1,1,1), half3(0.0, 0.33, 0.67)); 85 | o.col.a = 0.1; 86 | } 87 | 88 | float3 worldPos = centerWorldPos + localPos; 89 | o.vertex = UnityWorldToClipPos(worldPos); 90 | 91 | return o; 92 | } 93 | 94 | half4 frag (v2f i) : SV_Target 95 | { 96 | half4 res = half4(i.col.rgb * i.col.a, i.col.a); 97 | return res; 98 | } 99 | ENDCG 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /package/Shaders/GaussianDebugRenderBoxes.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4006f2680fd7c8b4cbcb881454c782be 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /package/Shaders/GaussianDebugRenderPoints.shader: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | Shader "Gaussian Splatting/Debug/Render Points" 3 | { 4 | SubShader 5 | { 6 | Tags { "RenderType"="Transparent" "Queue"="Transparent" } 7 | 8 | Pass 9 | { 10 | ZWrite On 11 | Cull Off 12 | 13 | CGPROGRAM 14 | #pragma vertex vert 15 | #pragma fragment frag 16 | #pragma require compute 17 | #pragma use_dxc 18 | 19 | #include "GaussianSplatting.hlsl" 20 | 21 | struct v2f 22 | { 23 | half3 color : TEXCOORD0; 24 | float4 vertex : SV_POSITION; 25 | }; 26 | 27 | float _SplatSize; 28 | bool _DisplayIndex; 29 | int _SplatCount; 30 | 31 | v2f vert (uint vtxID : SV_VertexID, uint instID : SV_InstanceID) 32 | { 33 | v2f o; 34 | uint splatIndex = instID; 35 | 36 | SplatData splat = LoadSplatData(splatIndex); 37 | 38 | float3 centerWorldPos = splat.pos; 39 | centerWorldPos = mul(unity_ObjectToWorld, float4(centerWorldPos,1)).xyz; 40 | 41 | float4 centerClipPos = mul(UNITY_MATRIX_VP, float4(centerWorldPos, 1)); 42 | 43 | o.vertex = centerClipPos; 44 | uint idx = vtxID; 45 | float2 quadPos = float2(idx&1, (idx>>1)&1) * 2.0 - 1.0; 46 | o.vertex.xy += (quadPos * _SplatSize / _ScreenParams.xy) * o.vertex.w; 47 | 48 | o.color.rgb = saturate(splat.sh.col); 49 | if (_DisplayIndex) 50 | { 51 | o.color.r = frac((float)splatIndex / (float)_SplatCount * 100); 52 | o.color.g = frac((float)splatIndex / (float)_SplatCount * 10); 53 | o.color.b = (float)splatIndex / (float)_SplatCount; 54 | } 55 | return o; 56 | } 57 | 58 | half4 frag (v2f i) : SV_Target 59 | { 60 | return half4(i.color.rgb, 1); 61 | } 62 | ENDCG 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /package/Shaders/GaussianDebugRenderPoints.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b44409fc67214394f8f47e4e2648425e 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /package/Shaders/GaussianSplatting.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d4087e54957693c48a7be32de91c99e2 3 | ShaderIncludeImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Shaders/GpuSortFidelityFX.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c12d0548b4a9e504bb7758dedf0023f9 3 | ShaderIncludeImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Shaders/RenderGaussianSplats.shader: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | Shader "Gaussian Splatting/Render Splats" 3 | { 4 | SubShader 5 | { 6 | Tags { "RenderType"="Transparent" "Queue"="Transparent" } 7 | 8 | Pass 9 | { 10 | ZWrite Off 11 | Blend OneMinusDstAlpha One 12 | Cull Off 13 | 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | #pragma require compute 18 | #pragma use_dxc 19 | 20 | #include "GaussianSplatting.hlsl" 21 | 22 | StructuredBuffer _OrderBuffer; 23 | 24 | struct v2f 25 | { 26 | half4 col : COLOR0; 27 | float2 pos : TEXCOORD0; 28 | float4 vertex : SV_POSITION; 29 | }; 30 | 31 | StructuredBuffer _SplatViewData; 32 | ByteAddressBuffer _SplatSelectedBits; 33 | uint _SplatBitsValid; 34 | 35 | v2f vert (uint vtxID : SV_VertexID, uint instID : SV_InstanceID) 36 | { 37 | v2f o = (v2f)0; 38 | instID = _OrderBuffer[instID]; 39 | SplatViewData view = _SplatViewData[instID]; 40 | float4 centerClipPos = view.pos; 41 | bool behindCam = centerClipPos.w <= 0; 42 | if (behindCam) 43 | { 44 | o.vertex = asfloat(0x7fc00000); // NaN discards the primitive 45 | } 46 | else 47 | { 48 | o.col.r = f16tof32(view.color.x >> 16); 49 | o.col.g = f16tof32(view.color.x); 50 | o.col.b = f16tof32(view.color.y >> 16); 51 | o.col.a = f16tof32(view.color.y); 52 | 53 | uint idx = vtxID; 54 | float2 quadPos = float2(idx&1, (idx>>1)&1) * 2.0 - 1.0; 55 | quadPos *= 2; 56 | 57 | o.pos = quadPos; 58 | 59 | float2 deltaScreenPos = (quadPos.x * view.axis1 + quadPos.y * view.axis2) * 2 / _ScreenParams.xy; 60 | o.vertex = centerClipPos; 61 | o.vertex.xy += deltaScreenPos * centerClipPos.w; 62 | 63 | // is this splat selected? 64 | if (_SplatBitsValid) 65 | { 66 | uint wordIdx = instID / 32; 67 | uint bitIdx = instID & 31; 68 | uint selVal = _SplatSelectedBits.Load(wordIdx * 4); 69 | if (selVal & (1 << bitIdx)) 70 | { 71 | o.col.a = -1; 72 | } 73 | } 74 | } 75 | return o; 76 | } 77 | 78 | half4 frag (v2f i) : SV_Target 79 | { 80 | float power = -dot(i.pos, i.pos); 81 | half alpha = exp(power); 82 | if (i.col.a >= 0) 83 | { 84 | alpha = saturate(alpha * i.col.a); 85 | } 86 | else 87 | { 88 | // "selected" splat: magenta outline, increase opacity, magenta tint 89 | half3 selectedColor = half3(1,0,1); 90 | if (alpha > 7.0/255.0) 91 | { 92 | if (alpha < 10.0/255.0) 93 | { 94 | alpha = 1; 95 | i.col.rgb = selectedColor; 96 | } 97 | alpha = saturate(alpha + 0.3); 98 | } 99 | i.col.rgb = lerp(i.col.rgb, selectedColor, 0.5); 100 | } 101 | 102 | if (alpha < 1.0/255.0) 103 | discard; 104 | 105 | half4 res = half4(i.col.rgb * alpha, alpha); 106 | return res; 107 | } 108 | ENDCG 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /package/Shaders/RenderGaussianSplats.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed800126ae8844a67aad1974ddddd59c 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /package/Shaders/SphericalHarmonics.hlsl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0e45617a7c5ba4b4eb55e897761dcb31 3 | ShaderIncludeImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Shaders/SplatUtilitiesFFX.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec84f78b836bd4f96a105d6b804f08bd 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/Shaders/SplatUtilitiesRadix.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e382bbf4bd2a20049bfe578e3818a985 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "Aras Pranckevicius", 3 | "dependencies": { "com.unity.burst": "1.8.8", "com.unity.collections": "2.1.4", "com.unity.mathematics": "1.2.6" }, 4 | "description": "3D Gaussian Splatting rendering and tools", 5 | "displayName": "Gaussian Splatting", 6 | "keywords": [ "unity" ], 7 | "license": "MIT", 8 | "name": "org.nesnausk.gaussian-splatting", 9 | "repository": "github:aras-p/UnityGaussianSplatting", 10 | "unity": "2022.3", 11 | "unityRelease": "7f1", 12 | "version": "0.8.0" 13 | } 14 | -------------------------------------------------------------------------------- /package/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 110db01d54641354399a53474743e47b 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/GSTestScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2d982869eb73400a9330aeea897c790 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 211e3b16f78e84a939b6011212c88ca2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources/DefaultLookDevProfile.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: DefaultLookDevProfile 14 | m_EditorClassIdentifier: 15 | components: 16 | - {fileID: 8761387877531654226} 17 | - {fileID: 1902828633788537306} 18 | - {fileID: 1880163708194025631} 19 | - {fileID: 2340290907100754200} 20 | --- !u!114 &1880163708194025631 21 | MonoBehaviour: 22 | m_ObjectHideFlags: 3 23 | m_CorrespondingSourceObject: {fileID: 0} 24 | m_PrefabInstance: {fileID: 0} 25 | m_PrefabAsset: {fileID: 0} 26 | m_GameObject: {fileID: 0} 27 | m_Enabled: 1 28 | m_EditorHideFlags: 0 29 | m_Script: {fileID: 11500000, guid: 9008a067f4d626c4d8bc4bc48f04bb89, type: 3} 30 | m_Name: AmbientOcclusion 31 | m_EditorClassIdentifier: 32 | active: 1 33 | m_AdvancedMode: 0 34 | quality: 35 | m_OverrideState: 0 36 | m_Value: 1 37 | rayTracing: 38 | m_OverrideState: 0 39 | m_Value: 0 40 | intensity: 41 | m_OverrideState: 1 42 | m_Value: 0.5 43 | min: 0 44 | max: 4 45 | directLightingStrength: 46 | m_OverrideState: 0 47 | m_Value: 0 48 | min: 0 49 | max: 1 50 | radius: 51 | m_OverrideState: 1 52 | m_Value: 1 53 | min: 0.25 54 | max: 5 55 | spatialBilateralAggressiveness: 56 | m_OverrideState: 0 57 | m_Value: 0.15 58 | min: 0 59 | max: 1 60 | temporalAccumulation: 61 | m_OverrideState: 0 62 | m_Value: 1 63 | ghostingReduction: 64 | m_OverrideState: 0 65 | m_Value: 0.5 66 | min: 0 67 | max: 1 68 | blurSharpness: 69 | m_OverrideState: 0 70 | m_Value: 0.1 71 | min: 0 72 | max: 1 73 | layerMask: 74 | m_OverrideState: 0 75 | m_Value: 76 | serializedVersion: 2 77 | m_Bits: 4294967295 78 | m_StepCount: 79 | m_OverrideState: 0 80 | m_Value: 6 81 | min: 2 82 | max: 32 83 | m_FullResolution: 84 | m_OverrideState: 0 85 | m_Value: 0 86 | m_MaximumRadiusInPixels: 87 | m_OverrideState: 0 88 | m_Value: 32 89 | min: 16 90 | max: 256 91 | m_BilateralUpsample: 92 | m_OverrideState: 0 93 | m_Value: 0 94 | m_DirectionCount: 95 | m_OverrideState: 0 96 | m_Value: 2 97 | min: 1 98 | max: 6 99 | m_RayLength: 100 | m_OverrideState: 0 101 | m_Value: 3 102 | min: 0 103 | m_SampleCount: 104 | m_OverrideState: 0 105 | m_Value: 2 106 | min: 1 107 | max: 64 108 | m_Denoise: 109 | m_OverrideState: 0 110 | m_Value: 1 111 | m_DenoiserRadius: 112 | m_OverrideState: 0 113 | m_Value: 0.5 114 | min: 0.001 115 | max: 1 116 | --- !u!114 &1902828633788537306 117 | MonoBehaviour: 118 | m_ObjectHideFlags: 3 119 | m_CorrespondingSourceObject: {fileID: 0} 120 | m_PrefabInstance: {fileID: 0} 121 | m_PrefabAsset: {fileID: 0} 122 | m_GameObject: {fileID: 0} 123 | m_Enabled: 1 124 | m_EditorHideFlags: 0 125 | m_Script: {fileID: 11500000, guid: 7ddcec8a8eb2d684d833ac8f5d26aebd, type: 3} 126 | m_Name: HDShadowSettings 127 | m_EditorClassIdentifier: 128 | active: 1 129 | m_AdvancedMode: 0 130 | maxShadowDistance: 131 | m_OverrideState: 1 132 | m_Value: 25 133 | min: 0 134 | directionalTransmissionMultiplier: 135 | m_OverrideState: 0 136 | m_Value: 1 137 | min: 0 138 | max: 1 139 | cascadeShadowSplitCount: 140 | m_OverrideState: 1 141 | m_Value: 2 142 | min: 1 143 | max: 4 144 | cascadeShadowSplit0: 145 | m_OverrideState: 0 146 | m_Value: 0.05 147 | cascadeShadowSplit1: 148 | m_OverrideState: 0 149 | m_Value: 0.15 150 | cascadeShadowSplit2: 151 | m_OverrideState: 0 152 | m_Value: 0.3 153 | cascadeShadowBorder0: 154 | m_OverrideState: 0 155 | m_Value: 0 156 | cascadeShadowBorder1: 157 | m_OverrideState: 0 158 | m_Value: 0 159 | cascadeShadowBorder2: 160 | m_OverrideState: 0 161 | m_Value: 0 162 | cascadeShadowBorder3: 163 | m_OverrideState: 0 164 | m_Value: 0 165 | --- !u!114 &2340290907100754200 166 | MonoBehaviour: 167 | m_ObjectHideFlags: 3 168 | m_CorrespondingSourceObject: {fileID: 0} 169 | m_PrefabInstance: {fileID: 0} 170 | m_PrefabAsset: {fileID: 0} 171 | m_GameObject: {fileID: 0} 172 | m_Enabled: 1 173 | m_EditorHideFlags: 0 174 | m_Script: {fileID: 11500000, guid: 24f077503be6ae942a1e1245dbd53ea9, type: 3} 175 | m_Name: Bloom 176 | m_EditorClassIdentifier: 177 | active: 1 178 | m_AdvancedMode: 0 179 | quality: 180 | m_OverrideState: 0 181 | m_Value: 3 182 | threshold: 183 | m_OverrideState: 0 184 | m_Value: 0 185 | min: 0 186 | intensity: 187 | m_OverrideState: 1 188 | m_Value: 0.1 189 | min: 0 190 | max: 1 191 | scatter: 192 | m_OverrideState: 0 193 | m_Value: 0.7 194 | min: 0 195 | max: 1 196 | tint: 197 | m_OverrideState: 0 198 | m_Value: {r: 1, g: 1, b: 1, a: 1} 199 | hdr: 0 200 | showAlpha: 0 201 | showEyeDropper: 1 202 | dirtTexture: 203 | m_OverrideState: 0 204 | m_Value: {fileID: 0} 205 | dirtIntensity: 206 | m_OverrideState: 0 207 | m_Value: 0 208 | min: 0 209 | anamorphic: 210 | m_OverrideState: 0 211 | m_Value: 1 212 | m_Resolution: 213 | m_OverrideState: 0 214 | m_Value: 2 215 | m_HighQualityPrefiltering: 216 | m_OverrideState: 0 217 | m_Value: 0 218 | m_HighQualityFiltering: 219 | m_OverrideState: 0 220 | m_Value: 1 221 | --- !u!114 &8761387877531654226 222 | MonoBehaviour: 223 | m_ObjectHideFlags: 3 224 | m_CorrespondingSourceObject: {fileID: 0} 225 | m_PrefabInstance: {fileID: 0} 226 | m_PrefabAsset: {fileID: 0} 227 | m_GameObject: {fileID: 0} 228 | m_Enabled: 1 229 | m_EditorHideFlags: 0 230 | m_Script: {fileID: 11500000, guid: f086a068d4c5889438831b3ae9afc11c, type: 3} 231 | m_Name: Tonemapping 232 | m_EditorClassIdentifier: 233 | active: 1 234 | m_AdvancedMode: 0 235 | mode: 236 | m_OverrideState: 1 237 | m_Value: 1 238 | toeStrength: 239 | m_OverrideState: 0 240 | m_Value: 0 241 | min: 0 242 | max: 1 243 | toeLength: 244 | m_OverrideState: 0 245 | m_Value: 0.5 246 | min: 0 247 | max: 1 248 | shoulderStrength: 249 | m_OverrideState: 0 250 | m_Value: 0 251 | min: 0 252 | max: 1 253 | shoulderLength: 254 | m_OverrideState: 0 255 | m_Value: 0.5 256 | min: 0 257 | shoulderAngle: 258 | m_OverrideState: 0 259 | m_Value: 0 260 | min: 0 261 | max: 1 262 | gamma: 263 | m_OverrideState: 0 264 | m_Value: 1 265 | min: 0.001 266 | lutTexture: 267 | m_OverrideState: 0 268 | m_Value: {fileID: 0} 269 | lutContribution: 270 | m_OverrideState: 0 271 | m_Value: 1 272 | min: 0 273 | max: 1 274 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources/DefaultLookDevProfile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f010448c3c9554de9922c1ffca58788a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources/DefaultSettingsVolumeProfile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62c69421694254d7ab6ab65d759d0ec9 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources/HDRenderPipelineAsset.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 19244090aab3649ad9d6b3d2d0cd0261 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources/HDRenderPipelineGlobalSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 781cc897cf8675041a751163b51f97dd, type: 3} 13 | m_Name: HDRenderPipelineGlobalSettings 14 | m_EditorClassIdentifier: 15 | m_DefaultVolumeProfile: {fileID: 11400000, guid: 62c69421694254d7ab6ab65d759d0ec9, type: 2} 16 | m_LookDevVolumeProfile: {fileID: 11400000, guid: f010448c3c9554de9922c1ffca58788a, type: 2} 17 | m_RenderingPathDefaultCameraFrameSettings: 18 | bitDatas: 19 | data1: 140666587840333 20 | data2: 13763000512783810584 21 | lodBias: 1 22 | lodBiasMode: 0 23 | lodBiasQualityLevel: 0 24 | maximumLODLevel: 0 25 | maximumLODLevelMode: 0 26 | maximumLODLevelQualityLevel: 0 27 | sssQualityMode: 0 28 | sssQualityLevel: 0 29 | sssCustomSampleBudget: 20 30 | msaaMode: 1 31 | materialQuality: 0 32 | m_RenderingPathDefaultBakedOrCustomReflectionFrameSettings: 33 | bitDatas: 34 | data1: 135310754214733 35 | data2: 13763000499898974232 36 | lodBias: 1 37 | lodBiasMode: 0 38 | lodBiasQualityLevel: 0 39 | maximumLODLevel: 0 40 | maximumLODLevelMode: 0 41 | maximumLODLevelQualityLevel: 0 42 | sssQualityMode: 0 43 | sssQualityLevel: 0 44 | sssCustomSampleBudget: 20 45 | msaaMode: 1 46 | materialQuality: 0 47 | m_RenderingPathDefaultRealtimeReflectionFrameSettings: 48 | bitDatas: 49 | data1: 139923391782733 50 | data2: 13763000465807638544 51 | lodBias: 1 52 | lodBiasMode: 0 53 | lodBiasQualityLevel: 0 54 | maximumLODLevel: 0 55 | maximumLODLevelMode: 0 56 | maximumLODLevelQualityLevel: 0 57 | sssQualityMode: 0 58 | sssQualityLevel: 0 59 | sssCustomSampleBudget: 20 60 | msaaMode: 1 61 | materialQuality: 0 62 | m_RenderPipelineResources: {fileID: 11400000, guid: 3ce144cff5783da45aa5d4fdc2da14b7, type: 2} 63 | m_RenderPipelineRayTracingResources: {fileID: 0} 64 | beforeTransparentCustomPostProcesses: [] 65 | beforePostProcessCustomPostProcesses: [] 66 | afterPostProcessBlursCustomPostProcesses: [] 67 | afterPostProcessCustomPostProcesses: [] 68 | beforeTAACustomPostProcesses: [] 69 | lightLayerName0: Light Layer default 70 | lightLayerName1: Light Layer 1 71 | lightLayerName2: Light Layer 2 72 | lightLayerName3: Light Layer 3 73 | lightLayerName4: Light Layer 4 74 | lightLayerName5: Light Layer 5 75 | lightLayerName6: Light Layer 6 76 | lightLayerName7: Light Layer 7 77 | decalLayerName0: Decal Layer default 78 | decalLayerName1: Decal Layer 1 79 | decalLayerName2: Decal Layer 2 80 | decalLayerName3: Decal Layer 3 81 | decalLayerName4: Decal Layer 4 82 | decalLayerName5: Decal Layer 5 83 | decalLayerName6: Decal Layer 6 84 | decalLayerName7: Decal Layer 7 85 | lensAttenuationMode: 0 86 | colorGradingSpace: 0 87 | m_ObsoleteDiffusionProfileSettingsList: [] 88 | rendererListCulling: 0 89 | DLSSProjectId: 000000 90 | useDLSSCustomProjectId: 0 91 | supportProbeVolumes: 0 92 | supportRuntimeDebugDisplay: 0 93 | autoRegisterDiffusionProfiles: 1 94 | apvScenesData: 95 | serializedBounds: [] 96 | serializedHasVolumes: [] 97 | serializedProfiles: [] 98 | serializedBakeSettings: [] 99 | serializedBakingSets: [] 100 | m_LightingScenario: 101 | m_Version: 5 102 | m_ShaderVariantLogLevel: 0 103 | m_ExportShaderVariants: 1 104 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Assets/HDRPDefaultResources/HDRenderPipelineGlobalSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f22297fcc7844434794774bc689f7b6b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.rider": "3.0.24", 4 | "com.unity.render-pipelines.high-definition": "14.0.8", 5 | "org.nesnausk.gaussian-splatting": "file:../../../package", 6 | "com.unity.modules.ai": "1.0.0", 7 | "com.unity.modules.androidjni": "1.0.0", 8 | "com.unity.modules.animation": "1.0.0", 9 | "com.unity.modules.assetbundle": "1.0.0", 10 | "com.unity.modules.audio": "1.0.0", 11 | "com.unity.modules.cloth": "1.0.0", 12 | "com.unity.modules.director": "1.0.0", 13 | "com.unity.modules.imageconversion": "1.0.0", 14 | "com.unity.modules.imgui": "1.0.0", 15 | "com.unity.modules.jsonserialize": "1.0.0", 16 | "com.unity.modules.particlesystem": "1.0.0", 17 | "com.unity.modules.physics": "1.0.0", 18 | "com.unity.modules.physics2d": "1.0.0", 19 | "com.unity.modules.screencapture": "1.0.0", 20 | "com.unity.modules.terrain": "1.0.0", 21 | "com.unity.modules.terrainphysics": "1.0.0", 22 | "com.unity.modules.tilemap": "1.0.0", 23 | "com.unity.modules.ui": "1.0.0", 24 | "com.unity.modules.uielements": "1.0.0", 25 | "com.unity.modules.umbra": "1.0.0", 26 | "com.unity.modules.unityanalytics": "1.0.0", 27 | "com.unity.modules.unitywebrequest": "1.0.0", 28 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 29 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 30 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 31 | "com.unity.modules.unitywebrequestwww": "1.0.0", 32 | "com.unity.modules.vehicles": "1.0.0", 33 | "com.unity.modules.video": "1.0.0", 34 | "com.unity.modules.vr": "1.0.0", 35 | "com.unity.modules.wind": "1.0.0", 36 | "com.unity.modules.xr": "1.0.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_EnableOutputSuspension: 1 16 | m_SpatializerPlugin: 17 | m_AmbisonicDecoderPlugin: 18 | m_DisableAudio: 0 19 | m_VirtualizeEffects: 1 20 | m_RequestedDSPBufferSize: 0 21 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/BurstAotSettings_StandaloneOSX.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "DebugDataKind": 1, 9 | "EnableArmv9SecurityFeatures": false, 10 | "CpuMinTargetX32": 0, 11 | "CpuMaxTargetX32": 0, 12 | "CpuMinTargetX64": 0, 13 | "CpuMaxTargetX64": 0, 14 | "CpuTargetsX64": 72, 15 | "OptimizeFor": 0 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/BurstAotSettings_StandaloneWindows.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "DebugDataKind": 1, 9 | "EnableArmv9SecurityFeatures": false, 10 | "CpuMinTargetX32": 0, 11 | "CpuMaxTargetX32": 0, 12 | "CpuMinTargetX64": 0, 13 | "CpuMaxTargetX64": 0, 14 | "CpuTargetsX32": 6, 15 | "CpuTargetsX64": 72, 16 | "OptimizeFor": 0 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/CommonBurstAotSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "DisabledWarnings": "" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 14 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_DefaultMaxDepenetrationVelocity: 10 11 | m_SleepThreshold: 0.005 12 | m_DefaultContactOffset: 0.01 13 | m_DefaultSolverIterations: 6 14 | m_DefaultSolverVelocityIterations: 1 15 | m_QueriesHitBackfaces: 0 16 | m_QueriesHitTriggers: 1 17 | m_EnableAdaptiveForce: 0 18 | m_ClothInterCollisionDistance: 0.1 19 | m_ClothInterCollisionStiffness: 0.2 20 | m_ContactsGeneration: 1 21 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 22 | m_SimulationMode: 0 23 | m_AutoSyncTransforms: 0 24 | m_ReuseCollisionCallbacks: 0 25 | m_InvokeCollisionCallbacks: 1 26 | m_ClothInterCollisionSettingsToggle: 0 27 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 28 | m_ContactPairsMode: 0 29 | m_BroadphaseType: 0 30 | m_WorldBounds: 31 | m_Center: {x: 0, y: 0, z: 0} 32 | m_Extent: {x: 250, y: 250, z: 250} 33 | m_WorldSubdivisions: 8 34 | m_FrictionType: 0 35 | m_EnableEnhancedDeterminism: 0 36 | m_EnableUnifiedHeightmaps: 1 37 | m_ImprovedPatchFriction: 0 38 | m_SolverType: 0 39 | m_DefaultMaxAngularSpeed: 50 40 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 1 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerCacheSize: 10 14 | m_SpritePackerPaddingPower: 1 15 | m_Bc7TextureCompressor: 0 16 | m_EtcTextureCompressorBehavior: 1 17 | m_EtcTextureFastCompressor: 1 18 | m_EtcTextureNormalCompressor: 2 19 | m_EtcTextureBestCompressor: 4 20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h 21 | m_ProjectGenerationRootNamespace: 22 | m_EnableTextureStreamingInEditMode: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | m_EnableEditorAsyncCPUTextureLoading: 0 25 | m_AsyncShaderCompilation: 1 26 | m_PrefabModeAllowAutoSave: 1 27 | m_EnterPlayModeOptionsEnabled: 1 28 | m_EnterPlayModeOptions: 3 29 | m_GameObjectNamingDigits: 1 30 | m_GameObjectNamingScheme: 0 31 | m_AssetNamingUsesSpace: 1 32 | m_InspectorUseIMGUIDefaultInspector: 0 33 | m_UseLegacyProbeSampleCount: 0 34 | m_SerializeInlineMappingsOnOneLine: 1 35 | m_DisableCookiesInLightmapper: 0 36 | m_AssetPipelineMode: 1 37 | m_RefreshImportMode: 0 38 | m_CacheServerMode: 0 39 | m_CacheServerEndpoint: 40 | m_CacheServerNamespacePrefix: default 41 | m_CacheServerEnableDownload: 1 42 | m_CacheServerEnableUpload: 1 43 | m_CacheServerEnableAuth: 0 44 | m_CacheServerEnableTls: 0 45 | m_CacheServerValidationMode: 2 46 | m_CacheServerDownloadBatchSize: 128 47 | m_EnableEnlightenBakedGI: 0 48 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_DepthNormals: 17 | m_Mode: 1 18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 19 | m_MotionVectors: 20 | m_Mode: 1 21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 22 | m_LightHalo: 23 | m_Mode: 1 24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LensFlare: 26 | m_Mode: 1 27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 28 | m_VideoShadersIncludeMode: 2 29 | m_AlwaysIncludedShaders: 30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 37 | m_PreloadedShaders: [] 38 | m_PreloadShadersBatchTimeLimit: -1 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 40 | m_CustomRenderPipeline: {fileID: 11400000, guid: 19244090aab3649ad9d6b3d2d0cd0261, type: 2} 41 | m_TransparencySortMode: 0 42 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 43 | m_DefaultRenderingPath: 1 44 | m_DefaultMobileRenderingPath: 1 45 | m_TierSettings: [] 46 | m_LightmapStripping: 0 47 | m_FogStripping: 0 48 | m_InstancingStripping: 0 49 | m_BrgStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 1 61 | m_LightsUseColorTemperature: 1 62 | m_DefaultRenderingLayerMask: 257 63 | m_LogWhenShaderIsCompiled: 0 64 | m_SRPDefaultSettings: 65 | UnityEngine.Rendering.HighDefinition.HDRenderPipeline: {fileID: 11400000, guid: f22297fcc7844434794774bc689f7b6b, type: 2} 66 | m_LightProbeOutsideHullStrategy: 1 67 | m_CameraRelativeLightCulling: 0 68 | m_CameraRelativeShadowCulling: 0 69 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/HDRPProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 63a2978a97e4fc04cb9d905947216f3d, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_ProjectSettingFolderPath: HDRPDefaultResources 16 | m_WizardPopupAtStart: 0 17 | m_LastMaterialVersion: 13 18 | m_HDShaderGraphLastSeenVersion: 0 19 | m_PluginMaterialVersions: 20 | m_Keys: [] 21 | m_Values: 22 | m_PluginSubTargetVersions: 23 | m_Keys: [] 24 | m_Values: 25 | m_Version: 2 26 | m_ObsoleteWizardPopupAlreadyShownOnce: 0 27 | m_ObsoleteWizardActiveTab: 0 28 | m_ObsoleteWizardNeedRestartAfterChangingToDX12: 0 29 | m_ObsoleteWizardNeedToRunFixAllAgainAfterDomainReload: 0 30 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 3 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | buildHeightMesh: 0 88 | maxJobWorkers: 0 89 | preserveTilesOutsideBounds: 0 90 | debug: 91 | m_Flags: 0 92 | m_SettingNames: 93 | - Humanoid 94 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_AdvancedSettingsExpanded: 1 17 | m_ScopedRegistriesSettingsExpanded: 1 18 | m_SeeAllPackageVersions: 0 19 | m_DismissPreviewPackagesInUse: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_ConfigSource: 0 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_Modified: 0 33 | m_ErrorMessage: 34 | m_UserModificationsInstanceId: -890 35 | m_OriginalInstanceId: -892 36 | m_LoadAssets: 0 37 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 6 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_SimulationMode: 0 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_GizmoOptions: 10 48 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 49 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.3.8f1 2 | m_EditorVersionWithRevision: 2022.3.8f1 (b5eafc012955) 3 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 0 8 | m_QualitySettings: 9 | - serializedVersion: 3 10 | name: Medium 11 | pixelLightCount: 1 12 | shadows: 2 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 20 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 1 21 | skinWeights: 2 22 | globalTextureMipmapLimit: 0 23 | textureMipmapLimitSettings: [] 24 | anisotropicTextures: 1 25 | antiAliasing: 0 26 | softParticles: 0 27 | softVegetation: 0 28 | realtimeReflectionProbes: 0 29 | billboardsFaceCameraPosition: 0 30 | useLegacyDetailDistribution: 0 31 | vSyncCount: 0 32 | realtimeGICPUUsage: 25 33 | lodBias: 1 34 | maximumLODLevel: 0 35 | enableLODCrossFade: 1 36 | streamingMipmapsActive: 0 37 | streamingMipmapsAddAllCameras: 1 38 | streamingMipmapsMemoryBudget: 512 39 | streamingMipmapsRenderersPerFrame: 512 40 | streamingMipmapsMaxLevelReduction: 2 41 | streamingMipmapsMaxFileIORequests: 1024 42 | particleRaycastBudget: 64 43 | asyncUploadTimeSlice: 2 44 | asyncUploadBufferSize: 16 45 | asyncUploadPersistentBuffer: 1 46 | resolutionScalingFixedDPIFactor: 1 47 | customRenderPipeline: {fileID: 0} 48 | terrainQualityOverrides: 0 49 | terrainPixelError: 1 50 | terrainDetailDensityScale: 1 51 | terrainBasemapDistance: 1000 52 | terrainDetailDistance: 80 53 | terrainTreeDistance: 5000 54 | terrainBillboardStart: 50 55 | terrainFadeLength: 5 56 | terrainMaxTrees: 50 57 | excludedTargetPlatforms: [] 58 | m_TextureMipmapLimitGroupNames: [] 59 | m_PerPlatformDefaultQuality: 60 | Android: 0 61 | Bratwurst: 0 62 | EmbeddedLinux: 0 63 | GameCoreScarlett: 0 64 | GameCoreXboxOne: 0 65 | LinuxHeadlessSimulation: 0 66 | Nintendo Switch: 0 67 | PS4: 0 68 | PS5: 0 69 | QNX: 0 70 | Server: 0 71 | Stadia: 0 72 | Standalone: 0 73 | WebGL: 0 74 | Windows Store Apps: 0 75 | XboxOne: 0 76 | iPhone: 0 77 | tvOS: 0 78 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "defaultInstantiationMode": 0 8 | }, 9 | { 10 | "userAdded": false, 11 | "type": "UnityEditor.Animations.AnimatorController", 12 | "defaultInstantiationMode": 0 13 | }, 14 | { 15 | "userAdded": false, 16 | "type": "UnityEngine.AnimatorOverrideController", 17 | "defaultInstantiationMode": 0 18 | }, 19 | { 20 | "userAdded": false, 21 | "type": "UnityEditor.Audio.AudioMixerController", 22 | "defaultInstantiationMode": 0 23 | }, 24 | { 25 | "userAdded": false, 26 | "type": "UnityEngine.ComputeShader", 27 | "defaultInstantiationMode": 1 28 | }, 29 | { 30 | "userAdded": false, 31 | "type": "UnityEngine.Cubemap", 32 | "defaultInstantiationMode": 0 33 | }, 34 | { 35 | "userAdded": false, 36 | "type": "UnityEngine.GameObject", 37 | "defaultInstantiationMode": 0 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEditor.LightingDataAsset", 42 | "defaultInstantiationMode": 0 43 | }, 44 | { 45 | "userAdded": false, 46 | "type": "UnityEngine.LightingSettings", 47 | "defaultInstantiationMode": 0 48 | }, 49 | { 50 | "userAdded": false, 51 | "type": "UnityEngine.Material", 52 | "defaultInstantiationMode": 0 53 | }, 54 | { 55 | "userAdded": false, 56 | "type": "UnityEditor.MonoScript", 57 | "defaultInstantiationMode": 1 58 | }, 59 | { 60 | "userAdded": false, 61 | "type": "UnityEngine.PhysicMaterial", 62 | "defaultInstantiationMode": 0 63 | }, 64 | { 65 | "userAdded": false, 66 | "type": "UnityEngine.PhysicsMaterial2D", 67 | "defaultInstantiationMode": 0 68 | }, 69 | { 70 | "userAdded": false, 71 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 72 | "defaultInstantiationMode": 0 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 77 | "defaultInstantiationMode": 0 78 | }, 79 | { 80 | "userAdded": false, 81 | "type": "UnityEngine.Rendering.VolumeProfile", 82 | "defaultInstantiationMode": 0 83 | }, 84 | { 85 | "userAdded": false, 86 | "type": "UnityEditor.SceneAsset", 87 | "defaultInstantiationMode": 1 88 | }, 89 | { 90 | "userAdded": false, 91 | "type": "UnityEngine.Shader", 92 | "defaultInstantiationMode": 1 93 | }, 94 | { 95 | "userAdded": false, 96 | "type": "UnityEngine.ShaderVariantCollection", 97 | "defaultInstantiationMode": 1 98 | }, 99 | { 100 | "userAdded": false, 101 | "type": "UnityEngine.Texture", 102 | "defaultInstantiationMode": 0 103 | }, 104 | { 105 | "userAdded": false, 106 | "type": "UnityEngine.Texture2D", 107 | "defaultInstantiationMode": 0 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Timeline.TimelineAsset", 112 | "defaultInstantiationMode": 0 113 | } 114 | ], 115 | "defaultDependencyTypeInfo": { 116 | "userAdded": false, 117 | "type": "", 118 | "defaultInstantiationMode": 1 119 | }, 120 | "newSceneOverride": 0 121 | } -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/ShaderGraphSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 53 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de02f9e1d18f588468e474319d09a723, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | customInterpolatorErrorThreshold: 32 16 | customInterpolatorWarningThreshold: 16 17 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | m_PackageRequiringCoreStatsPresent: 0 27 | UnityAdsSettings: 28 | m_Enabled: 0 29 | m_InitializeOnStartup: 1 30 | m_TestMode: 0 31 | m_IosGameId: 32 | m_AndroidGameId: 33 | m_GameIds: {} 34 | m_GameId: 35 | PerformanceReportingSettings: 36 | m_Enabled: 0 37 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 7200000, guid: 84a17cfa13e40ae4082ef42714f0a81c, type: 3} 7 | m_CopyBufferShader: {fileID: 7200000, guid: 23c51f21a3503f6428b527b01f8a2f4e, type: 3} 8 | m_SortShader: {fileID: 7200000, guid: ea257ca3cfb12a642a5025e612af6b2a, type: 3} 9 | m_StripUpdateShader: {fileID: 7200000, guid: 8fa6c4009fe2a4d4486c62736fc30ad8, type: 3} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | m_MaxScrubTime: 30 14 | m_CompiledVersion: 7 15 | m_RuntimeVersion: 35 16 | m_RuntimeResources: {fileID: 11400000, guid: bc10b42afe3813544bffd38ae2cd893d, type: 2} 17 | m_BatchEmptyLifetime: 300 18 | -------------------------------------------------------------------------------- /projects/GaussianExample-HDRP/ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/GSTestScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36934c1e75cb24745a91b0a1124a3179 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/Settings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dfe9b0c8a75674963ab98a9d2afc7997 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/Settings/Medium_PipelineAsset.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: Medium_PipelineAsset 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 11 16 | k_AssetPreviousVersion: 11 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: 47753896ca03f4790bd961c848b77283, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 1 27 | m_HDRColorBufferPrecision: 0 28 | m_MSAA: 1 29 | m_RenderScale: 1 30 | m_UpscalingFilter: 0 31 | m_FsrOverrideSharpness: 0 32 | m_FsrSharpness: 0.92 33 | m_EnableLODCrossFade: 1 34 | m_LODCrossFadeDitheringType: 1 35 | m_ShEvalMode: 0 36 | m_MainLightRenderingMode: 1 37 | m_MainLightShadowsSupported: 1 38 | m_MainLightShadowmapResolution: 1024 39 | m_AdditionalLightsRenderingMode: 1 40 | m_AdditionalLightsPerObjectLimit: 1 41 | m_AdditionalLightShadowsSupported: 1 42 | m_AdditionalLightsShadowmapResolution: 1024 43 | m_AdditionalLightsShadowResolutionTierLow: 256 44 | m_AdditionalLightsShadowResolutionTierMedium: 512 45 | m_AdditionalLightsShadowResolutionTierHigh: 1024 46 | m_ReflectionProbeBlending: 1 47 | m_ReflectionProbeBoxProjection: 1 48 | m_ShadowDistance: 20 49 | m_ShadowCascadeCount: 1 50 | m_Cascade2Split: 0.33333334 51 | m_Cascade3Split: {x: 0.1, y: 0.3} 52 | m_Cascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 53 | m_CascadeBorder: 0.2 54 | m_ShadowDepthBias: 1 55 | m_ShadowNormalBias: 1 56 | m_AnyShadowsSupported: 1 57 | m_SoftShadowsSupported: 0 58 | m_ConservativeEnclosingSphere: 0 59 | m_NumIterationsEnclosingSphere: 64 60 | m_SoftShadowQuality: 2 61 | m_AdditionalLightsCookieResolution: 2048 62 | m_AdditionalLightsCookieFormat: 3 63 | m_UseSRPBatcher: 1 64 | m_SupportsDynamicBatching: 0 65 | m_MixedLightingSupported: 1 66 | m_SupportsLightCookies: 1 67 | m_SupportsLightLayers: 0 68 | m_DebugLevel: 0 69 | m_StoreActionsOptimization: 0 70 | m_EnableRenderGraph: 0 71 | m_UseAdaptivePerformance: 1 72 | m_ColorGradingMode: 0 73 | m_ColorGradingLutSize: 32 74 | m_UseFastSRGBLinearConversion: 0 75 | m_SupportDataDrivenLensFlare: 1 76 | m_ShadowType: 1 77 | m_LocalShadowsSupported: 0 78 | m_LocalShadowsAtlasResolution: 256 79 | m_MaxPixelLights: 0 80 | m_ShadowAtlasResolution: 256 81 | m_VolumeFrameworkUpdateMode: 0 82 | m_Textures: 83 | blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3} 84 | bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3} 85 | m_PrefilteringModeMainLightShadows: 1 86 | m_PrefilteringModeAdditionalLight: 4 87 | m_PrefilteringModeAdditionalLightShadows: 1 88 | m_PrefilterXRKeywords: 0 89 | m_PrefilteringModeForwardPlus: 1 90 | m_PrefilteringModeDeferredRendering: 1 91 | m_PrefilteringModeScreenSpaceOcclusion: 1 92 | m_PrefilterDebugKeywords: 0 93 | m_PrefilterWriteRenderingLayers: 0 94 | m_PrefilterHDROutput: 0 95 | m_PrefilterSSAODepthNormals: 0 96 | m_PrefilterSSAOSourceDepthLow: 0 97 | m_PrefilterSSAOSourceDepthMedium: 0 98 | m_PrefilterSSAOSourceDepthHigh: 0 99 | m_PrefilterSSAOInterleaved: 0 100 | m_PrefilterSSAOBlueNoise: 0 101 | m_PrefilterSSAOSampleCountLow: 0 102 | m_PrefilterSSAOSampleCountMedium: 0 103 | m_PrefilterSSAOSampleCountHigh: 0 104 | m_PrefilterDBufferMRT1: 0 105 | m_PrefilterDBufferMRT2: 0 106 | m_PrefilterDBufferMRT3: 0 107 | m_PrefilterScreenCoord: 0 108 | m_PrefilterNativeRenderPass: 0 109 | m_ShaderVariantLogLevel: 0 110 | m_ShadowCascades: 0 111 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/Settings/Medium_PipelineAsset.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 585e84b70632b4a9d89c8f213dc9b468 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/Settings/Medium_PipelineAsset_ForwardRenderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-6851802070553482712 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 01052c1a4da12064d8681d7c1800f94a, type: 3} 13 | m_Name: GaussianSplatURPFeature 14 | m_EditorClassIdentifier: 15 | m_Active: 1 16 | --- !u!114 &11400000 17 | MonoBehaviour: 18 | m_ObjectHideFlags: 0 19 | m_CorrespondingSourceObject: {fileID: 0} 20 | m_PrefabInstance: {fileID: 0} 21 | m_PrefabAsset: {fileID: 0} 22 | m_GameObject: {fileID: 0} 23 | m_Enabled: 1 24 | m_EditorHideFlags: 0 25 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 26 | m_Name: Medium_PipelineAsset_ForwardRenderer 27 | m_EditorClassIdentifier: 28 | debugShaders: 29 | debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} 30 | hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} 31 | m_RendererFeatures: 32 | - {fileID: -6851802070553482712} 33 | m_RendererFeatureMap: 28aa5fb95182e9a0 34 | m_UseNativeRenderPass: 0 35 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 36 | xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2} 37 | shaders: 38 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 39 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 40 | screenSpaceShadowPS: {fileID: 0} 41 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 42 | stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3} 43 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 44 | fallbackLoadingPS: {fileID: 4800000, guid: 7f888aff2ac86494babad1c2c5daeee2, type: 3} 45 | materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3} 46 | coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3} 47 | coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3} 48 | blitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3} 49 | cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf, type: 3} 50 | objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486, type: 3} 51 | dataDrivenLensFlare: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3} 52 | m_AssetVersion: 2 53 | m_OpaqueLayerMask: 54 | serializedVersion: 2 55 | m_Bits: 4294967295 56 | m_TransparentLayerMask: 57 | serializedVersion: 2 58 | m_Bits: 4294967295 59 | m_DefaultStencilState: 60 | overrideStencilState: 0 61 | stencilReference: 0 62 | stencilCompareFunction: 8 63 | passOperation: 2 64 | failOperation: 0 65 | zFailOperation: 0 66 | m_ShadowTransparentReceive: 1 67 | m_RenderingMode: 0 68 | m_DepthPrimingMode: 0 69 | m_CopyDepthMode: 1 70 | m_AccurateGbufferNormals: 0 71 | m_IntermediateTextureMode: 1 72 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/Settings/Medium_PipelineAsset_ForwardRenderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47753896ca03f4790bd961c848b77283 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/UniversalRenderPipelineGlobalSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 2ec995e51a6e251468d2a3fd8a686257, type: 3} 13 | m_Name: UniversalRenderPipelineGlobalSettings 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 3 16 | m_RenderingLayerNames: 17 | - Default 18 | m_ValidRenderingLayers: 1 19 | lightLayerName0: 20 | lightLayerName1: 21 | lightLayerName2: 22 | lightLayerName3: 23 | lightLayerName4: 24 | lightLayerName5: 25 | lightLayerName6: 26 | lightLayerName7: 27 | m_StripDebugVariants: 1 28 | m_StripUnusedPostProcessingVariants: 0 29 | m_StripUnusedVariants: 1 30 | m_StripUnusedLODCrossFadeVariants: 1 31 | m_StripScreenCoordOverrideVariants: 1 32 | supportRuntimeDebugDisplay: 0 33 | m_ShaderVariantLogLevel: 0 34 | m_ExportShaderVariants: 1 35 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Assets/UniversalRenderPipelineGlobalSettings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a4013acd965b43a18804b89750c0297 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ide.rider": "3.0.24", 4 | "com.unity.render-pipelines.universal": "14.0.8", 5 | "org.nesnausk.gaussian-splatting": "file:../../../package", 6 | "com.unity.modules.ai": "1.0.0", 7 | "com.unity.modules.androidjni": "1.0.0", 8 | "com.unity.modules.animation": "1.0.0", 9 | "com.unity.modules.assetbundle": "1.0.0", 10 | "com.unity.modules.audio": "1.0.0", 11 | "com.unity.modules.cloth": "1.0.0", 12 | "com.unity.modules.director": "1.0.0", 13 | "com.unity.modules.imageconversion": "1.0.0", 14 | "com.unity.modules.imgui": "1.0.0", 15 | "com.unity.modules.jsonserialize": "1.0.0", 16 | "com.unity.modules.particlesystem": "1.0.0", 17 | "com.unity.modules.physics": "1.0.0", 18 | "com.unity.modules.physics2d": "1.0.0", 19 | "com.unity.modules.screencapture": "1.0.0", 20 | "com.unity.modules.terrain": "1.0.0", 21 | "com.unity.modules.terrainphysics": "1.0.0", 22 | "com.unity.modules.tilemap": "1.0.0", 23 | "com.unity.modules.ui": "1.0.0", 24 | "com.unity.modules.uielements": "1.0.0", 25 | "com.unity.modules.umbra": "1.0.0", 26 | "com.unity.modules.unityanalytics": "1.0.0", 27 | "com.unity.modules.unitywebrequest": "1.0.0", 28 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 29 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 30 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 31 | "com.unity.modules.unitywebrequestwww": "1.0.0", 32 | "com.unity.modules.vehicles": "1.0.0", 33 | "com.unity.modules.video": "1.0.0", 34 | "com.unity.modules.vr": "1.0.0", 35 | "com.unity.modules.wind": "1.0.0", 36 | "com.unity.modules.xr": "1.0.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_EnableOutputSuspension: 1 16 | m_SpatializerPlugin: 17 | m_AmbisonicDecoderPlugin: 18 | m_DisableAudio: 0 19 | m_VirtualizeEffects: 1 20 | m_RequestedDSPBufferSize: 0 21 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/BurstAotSettings_StandaloneOSX.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "DebugDataKind": 1, 9 | "EnableArmv9SecurityFeatures": false, 10 | "CpuMinTargetX32": 0, 11 | "CpuMaxTargetX32": 0, 12 | "CpuMinTargetX64": 0, 13 | "CpuMaxTargetX64": 0, 14 | "CpuTargetsX64": 72, 15 | "OptimizeFor": 0 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/BurstAotSettings_StandaloneWindows.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "DebugDataKind": 1, 9 | "EnableArmv9SecurityFeatures": false, 10 | "CpuMinTargetX32": 0, 11 | "CpuMaxTargetX32": 0, 12 | "CpuMinTargetX64": 0, 13 | "CpuMaxTargetX64": 0, 14 | "CpuTargetsX32": 6, 15 | "CpuTargetsX64": 72, 16 | "OptimizeFor": 0 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/CommonBurstAotSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "DisabledWarnings": "" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 14 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_DefaultMaxDepenetrationVelocity: 10 11 | m_SleepThreshold: 0.005 12 | m_DefaultContactOffset: 0.01 13 | m_DefaultSolverIterations: 6 14 | m_DefaultSolverVelocityIterations: 1 15 | m_QueriesHitBackfaces: 0 16 | m_QueriesHitTriggers: 1 17 | m_EnableAdaptiveForce: 0 18 | m_ClothInterCollisionDistance: 0.1 19 | m_ClothInterCollisionStiffness: 0.2 20 | m_ContactsGeneration: 1 21 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 22 | m_SimulationMode: 0 23 | m_AutoSyncTransforms: 0 24 | m_ReuseCollisionCallbacks: 0 25 | m_InvokeCollisionCallbacks: 1 26 | m_ClothInterCollisionSettingsToggle: 0 27 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 28 | m_ContactPairsMode: 0 29 | m_BroadphaseType: 0 30 | m_WorldBounds: 31 | m_Center: {x: 0, y: 0, z: 0} 32 | m_Extent: {x: 250, y: 250, z: 250} 33 | m_WorldSubdivisions: 8 34 | m_FrictionType: 0 35 | m_EnableEnhancedDeterminism: 0 36 | m_EnableUnifiedHeightmaps: 1 37 | m_ImprovedPatchFriction: 0 38 | m_SolverType: 0 39 | m_DefaultMaxAngularSpeed: 50 40 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 1 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerCacheSize: 10 14 | m_SpritePackerPaddingPower: 1 15 | m_Bc7TextureCompressor: 0 16 | m_EtcTextureCompressorBehavior: 1 17 | m_EtcTextureFastCompressor: 1 18 | m_EtcTextureNormalCompressor: 2 19 | m_EtcTextureBestCompressor: 4 20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h 21 | m_ProjectGenerationRootNamespace: 22 | m_EnableTextureStreamingInEditMode: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | m_EnableEditorAsyncCPUTextureLoading: 0 25 | m_AsyncShaderCompilation: 1 26 | m_PrefabModeAllowAutoSave: 1 27 | m_EnterPlayModeOptionsEnabled: 1 28 | m_EnterPlayModeOptions: 3 29 | m_GameObjectNamingDigits: 1 30 | m_GameObjectNamingScheme: 0 31 | m_AssetNamingUsesSpace: 1 32 | m_InspectorUseIMGUIDefaultInspector: 0 33 | m_UseLegacyProbeSampleCount: 0 34 | m_SerializeInlineMappingsOnOneLine: 1 35 | m_DisableCookiesInLightmapper: 0 36 | m_AssetPipelineMode: 1 37 | m_RefreshImportMode: 0 38 | m_CacheServerMode: 0 39 | m_CacheServerEndpoint: 40 | m_CacheServerNamespacePrefix: default 41 | m_CacheServerEnableDownload: 1 42 | m_CacheServerEnableUpload: 1 43 | m_CacheServerEnableAuth: 0 44 | m_CacheServerEnableTls: 0 45 | m_CacheServerValidationMode: 2 46 | m_CacheServerDownloadBatchSize: 128 47 | m_EnableEnlightenBakedGI: 0 48 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_DepthNormals: 17 | m_Mode: 1 18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 19 | m_MotionVectors: 20 | m_Mode: 1 21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 22 | m_LightHalo: 23 | m_Mode: 1 24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LensFlare: 26 | m_Mode: 1 27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 28 | m_VideoShadersIncludeMode: 2 29 | m_AlwaysIncludedShaders: 30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 37 | m_PreloadedShaders: [] 38 | m_PreloadShadersBatchTimeLimit: -1 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 40 | m_CustomRenderPipeline: {fileID: 11400000, guid: 585e84b70632b4a9d89c8f213dc9b468, type: 2} 41 | m_TransparencySortMode: 0 42 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 43 | m_DefaultRenderingPath: 1 44 | m_DefaultMobileRenderingPath: 1 45 | m_TierSettings: [] 46 | m_LightmapStripping: 0 47 | m_FogStripping: 0 48 | m_InstancingStripping: 0 49 | m_BrgStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 1 61 | m_LightsUseColorTemperature: 1 62 | m_DefaultRenderingLayerMask: 1 63 | m_LogWhenShaderIsCompiled: 0 64 | m_SRPDefaultSettings: 65 | UnityEngine.Rendering.Universal.UniversalRenderPipeline: {fileID: 11400000, guid: 4a4013acd965b43a18804b89750c0297, type: 2} 66 | m_LightProbeOutsideHullStrategy: 1 67 | m_CameraRelativeLightCulling: 0 68 | m_CameraRelativeShadowCulling: 0 69 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 3 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | buildHeightMesh: 0 88 | maxJobWorkers: 0 89 | preserveTilesOutsideBounds: 0 90 | debug: 91 | m_Flags: 0 92 | m_SettingNames: 93 | - Humanoid 94 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_AdvancedSettingsExpanded: 1 17 | m_ScopedRegistriesSettingsExpanded: 1 18 | m_SeeAllPackageVersions: 0 19 | m_DismissPreviewPackagesInUse: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_ConfigSource: 0 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_Modified: 0 33 | m_ErrorMessage: 34 | m_UserModificationsInstanceId: -890 35 | m_OriginalInstanceId: -892 36 | m_LoadAssets: 0 37 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 6 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_SimulationMode: 0 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_GizmoOptions: 10 48 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 49 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.3.8f1 2 | m_EditorVersionWithRevision: 2022.3.8f1 (b5eafc012955) 3 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 0 8 | m_QualitySettings: 9 | - serializedVersion: 3 10 | name: Medium 11 | pixelLightCount: 1 12 | shadows: 1 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 20 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 2 22 | globalTextureMipmapLimit: 0 23 | textureMipmapLimitSettings: [] 24 | anisotropicTextures: 1 25 | antiAliasing: 0 26 | softParticles: 0 27 | softVegetation: 0 28 | realtimeReflectionProbes: 0 29 | billboardsFaceCameraPosition: 0 30 | useLegacyDetailDistribution: 0 31 | vSyncCount: 0 32 | realtimeGICPUUsage: 25 33 | lodBias: 0.7 34 | maximumLODLevel: 0 35 | enableLODCrossFade: 1 36 | streamingMipmapsActive: 0 37 | streamingMipmapsAddAllCameras: 1 38 | streamingMipmapsMemoryBudget: 512 39 | streamingMipmapsRenderersPerFrame: 512 40 | streamingMipmapsMaxLevelReduction: 2 41 | streamingMipmapsMaxFileIORequests: 1024 42 | particleRaycastBudget: 64 43 | asyncUploadTimeSlice: 2 44 | asyncUploadBufferSize: 16 45 | asyncUploadPersistentBuffer: 1 46 | resolutionScalingFixedDPIFactor: 1 47 | customRenderPipeline: {fileID: 11400000, guid: 585e84b70632b4a9d89c8f213dc9b468, type: 2} 48 | terrainQualityOverrides: 0 49 | terrainPixelError: 1 50 | terrainDetailDensityScale: 1 51 | terrainBasemapDistance: 1000 52 | terrainDetailDistance: 80 53 | terrainTreeDistance: 5000 54 | terrainBillboardStart: 50 55 | terrainFadeLength: 5 56 | terrainMaxTrees: 50 57 | excludedTargetPlatforms: [] 58 | m_TextureMipmapLimitGroupNames: [] 59 | m_PerPlatformDefaultQuality: 60 | Android: 0 61 | Bratwurst: 0 62 | EmbeddedLinux: 0 63 | GameCoreScarlett: 0 64 | GameCoreXboxOne: 0 65 | LinuxHeadlessSimulation: 0 66 | Nintendo Switch: 0 67 | PS4: 0 68 | PS5: 0 69 | QNX: 0 70 | Server: 0 71 | Stadia: 0 72 | Standalone: 0 73 | WebGL: 0 74 | Windows Store Apps: 0 75 | XboxOne: 0 76 | iPhone: 0 77 | tvOS: 0 78 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "defaultInstantiationMode": 0 8 | }, 9 | { 10 | "userAdded": false, 11 | "type": "UnityEditor.Animations.AnimatorController", 12 | "defaultInstantiationMode": 0 13 | }, 14 | { 15 | "userAdded": false, 16 | "type": "UnityEngine.AnimatorOverrideController", 17 | "defaultInstantiationMode": 0 18 | }, 19 | { 20 | "userAdded": false, 21 | "type": "UnityEditor.Audio.AudioMixerController", 22 | "defaultInstantiationMode": 0 23 | }, 24 | { 25 | "userAdded": false, 26 | "type": "UnityEngine.ComputeShader", 27 | "defaultInstantiationMode": 1 28 | }, 29 | { 30 | "userAdded": false, 31 | "type": "UnityEngine.Cubemap", 32 | "defaultInstantiationMode": 0 33 | }, 34 | { 35 | "userAdded": false, 36 | "type": "UnityEngine.GameObject", 37 | "defaultInstantiationMode": 0 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEditor.LightingDataAsset", 42 | "defaultInstantiationMode": 0 43 | }, 44 | { 45 | "userAdded": false, 46 | "type": "UnityEngine.LightingSettings", 47 | "defaultInstantiationMode": 0 48 | }, 49 | { 50 | "userAdded": false, 51 | "type": "UnityEngine.Material", 52 | "defaultInstantiationMode": 0 53 | }, 54 | { 55 | "userAdded": false, 56 | "type": "UnityEditor.MonoScript", 57 | "defaultInstantiationMode": 1 58 | }, 59 | { 60 | "userAdded": false, 61 | "type": "UnityEngine.PhysicMaterial", 62 | "defaultInstantiationMode": 0 63 | }, 64 | { 65 | "userAdded": false, 66 | "type": "UnityEngine.PhysicsMaterial2D", 67 | "defaultInstantiationMode": 0 68 | }, 69 | { 70 | "userAdded": false, 71 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 72 | "defaultInstantiationMode": 0 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 77 | "defaultInstantiationMode": 0 78 | }, 79 | { 80 | "userAdded": false, 81 | "type": "UnityEngine.Rendering.VolumeProfile", 82 | "defaultInstantiationMode": 0 83 | }, 84 | { 85 | "userAdded": false, 86 | "type": "UnityEditor.SceneAsset", 87 | "defaultInstantiationMode": 1 88 | }, 89 | { 90 | "userAdded": false, 91 | "type": "UnityEngine.Shader", 92 | "defaultInstantiationMode": 1 93 | }, 94 | { 95 | "userAdded": false, 96 | "type": "UnityEngine.ShaderVariantCollection", 97 | "defaultInstantiationMode": 1 98 | }, 99 | { 100 | "userAdded": false, 101 | "type": "UnityEngine.Texture", 102 | "defaultInstantiationMode": 0 103 | }, 104 | { 105 | "userAdded": false, 106 | "type": "UnityEngine.Texture2D", 107 | "defaultInstantiationMode": 0 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Timeline.TimelineAsset", 112 | "defaultInstantiationMode": 0 113 | } 114 | ], 115 | "defaultDependencyTypeInfo": { 116 | "userAdded": false, 117 | "type": "", 118 | "defaultInstantiationMode": 1 119 | }, 120 | "newSceneOverride": 0 121 | } -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/ShaderGraphSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 53 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de02f9e1d18f588468e474319d09a723, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | customInterpolatorErrorThreshold: 32 16 | customInterpolatorWarningThreshold: 16 17 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/URPProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_LastMaterialVersion: 7 16 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | m_PackageRequiringCoreStatsPresent: 0 27 | UnityAdsSettings: 28 | m_Enabled: 0 29 | m_InitializeOnStartup: 1 30 | m_TestMode: 0 31 | m_IosGameId: 32 | m_AndroidGameId: 33 | m_GameIds: {} 34 | m_GameId: 35 | PerformanceReportingSettings: 36 | m_Enabled: 0 37 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | m_MaxScrubTime: 30 14 | m_CompiledVersion: 0 15 | m_RuntimeVersion: 0 16 | m_RuntimeResources: {fileID: 0} 17 | m_BatchEmptyLifetime: 300 18 | -------------------------------------------------------------------------------- /projects/GaussianExample-URP/ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /projects/GaussianExample/Assets/GSTestScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca13622d0f7f243a3a3020f3b8b0650f 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /projects/GaussianExample/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "org.nesnausk.gaussian-splatting": "file:../../../package", 4 | "com.unity.ide.rider": "3.0.24", 5 | "com.unity.modules.ai": "1.0.0", 6 | "com.unity.modules.androidjni": "1.0.0", 7 | "com.unity.modules.animation": "1.0.0", 8 | "com.unity.modules.assetbundle": "1.0.0", 9 | "com.unity.modules.audio": "1.0.0", 10 | "com.unity.modules.cloth": "1.0.0", 11 | "com.unity.modules.director": "1.0.0", 12 | "com.unity.modules.imageconversion": "1.0.0", 13 | "com.unity.modules.imgui": "1.0.0", 14 | "com.unity.modules.jsonserialize": "1.0.0", 15 | "com.unity.modules.particlesystem": "1.0.0", 16 | "com.unity.modules.physics": "1.0.0", 17 | "com.unity.modules.physics2d": "1.0.0", 18 | "com.unity.modules.screencapture": "1.0.0", 19 | "com.unity.modules.terrain": "1.0.0", 20 | "com.unity.modules.terrainphysics": "1.0.0", 21 | "com.unity.modules.tilemap": "1.0.0", 22 | "com.unity.modules.ui": "1.0.0", 23 | "com.unity.modules.uielements": "1.0.0", 24 | "com.unity.modules.umbra": "1.0.0", 25 | "com.unity.modules.unityanalytics": "1.0.0", 26 | "com.unity.modules.unitywebrequest": "1.0.0", 27 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 28 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 29 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 30 | "com.unity.modules.unitywebrequestwww": "1.0.0", 31 | "com.unity.modules.vehicles": "1.0.0", 32 | "com.unity.modules.video": "1.0.0", 33 | "com.unity.modules.vr": "1.0.0", 34 | "com.unity.modules.wind": "1.0.0", 35 | "com.unity.modules.xr": "1.0.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_EnableOutputSuspension: 1 16 | m_SpatializerPlugin: 17 | m_AmbisonicDecoderPlugin: 18 | m_DisableAudio: 0 19 | m_VirtualizeEffects: 1 20 | m_RequestedDSPBufferSize: 0 21 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/BurstAotSettings_StandaloneOSX.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "DebugDataKind": 1, 9 | "EnableArmv9SecurityFeatures": false, 10 | "CpuMinTargetX32": 0, 11 | "CpuMaxTargetX32": 0, 12 | "CpuMinTargetX64": 0, 13 | "CpuMaxTargetX64": 0, 14 | "CpuTargetsX64": 72, 15 | "OptimizeFor": 0 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/BurstAotSettings_StandaloneWindows.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "EnableDebugInAllBuilds": false, 8 | "DebugDataKind": 1, 9 | "EnableArmv9SecurityFeatures": false, 10 | "CpuMinTargetX32": 0, 11 | "CpuMaxTargetX32": 0, 12 | "CpuMinTargetX64": 0, 13 | "CpuMaxTargetX64": 0, 14 | "CpuTargetsX32": 6, 15 | "CpuTargetsX64": 72, 16 | "OptimizeFor": 0 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/CommonBurstAotSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 4, 4 | "DisabledWarnings": "" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 14 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_DefaultMaxDepenetrationVelocity: 10 11 | m_SleepThreshold: 0.005 12 | m_DefaultContactOffset: 0.01 13 | m_DefaultSolverIterations: 6 14 | m_DefaultSolverVelocityIterations: 1 15 | m_QueriesHitBackfaces: 0 16 | m_QueriesHitTriggers: 1 17 | m_EnableAdaptiveForce: 0 18 | m_ClothInterCollisionDistance: 0.1 19 | m_ClothInterCollisionStiffness: 0.2 20 | m_ContactsGeneration: 1 21 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 22 | m_SimulationMode: 0 23 | m_AutoSyncTransforms: 0 24 | m_ReuseCollisionCallbacks: 0 25 | m_InvokeCollisionCallbacks: 1 26 | m_ClothInterCollisionSettingsToggle: 0 27 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 28 | m_ContactPairsMode: 0 29 | m_BroadphaseType: 0 30 | m_WorldBounds: 31 | m_Center: {x: 0, y: 0, z: 0} 32 | m_Extent: {x: 250, y: 250, z: 250} 33 | m_WorldSubdivisions: 8 34 | m_FrictionType: 0 35 | m_EnableEnhancedDeterminism: 0 36 | m_EnableUnifiedHeightmaps: 1 37 | m_ImprovedPatchFriction: 0 38 | m_SolverType: 0 39 | m_DefaultMaxAngularSpeed: 50 40 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 1 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerCacheSize: 10 14 | m_SpritePackerPaddingPower: 1 15 | m_Bc7TextureCompressor: 0 16 | m_EtcTextureCompressorBehavior: 1 17 | m_EtcTextureFastCompressor: 1 18 | m_EtcTextureNormalCompressor: 2 19 | m_EtcTextureBestCompressor: 4 20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h 21 | m_ProjectGenerationRootNamespace: 22 | m_EnableTextureStreamingInEditMode: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | m_EnableEditorAsyncCPUTextureLoading: 0 25 | m_AsyncShaderCompilation: 1 26 | m_PrefabModeAllowAutoSave: 1 27 | m_EnterPlayModeOptionsEnabled: 1 28 | m_EnterPlayModeOptions: 3 29 | m_GameObjectNamingDigits: 1 30 | m_GameObjectNamingScheme: 0 31 | m_AssetNamingUsesSpace: 1 32 | m_InspectorUseIMGUIDefaultInspector: 0 33 | m_UseLegacyProbeSampleCount: 0 34 | m_SerializeInlineMappingsOnOneLine: 1 35 | m_DisableCookiesInLightmapper: 0 36 | m_AssetPipelineMode: 1 37 | m_RefreshImportMode: 0 38 | m_CacheServerMode: 0 39 | m_CacheServerEndpoint: 40 | m_CacheServerNamespacePrefix: default 41 | m_CacheServerEnableDownload: 1 42 | m_CacheServerEnableUpload: 1 43 | m_CacheServerEnableAuth: 0 44 | m_CacheServerEnableTls: 0 45 | m_CacheServerValidationMode: 2 46 | m_CacheServerDownloadBatchSize: 128 47 | m_EnableEnlightenBakedGI: 0 48 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_DepthNormals: 17 | m_Mode: 1 18 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 19 | m_MotionVectors: 20 | m_Mode: 1 21 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 22 | m_LightHalo: 23 | m_Mode: 1 24 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LensFlare: 26 | m_Mode: 1 27 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 28 | m_VideoShadersIncludeMode: 2 29 | m_AlwaysIncludedShaders: 30 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 31 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 32 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 37 | m_PreloadedShaders: [] 38 | m_PreloadShadersBatchTimeLimit: -1 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 40 | m_CustomRenderPipeline: {fileID: 0} 41 | m_TransparencySortMode: 0 42 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 43 | m_DefaultRenderingPath: 1 44 | m_DefaultMobileRenderingPath: 1 45 | m_TierSettings: [] 46 | m_LightmapStripping: 0 47 | m_FogStripping: 0 48 | m_InstancingStripping: 0 49 | m_BrgStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_DefaultRenderingLayerMask: 1 63 | m_LogWhenShaderIsCompiled: 0 64 | m_SRPDefaultSettings: {} 65 | m_LightProbeOutsideHullStrategy: 1 66 | m_CameraRelativeLightCulling: 0 67 | m_CameraRelativeShadowCulling: 0 68 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | m_UsePhysicalKeys: 1 297 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 3 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | buildHeightMesh: 0 88 | maxJobWorkers: 0 89 | preserveTilesOutsideBounds: 0 90 | debug: 91 | m_Flags: 0 92 | m_SettingNames: 93 | - Humanoid 94 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_AdvancedSettingsExpanded: 1 17 | m_ScopedRegistriesSettingsExpanded: 1 18 | m_SeeAllPackageVersions: 0 19 | m_DismissPreviewPackagesInUse: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_ConfigSource: 0 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_Modified: 0 33 | m_ErrorMessage: 34 | m_UserModificationsInstanceId: -890 35 | m_OriginalInstanceId: -892 36 | m_LoadAssets: 0 37 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 6 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_SimulationMode: 0 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_GizmoOptions: 10 48 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 49 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.3.7f1 2 | m_EditorVersionWithRevision: 2022.3.7f1 (b16b3b16c7a0) 3 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 0 8 | m_QualitySettings: 9 | - serializedVersion: 3 10 | name: Medium 11 | pixelLightCount: 1 12 | shadows: 1 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 20 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | skinWeights: 2 22 | globalTextureMipmapLimit: 0 23 | textureMipmapLimitSettings: [] 24 | anisotropicTextures: 1 25 | antiAliasing: 0 26 | softParticles: 0 27 | softVegetation: 0 28 | realtimeReflectionProbes: 0 29 | billboardsFaceCameraPosition: 0 30 | useLegacyDetailDistribution: 0 31 | vSyncCount: 0 32 | realtimeGICPUUsage: 25 33 | lodBias: 0.7 34 | maximumLODLevel: 0 35 | enableLODCrossFade: 1 36 | streamingMipmapsActive: 0 37 | streamingMipmapsAddAllCameras: 1 38 | streamingMipmapsMemoryBudget: 512 39 | streamingMipmapsRenderersPerFrame: 512 40 | streamingMipmapsMaxLevelReduction: 2 41 | streamingMipmapsMaxFileIORequests: 1024 42 | particleRaycastBudget: 64 43 | asyncUploadTimeSlice: 2 44 | asyncUploadBufferSize: 16 45 | asyncUploadPersistentBuffer: 1 46 | resolutionScalingFixedDPIFactor: 1 47 | customRenderPipeline: {fileID: 0} 48 | terrainQualityOverrides: 0 49 | terrainPixelError: 1 50 | terrainDetailDensityScale: 1 51 | terrainBasemapDistance: 1000 52 | terrainDetailDistance: 80 53 | terrainTreeDistance: 5000 54 | terrainBillboardStart: 50 55 | terrainFadeLength: 5 56 | terrainMaxTrees: 50 57 | excludedTargetPlatforms: [] 58 | m_TextureMipmapLimitGroupNames: [] 59 | m_PerPlatformDefaultQuality: 60 | Android: 0 61 | Bratwurst: 0 62 | EmbeddedLinux: 0 63 | GameCoreScarlett: 0 64 | GameCoreXboxOne: 0 65 | LinuxHeadlessSimulation: 0 66 | Nintendo Switch: 0 67 | PS4: 0 68 | PS5: 0 69 | QNX: 0 70 | Server: 0 71 | Stadia: 0 72 | Standalone: 0 73 | WebGL: 0 74 | Windows Store Apps: 0 75 | XboxOne: 0 76 | iPhone: 0 77 | tvOS: 0 78 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "defaultInstantiationMode": 0 8 | }, 9 | { 10 | "userAdded": false, 11 | "type": "UnityEditor.Animations.AnimatorController", 12 | "defaultInstantiationMode": 0 13 | }, 14 | { 15 | "userAdded": false, 16 | "type": "UnityEngine.AnimatorOverrideController", 17 | "defaultInstantiationMode": 0 18 | }, 19 | { 20 | "userAdded": false, 21 | "type": "UnityEditor.Audio.AudioMixerController", 22 | "defaultInstantiationMode": 0 23 | }, 24 | { 25 | "userAdded": false, 26 | "type": "UnityEngine.ComputeShader", 27 | "defaultInstantiationMode": 1 28 | }, 29 | { 30 | "userAdded": false, 31 | "type": "UnityEngine.Cubemap", 32 | "defaultInstantiationMode": 0 33 | }, 34 | { 35 | "userAdded": false, 36 | "type": "UnityEngine.GameObject", 37 | "defaultInstantiationMode": 0 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEditor.LightingDataAsset", 42 | "defaultInstantiationMode": 0 43 | }, 44 | { 45 | "userAdded": false, 46 | "type": "UnityEngine.LightingSettings", 47 | "defaultInstantiationMode": 0 48 | }, 49 | { 50 | "userAdded": false, 51 | "type": "UnityEngine.Material", 52 | "defaultInstantiationMode": 0 53 | }, 54 | { 55 | "userAdded": false, 56 | "type": "UnityEditor.MonoScript", 57 | "defaultInstantiationMode": 1 58 | }, 59 | { 60 | "userAdded": false, 61 | "type": "UnityEngine.PhysicMaterial", 62 | "defaultInstantiationMode": 0 63 | }, 64 | { 65 | "userAdded": false, 66 | "type": "UnityEngine.PhysicsMaterial2D", 67 | "defaultInstantiationMode": 0 68 | }, 69 | { 70 | "userAdded": false, 71 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 72 | "defaultInstantiationMode": 0 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 77 | "defaultInstantiationMode": 0 78 | }, 79 | { 80 | "userAdded": false, 81 | "type": "UnityEngine.Rendering.VolumeProfile", 82 | "defaultInstantiationMode": 0 83 | }, 84 | { 85 | "userAdded": false, 86 | "type": "UnityEditor.SceneAsset", 87 | "defaultInstantiationMode": 1 88 | }, 89 | { 90 | "userAdded": false, 91 | "type": "UnityEngine.Shader", 92 | "defaultInstantiationMode": 1 93 | }, 94 | { 95 | "userAdded": false, 96 | "type": "UnityEngine.ShaderVariantCollection", 97 | "defaultInstantiationMode": 1 98 | }, 99 | { 100 | "userAdded": false, 101 | "type": "UnityEngine.Texture", 102 | "defaultInstantiationMode": 0 103 | }, 104 | { 105 | "userAdded": false, 106 | "type": "UnityEngine.Texture2D", 107 | "defaultInstantiationMode": 0 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Timeline.TimelineAsset", 112 | "defaultInstantiationMode": 0 113 | } 114 | ], 115 | "defaultDependencyTypeInfo": { 116 | "userAdded": false, 117 | "type": "", 118 | "defaultInstantiationMode": 1 119 | }, 120 | "newSceneOverride": 0 121 | } -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | m_PackageRequiringCoreStatsPresent: 0 27 | UnityAdsSettings: 28 | m_Enabled: 0 29 | m_InitializeOnStartup: 1 30 | m_TestMode: 0 31 | m_IosGameId: 32 | m_AndroidGameId: 33 | m_GameIds: {} 34 | m_GameId: 35 | PerformanceReportingSettings: 36 | m_Enabled: 0 37 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | m_MaxScrubTime: 30 14 | m_CompiledVersion: 0 15 | m_RuntimeVersion: 0 16 | m_RuntimeResources: {fileID: 0} 17 | m_BatchEmptyLifetime: 300 18 | -------------------------------------------------------------------------------- /projects/GaussianExample/ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Gaussian Splatting playground in Unity 2 | 3 | SIGGRAPH 2023 had a paper "[**3D Gaussian Splatting for Real-Time Radiance Field Rendering**](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/)" by Kerbl, Kopanas, Leimkühler, Drettakis 4 | that is really cool! Check out their website, source code repository, data sets and so on. I've decided to try to implement the realtime visualization part (i.e. the one that takes already-produced 5 | gaussian splat "model" file) in Unity. 6 | 7 | ![Screenshot](/docs/Images/shotOverview.jpg?raw=true "Screenshot") 8 | 9 | Everything in this repository is based on that "OG" gaussian splatting paper. Towards end of 2023, there's a ton of 10 | [new gaussian splatting research](https://github.com/MrNeRF/awesome-3D-gaussian-splatting) coming out; _none_ of that is in this project. 11 | 12 | Status as of 2023 December is that I'm not planning on any significant further developments. 13 | 14 | ## Usage 15 | 16 | :warning: Note: this is all _**a toy**_ that I'm just playing around with. If you file bugs or feature requests, I will most likely just ignore them. I told you so! :warning: 17 | 18 | Download or clone this repository, open `projects/GaussianExample` as a Unity project (I use Unity 2022.3, other versions might also work), 19 | and open `GSTestScene` scene in there. 20 | 21 | Note that the project requires DX12 or Vulkan on Windows, i.e. **DX11 will not work**. This is **not tested at all on mobile/web**, and probably 22 | does not work there. 23 | 24 | 25 | 26 | Next up, **create some GaussianSplat assets**: open `Tools -> Gaussian Splats -> Create GaussianSplatAsset` menu within Unity. 27 | In the dialog, point `Input PLY File` to your Gaussian Splat file (note that it has to be a gaussian splat PLY file, not some 28 | other PLY file. E.g. in the official paper models, the correct files are under `point_cloud/iteration_*/point_cloud.ply`). 29 | Optionally there can be `cameras.json` next to it or somewhere in parent folders. 30 | 31 | Pick desired compression options and output folder, and press "Create Asset" button. The compression even at "very low" quality setting is decently usable, e.g. 32 | this capture at Very Low preset is under 8MB of total size (click to see the video): \ 33 | [![Watch the video](https://img.youtube.com/vi/iccfV0YlWVI/0.jpg)](https://youtu.be/iccfV0YlWVI) 34 | 35 | If everything was fine, there should be a GaussianSplat asset that has several data files next to it. 36 | 37 | Since the gaussian splat models are quite large, I have not included any in this Github repo. The original 38 | [paper github page](https://github.com/graphdeco-inria/gaussian-splatting) has a a link to 39 | [14GB zip](https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/pretrained/models.zip) of their models. 40 | 41 | 42 | In the game object that has a `GaussianSplatRenderer` script, **point the Asset field to** one of your created assets. 43 | There are various controls on the script to debug/visualize the data, as well as a slider to move game camera into one of asset's camera 44 | locations. 45 | 46 | The rendering takes game object transformation matrix into account; the official gaussian splat models seem to be all rotated by about 47 | -160 degrees around X axis, and mirrored around Z axis, so in the sample scene the object has such a transform set up. 48 | 49 | Additional documentation: 50 | 51 | * [Render Pipeline Integration](/docs/render-pipeline-integration.md) 52 | * [Editing Splats](/docs/splat-editing.md) 53 | 54 | _That's it!_ 55 | 56 | 57 | ## Write-ups 58 | 59 | My own blog posts about all this: 60 | * [Gaussian Splatting is pretty cool!](https://aras-p.info/blog/2023/09/05/Gaussian-Splatting-is-pretty-cool/) (2023 Sep 5) 61 | * [Making Gaussian Splats smaller](https://aras-p.info/blog/2023/09/13/Making-Gaussian-Splats-smaller/) (2023 Sep 13) 62 | * [Making Gaussian Splats more smaller](https://aras-p.info/blog/2023/09/27/Making-Gaussian-Splats-more-smaller/) (2023 Sep 27) 63 | * [Gaussian Explosion](https://aras-p.info/blog/2023/12/08/Gaussian-explosion/) (2023 Dec 8) 64 | 65 | ## Performance numbers: 66 | 67 | "bicycle" scene from the paper, with 6.1M splats and first camera in there, rendering at 1200x797 resolution, 68 | at "Medium" asset quality level (282MB asset file): 69 | 70 | * Windows (NVIDIA RTX 3080 Ti): 71 | * Official SBIR viewer: 7.4ms (135FPS). 4.8GB VRAM usage. 72 | * Unity, DX12 or Vulkan: 6.8ms (147FPS) - 4.5ms rendering, 1.1ms sorting, 0.8ms splat view calc. 1.3GB VRAM usage. 73 | * Mac (Apple M1 Max): 74 | * Unity, Metal: 21.5ms (46FPS). 75 | 76 | Besides the gaussian splat asset that is loaded into GPU memory, currently this also needs about 48 bytes of GPU memory 77 | per splat (for sorting, caching view dependent data etc.). 78 | 79 | 80 | ## License and External Code Used 81 | 82 | The code I wrote for this is under MIT license. The project also uses several 3rd party libraries: 83 | 84 | - [zanders3/json](https://github.com/zanders3/json), MIT license, (c) 2018 Alex Parker. 85 | - "DeviceRadixSort" GPU sorting code contributed by Thomas Smith ([#82](https://github.com/aras-p/UnityGaussianSplatting/pull/82)). 86 | 87 | However, keep in mind that the [license of the original paper implementation](https://github.com/graphdeco-inria/gaussian-splatting/blob/main/LICENSE.md) 88 | says that the official _training_ software for the Gaussian Splats is for educational / academic / non-commercial 89 | purpose; commercial usage requires getting license from INRIA. That is: even if this viewer / integration 90 | into Unity is just "MIT license", you need to separately consider *how* did you get your Gaussian Splat PLY files. 91 | --------------------------------------------------------------------------------