├── .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 | 
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 | [](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 |
--------------------------------------------------------------------------------