chore: sync workspace state

This commit is contained in:
2026-03-29 01:36:53 +08:00
parent eb5de3e3d4
commit e5cb79f3ce
4935 changed files with 35593 additions and 360696 deletions

View File

@@ -0,0 +1,71 @@
// SPDX-License-Identifier: MIT
using GaussianSplatting.Runtime;
using Unity.Collections.LowLevel.Unsafe;
using UnityEditor;
using UnityEngine;
namespace GaussianSplatting.Editor
{
[CustomEditor(typeof(GaussianSplatAsset))]
[CanEditMultipleObjects]
public class GaussianSplatAssetEditor : UnityEditor.Editor
{
public override void OnInspectorGUI()
{
var gs = target as GaussianSplatAsset;
if (!gs)
return;
using var _ = new EditorGUI.DisabledScope(true);
if (targets.Length == 1)
SingleAssetGUI(gs);
else
{
int totalCount = 0;
foreach (var tgt in targets)
{
var gss = tgt as GaussianSplatAsset;
if (gss)
{
totalCount += gss.splatCount;
}
}
EditorGUILayout.TextField("Total Splats", $"{totalCount:N0}");
}
}
static void SingleAssetGUI(GaussianSplatAsset gs)
{
var splatCount = gs.splatCount;
EditorGUILayout.TextField("Splats", $"{splatCount:N0}");
var prevBackColor = GUI.backgroundColor;
if (gs.formatVersion != GaussianSplatAsset.kCurrentVersion)
GUI.backgroundColor *= Color.red;
EditorGUILayout.IntField("Version", gs.formatVersion);
GUI.backgroundColor = prevBackColor;
long sizePos = gs.posData != null ? gs.posData.dataSize : 0;
long sizeOther = gs.otherData != null ? gs.otherData.dataSize : 0;
long sizeCol = gs.colorData != null ? gs.colorData.dataSize : 0;
long sizeSH = GaussianSplatAsset.CalcSHDataSize(gs.splatCount, gs.shFormat);
long sizeChunk = gs.chunkData != null ? gs.chunkData.dataSize : 0;
EditorGUILayout.TextField("Memory", EditorUtility.FormatBytes(sizePos + sizeOther + sizeSH + sizeCol + sizeChunk));
EditorGUI.indentLevel++;
EditorGUILayout.TextField("Positions", $"{EditorUtility.FormatBytes(sizePos)} ({gs.posFormat})");
EditorGUILayout.TextField("Other", $"{EditorUtility.FormatBytes(sizeOther)} ({gs.scaleFormat})");
EditorGUILayout.TextField("Base color", $"{EditorUtility.FormatBytes(sizeCol)} ({gs.colorFormat})");
EditorGUILayout.TextField("SHs", $"{EditorUtility.FormatBytes(sizeSH)} ({gs.shFormat})");
EditorGUILayout.TextField("Chunks",
$"{EditorUtility.FormatBytes(sizeChunk)} ({UnsafeUtility.SizeOf<GaussianSplatAsset.ChunkInfo>()} B/chunk)");
EditorGUI.indentLevel--;
EditorGUILayout.Vector3Field("Bounds Min", gs.boundsMin);
EditorGUILayout.Vector3Field("Bounds Max", gs.boundsMax);
EditorGUILayout.TextField("Data Hash", gs.dataHash.ToString());
}
}
}