PlayCanvas v2.17: Gaussian Splatting mit halber Präzision auf WebGPU
PlayCanvas Engine v2.17.0 bringt gezielte Verbesserungen, die Gaussian Splatting auf WebGPU voranbringen. Das Release ergänzt Kugelflächenfunktionen mit halber Präzision, eine GPU-gesteuerte Pipeline zum Sortieren und Culling sowie ein globales Splat-Budget zur Verwaltung des LOD in der gesamten Szene.
SuperSplat-Rundgang mit PlayCanvas-CEO Will Eastcott zur Bearbeitung und Optimierung von Gaussian Splats
f16-Kugelflächenfunktionen
Die wichtigste technische Neuerung sind Kugelflächenfunktionen mit halber Präzision (f16) für Gaussian Splatting unter WebGPU. Kugelflächenfunktionen kodieren die blickwinkelabhängigen Farbinformationen jedes Splats und zählen zu den speicherintensivsten Datenstrukturen einer Splatting-Pipeline. Der Wechsel von 32-Bit- zu 16-Bit-Gleitkommazahlen halbiert den Speicherverbrauch ungefähr – bei minimalen visuellen Unterschieden.
Dies funktioniert nur mit WebGPU, da WebGL f16-Puffer nicht nativ unterstützt. Es ist ein weiteres Beispiel dafür, wie WebGPU Optimierungen ermöglicht, die zuvor nicht praktikabel waren.
GPU-gesteuertes Sortieren und Frustum Culling
v2.17.0 führt für Splats auf WebGPU eine GPU-gesteuerte Pipeline zum Sortieren und Frustum Culling ein. Zuvor wurden Splats auf der CPU sortiert, was bei Szenen mit Millionen von Gauß-Verteilungen zum Engpass wurde. Durch die Verlagerung in Compute-Shader übernimmt die GPU sowohl das Sortieren als auch das Culling, ohne Daten zur CPU zurückübertragen zu müssen.
Beim Frustum Culling werden Splats außerhalb des Kamerablickfelds vor dem Sortieren verworfen, was den Arbeitsaufwand weiter reduziert.
Globales Splat-Budget
Ein neues globales Splat-Budget-System ermöglicht die szenenweite LOD-Verwaltung für Gaussian Splats. Wenn deine Szene mehrere Splat-Objekte enthält, kannst du nun eine Gesamtzahl von Splats für die gesamte Szene festlegen. Die Engine verteilt das Budget automatisch anhand von Entfernung und Bildschirmabdeckung auf die Objekte.
Das ist besonders praktisch für Anwendungen, die mehrere gescannte Umgebungen oder Objekte in einer einzigen Szene kombinieren, etwa virtuelle Showrooms oder Architektur-Rundgänge.
Gaussian-Splatting-Modelle mit dem PlayCanvas-Viewer selbst hosten
Color Enhance und Rendering-Aktualisierungen
Das Release ergänzt einen neuen Color-Enhance-Post-Effekt mit Mitteltöner-Regelung sowie Bloom-Shader mit halber Präzision für eine bessere Performance. Material.meshInstances wurde von einem Array zu einem Set geändert, wodurch Instanzen schneller entfernt werden können. Außerdem wurde die Rendering-Pipeline um die Unterstützung für Vorderseiten erweitert.
v2.16.0 legte den Grundstein
Das vorherige Release (v2.16.0 vom 3. Februar) ergänzte die Unterstützung für 2D Gaussian Splatting (2DGS) und WGSL-Untergruppen. 2DGS verwendet flache Scheiben anstelle von 3D-Ellipsoiden und kann dadurch schärfere Oberflächenrekonstruktionen für planare Geometrie wie Wände und Böden erzeugen. Die Unterstützung für WGSL-Untergruppen ermöglicht Operationen auf Wave-Ebene in Compute-Shadern und damit schnellere parallele Reduktionen auf unterstützten GPUs.
Zusammen stellen v2.16 und v2.17 einen bedeutenden Schritt dar, um PlayCanvas zur bevorzugten Engine für webbasiertes Gaussian Splatting zu machen.