diff --git a/package/Runtime/GaussianSplatRenderer.cs b/package/Runtime/GaussianSplatRenderer.cs index 9e080b97..1b17c79e 100644 --- a/package/Runtime/GaussianSplatRenderer.cs +++ b/package/Runtime/GaussianSplatRenderer.cs @@ -81,6 +81,8 @@ public bool GatherSplatsForCamera(Camera cam) var gs = kvp.Key; if (gs == null || !gs.isActiveAndEnabled || !gs.HasValidAsset || !gs.HasValidRenderSetup) continue; + if ((cam.cullingMask & (1 << gs.gameObject.layer)) == 0) + continue; m_ActiveSplats.Add((kvp.Key, kvp.Value)); } if (m_ActiveSplats.Count == 0) @@ -93,12 +95,12 @@ public bool GatherSplatsForCamera(Camera cam) var orderA = a.Item1.m_RenderOrder; var orderB = b.Item1.m_RenderOrder; if (orderA != orderB) - return orderB.CompareTo(orderA); + return orderA.CompareTo(orderB); var trA = a.Item1.transform; var trB = b.Item1.transform; var posA = camTr.InverseTransformPoint(trA.position); var posB = camTr.InverseTransformPoint(trB.position); - return posA.z.CompareTo(posB.z); + return posB.z.CompareTo(posA.z); }); return true; @@ -1083,4 +1085,4 @@ void DispatchUtilsAndExecute(CommandBuffer cmb, KernelIndices kernel, int count) public GraphicsBuffer GpuEditDeleted => m_GpuEditDeleted; } -} \ No newline at end of file +} diff --git a/package/Runtime/GpuSorting.cs b/package/Runtime/GpuSorting.cs index 2d868326..2f046ac3 100644 --- a/package/Runtime/GpuSorting.cs +++ b/package/Runtime/GpuSorting.cs @@ -120,7 +120,7 @@ public GpuSorting(ComputeShader cs) cs.EnableKeyword(m_keyUintKeyword); cs.EnableKeyword(m_payloadUintKeyword); - cs.EnableKeyword(m_ascendKeyword); + cs.DisableKeyword(m_ascendKeyword); cs.EnableKeyword(m_sortPairKeyword); if (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Vulkan) cs.EnableKeyword(m_vulkanKeyword); diff --git a/package/Shaders/GaussianComposite.shader b/package/Shaders/GaussianComposite.shader index 7a953ab7..2423fcf9 100644 --- a/package/Shaders/GaussianComposite.shader +++ b/package/Shaders/GaussianComposite.shader @@ -35,7 +35,10 @@ Texture2D _GaussianSplatRT; half4 frag (v2f i) : SV_Target { half4 col = _GaussianSplatRT.Load(int3(i.vertex.xy, 0)); - return float4(GammaToLinearSpace(col.rgb/col.a),col.a); + if(col.a>0) + return float4(GammaToLinearSpace(col.rgb/col.a),col.a); + else + return float4(GammaToLinearSpace(col.rgb),col.a); } ENDCG } diff --git a/package/Shaders/RenderGaussianSplats.shader b/package/Shaders/RenderGaussianSplats.shader index 540a9f5b..7118c213 100644 --- a/package/Shaders/RenderGaussianSplats.shader +++ b/package/Shaders/RenderGaussianSplats.shader @@ -7,8 +7,8 @@ Shader "Gaussian Splatting/Render Splats" Pass { - ZWrite Off - Blend OneMinusDstAlpha One + ZWrite On + Blend One OneMinusSrcAlpha Cull Off CGPROGRAM diff --git a/package/package.json b/package/package.json index 163afa37..34a8f3be 100644 --- a/package/package.json +++ b/package/package.json @@ -1,13 +1,13 @@ { - "author": "Aras Pranckevicius", + "author": "Aras Pranckevicius (Modified by Cheng-Han Tsai)", "dependencies": { "com.unity.burst": "1.8.8", "com.unity.collections": "2.1.4", "com.unity.mathematics": "1.2.6" }, "description": "3D Gaussian Splatting rendering and tools", - "displayName": "Gaussian Splatting", + "displayName": "Gaussian Splatting Custom", "keywords": [ "unity" ], "license": "MIT", "name": "org.nesnausk.gaussian-splatting", "repository": "github:aras-p/UnityGaussianSplatting", "unity": "2022.3", "unityRelease": "7f1", - "version": "1.1.1" + "version": "1.1.2" }