SuperSplat 3.0 fait entrer les grandes scènes 3D dans le navigateur

PlayCanvas réécrit son éditeur libre de Gaussian splatting avec WebGPU, réduit la mémoire JavaScript et ajoute de nouveaux outils pour les scènes massives.

Une scène de 4,4 millions de Gaussians occupait auparavant plus de 1,5 Go dans la mémoire JavaScript du navigateur une fois chargée. Dans SuperSplat 3.0, PlayCanvas mesure 105 Mo sur le même fichier. La nouvelle version ne se contente pas d’optimiser quelques fonctions : son moteur de rendu et son modèle de données ont été entièrement réécrits autour de WebGPU.

SuperSplat est un éditeur de scènes produites par Gaussian splatting. Cette technique représente un espace capturé à l’aide d’un ensemble de volumes colorés et semi-transparents positionnés en trois dimensions. Leur taille, leur orientation, leur couleur et leur opacité varient pour reconstruire l’apparence d’un lieu ou d’un objet depuis différents points de vue.

Une scène de ce type peut être créée à partir de nombreuses photographies ou d’une vidéo, après une phase de calcul effectuée dans un autre logiciel. SuperSplat intervient ensuite pour l’inspecter, supprimer les éléments indésirables, corriger les couleurs, réduire son poids, organiser plusieurs captures ou préparer sa publication.

L’outil ne génère donc pas lui-même une scène depuis une instruction textuelle. Il ne remplace pas non plus un logiciel de modélisation polygonale. Une capture Gaussian ne contient pas nécessairement des surfaces, des arêtes ou une topologie pouvant être modifiées comme dans Blender. Elle décrit surtout l’apparence de l’espace à partir d’une multitude de primitives orientées.

Cette différence explique les besoins particuliers de l’éditeur. Lorsqu’une scène contient plusieurs millions de Gaussians, chacune possède des informations de position, d’échelle, d’orientation, de couleur et de transparence. Afficher, trier et sélectionner l’ensemble à chaque mouvement de caméra peut rapidement saturer la mémoire ou ralentir le navigateur.

Les versions précédentes de SuperSplat utilisaient WebGL 2 et confiaient une partie du tri au processeur central. Elles conservaient aussi des copies complètes de la scène dans l’environnement JavaScript afin de gérer les modifications. Cette organisation devenait coûteuse lorsque plusieurs captures étaient réunies ou qu’un fichier dépassait plusieurs centaines de mégaoctets.

SuperSplat 3.0 abandonne ce fonctionnement. La projection, l’élimination des éléments hors champ, la compaction, le tri par profondeur et l’envoi des commandes de rendu sont désormais exécutés par la carte graphique à chaque image. Le processus de tri autrefois assuré par le processeur central disparaît.

Les données sont stockées par blocs dans la mémoire graphique. Une liste plus légère conserve seulement l’état nécessaire à l’édition, comme les sélections, les verrouillages, les transformations et les références de couleur. Le navigateur n’a plus besoin de maintenir une seconde représentation complète de la scène dans sa mémoire JavaScript.

Les histogrammes, les sélections par plage, la correspondance des couleurs, le calcul des limites et les tests d’intersection ont également été transférés vers la carte graphique. L’objectif est de conserver des outils réactifs lorsque le nombre d’éléments augmente, pas seulement d’accélérer l’affichage final.

Les mesures publiées par PlayCanvas utilisent une scène de 4,4 millions de Gaussians chargée depuis un fichier PLY de 990 Mo. Au repos, le pic de mémoire JavaScript passe de 1 557 à 105 Mo. L’enregistrement d’un PLY passe de 1 722 à 623 Mo, tandis que la publication descend de 1 934 à 741 Mo.

Le rendu d’une vidéo en 1080p affiche l’écart le plus important après le chargement simple : 1 673 Mo dans SuperSplat 2.x contre 142 Mo dans la version 3.0. L’enregistrement d’un PLY compressé reste plus exigeant, mais passe tout de même de 2 982 à 1 759 Mo.

Ces chiffres ne représentent pas la consommation totale de la machine. PlayCanvas mesure ici le pic du tas JavaScript. Une partie du travail et des données a été déplacée vers la carte graphique, dont l’occupation mémoire n’est pas fournie dans ce tableau. La réduction observée dans le navigateur ne signifie donc pas que chaque opération consomme quinze fois moins de mémoire au total.

La comparaison porte aussi sur un seul fichier et sur les conditions choisies par l’éditeur. Le gain réel dépendra du format, du nombre de Gaussians, de la quantité de mémoire graphique disponible, du navigateur et de la carte utilisée. PlayCanvas ne publie pas encore de campagne de tests couvrant plusieurs configurations grand public.

Le changement reste important pour les scènes qui faisaient auparavant planter l’onglet. Le découpage des données évite de matérialiser plusieurs copies complètes lors d’une modification ou d’un export. Il devient aussi plus réaliste de réunir plusieurs captures dans un même document pour construire un environnement plus vaste.

Les exportations suivent la même logique. Les fichiers sont écrits bloc par bloc avec la bibliothèque `splat-transform`, au lieu de préparer toute la scène en mémoire avant l’enregistrement. Cette méthode concerne les PLY standards ou compressés, SOG, SPZ, les projets `.ssproj` et la publication sur SuperSplat.

Le tri par profondeur reste l’une des opérations les plus coûteuses. Les primitives semi-transparentes doivent normalement être ordonnées par rapport à la caméra avant leur fusion à l’écran. Avec plusieurs dizaines de millions d’éléments, répéter ce classement pendant chaque rotation peut ralentir l’interaction, même lorsque le calcul est effectué par la carte graphique.

Le nouveau mode Stochastic Alpha contourne temporairement cette étape. Pendant le déplacement, les Gaussians sont affichées comme des éléments opaques soumis à un test de profondeur, avec une couverture stochastique. La scène peut alors répondre plus rapidement aux mouvements de caméra sans attendre un tri complet.

Dès que la caméra s’immobilise, SuperSplat rétablit une image triée et fusionnée avec précision. Le mode privilégie donc la fluidité pendant l’interaction, puis la qualité exacte au repos. L’apparence peut être plus instable ou moins propre durant le