PlayCanvas v2.17: Gaussian Splatting de precisión media en WebGPU
PlayCanvas Engine v2.17.0 llega con un conjunto específico de mejoras que impulsan Gaussian Splatting en WebGPU. La versión incorpora armónicos esféricos de precisión media, un proceso de ordenación y descarte mediante GPU, y un presupuesto global de splats para gestionar el LOD de toda la escena.
Recorrido por SuperSplat con Will Eastcott, CEO de PlayCanvas, sobre la edición y optimización de Gaussian Splats
Armónicos esféricos f16
La gran incorporación técnica son los armónicos esféricos de precisión media (f16) para Gaussian Splatting cuando se ejecuta en WebGPU. Los armónicos esféricos codifican la información de color dependiente del punto de vista de cada splat y constituyen una de las estructuras de datos más pesadas de un proceso de splatting. El cambio de números de coma flotante de 32 bits a 16 bits reduce el uso de memoria aproximadamente a la mitad, con una diferencia visual mínima.
Esto solo funciona en WebGPU porque WebGL no admite búferes f16 de forma nativa. Es otro ejemplo de cómo WebGPU permite optimizaciones que antes no resultaban prácticas.
Ordenación mediante GPU y descarte de frustum
La versión v2.17.0 introduce un proceso de ordenación mediante GPU y descarte de frustum para splats en WebGPU. Anteriormente, la ordenación de splats se realizaba en la CPU, lo que se convertía en un cuello de botella en escenas con millones de gaussianas. Trasladar esta tarea a shaders de cómputo permite que la GPU se encargue tanto de la ordenación como del descarte sin tener que enviar los datos de vuelta a la CPU.
El paso de descarte de frustum elimina los splats situados fuera de la vista de la cámara antes de ordenarlos, lo que reduce aún más la carga de trabajo.
Presupuesto global de splats
Un nuevo sistema de presupuesto global de splats permite gestionar el LOD de Gaussian Splats en toda la escena. Cuando la escena contiene varios objetos de splats, ahora puedes establecer un número total de splats para toda ella. El motor distribuye automáticamente el presupuesto entre los objetos según su distancia y cobertura en pantalla.
Esto resulta práctico para aplicaciones que combinan varios entornos u objetos escaneados en una sola escena, como salas de exposición virtuales o recorridos arquitectónicos.
Alojamiento propio de modelos de Gaussian Splatting con el visor de PlayCanvas
Color Enhance y novedades de renderizado
La versión incorpora un nuevo efecto de posprocesado Color Enhance con control de medios tonos, además de shaders de bloom de precisión media para mejorar el rendimiento. Material.meshInstances ha pasado de ser un Array a un Set, lo que acelera las operaciones de eliminación de instancias. También se ha añadido compatibilidad con caras frontales al proceso de renderizado.
v2.16.0 sentó las bases
La versión anterior (v2.16.0, del 3 de febrero) incorporó compatibilidad con Gaussian Splatting 2D (2DGS) y con subgrupos de WGSL. 2DGS utiliza discos planos en lugar de elipsoides 3D, lo que puede generar reconstrucciones de superficies más nítidas para geometrías planas como paredes y suelos. La compatibilidad con subgrupos de WGSL permite realizar operaciones a nivel de wave en shaders de cómputo, lo que posibilita reducciones paralelas más rápidas en las GPU compatibles.
En conjunto, v2.16 y v2.17 representan un avance importante para convertir PlayCanvas en el motor de referencia para Gaussian Splatting en la web.