PlayCanvas v2.17 : Gaussian Splatting en demi-précision sur WebGPU
PlayCanvas Engine v2.17.0 apporte un ensemble ciblé d'améliorations qui font progresser le Gaussian Splatting sur WebGPU. Cette version ajoute les harmoniques sphériques en demi-précision, un pipeline de tri et d'élimination piloté par le GPU, ainsi qu'un budget global de splats pour gérer le niveau de détail à l'échelle de la scène.
Présentation pas à pas de SuperSplat avec Will Eastcott, PDG de PlayCanvas, consacrée à l'édition et à l'optimisation des Gaussian Splats
Harmoniques sphériques f16
La principale nouveauté technique est la prise en charge des harmoniques sphériques en demi-précision (f16) pour le Gaussian Splatting exécuté sur WebGPU. Les harmoniques sphériques encodent les informations de couleur dépendant du point de vue pour chaque splat et comptent parmi les structures de données les plus lourdes d'un pipeline de splatting. Le passage de nombres à virgule flottante 32 bits à 16 bits réduit approximativement de moitié l'utilisation de la mémoire, avec une différence visuelle minime.
Cette fonctionnalité ne fonctionne que sur WebGPU, car WebGL ne prend pas nativement en charge les tampons f16. C'est un autre exemple d'optimisations rendues possibles par WebGPU, alors qu'elles n'étaient pas réalisables auparavant.
Tri et élimination hors du frustum pilotés par le GPU
La v2.17.0 introduit pour les splats sur WebGPU un pipeline de tri et d'élimination hors du frustum piloté par le GPU. Auparavant, le tri des splats s'effectuait sur le CPU, ce qui devenait un goulot d'étranglement dans les scènes contenant des millions de gaussiennes. Le transfert de ces opérations vers des shaders de calcul permet au GPU de gérer à la fois le tri et l'élimination, sans avoir à renvoyer les données vers le CPU.
L'étape d'élimination hors du frustum écarte les splats situés hors du champ de la caméra avant leur tri, ce qui réduit davantage la charge de travail.
Budget global de splats
Un nouveau système de budget global de splats assure la gestion du niveau de détail des Gaussian Splats à l'échelle de la scène. Lorsque votre scène contient plusieurs objets de splats, vous pouvez désormais définir un nombre total de splats pour l'ensemble de la scène. Le moteur répartit automatiquement ce budget entre les objets en fonction de leur distance et de leur couverture à l'écran.
Cette fonctionnalité est pratique pour les applications qui réunissent plusieurs environnements ou objets numérisés dans une même scène, comme les salles d'exposition virtuelles ou les visites architecturales.
Auto-hébergement de modèles de Gaussian Splatting avec la visionneuse PlayCanvas
Color Enhance et mises à jour du rendu
Cette version ajoute un nouvel effet de post-traitement Color Enhance avec réglage des tons moyens, ainsi que des shaders de bloom en demi-précision pour de meilleures performances. Material.meshInstances est passé d'un Array à un Set, ce qui accélère les opérations de suppression d'instances. La prise en charge des faces avant a également été ajoutée au pipeline de rendu.
La v2.16.0 a posé les bases
La version précédente (v2.16.0, publiée le 3 février) a ajouté la prise en charge du Gaussian Splatting 2D (2DGS) et des sous-groupes WGSL. Le 2DGS utilise des disques plats au lieu d'ellipsoïdes 3D, ce qui peut produire des reconstructions de surfaces plus nettes pour les géométries planes telles que les murs et les sols. La prise en charge des sous-groupes WGSL permet d'effectuer des opérations au niveau des fronts d'exécution dans les shaders de calcul, autorisant des réductions parallèles plus rapides sur les GPU compatibles.
Ensemble, les versions v2.16 et v2.17 marquent une avancée importante pour faire de PlayCanvas le moteur de référence du Gaussian Splatting sur le Web.