Aller au contenu
en

La géométrie virtualisée des moteurs de jeu, dans le navigateur

Trillion3D

Trillion3D est un moteur de rendu temps réel pour le web construit par Alban Pasquelin : un compilateur natif en Rust découpe les modèles 3D en grappes de 128 triangles, et un moteur WebGPU en TypeScript, avec repli WebGL2, les diffuse sous un budget mémoire fixe, avec tri par la carte graphique, antialiasing temporel et éclairage dynamique.

import { Rust, TypeScript, WebGPU, WebGL2 } from '@/stack'
export function createWorld(canvas: HTMLCanvasElement): World {

Les meilleurs moteurs de jeu savent afficher des scènes de milliards de triangles : la géométrie est découpée en petites grappes, et à chaque image on ne charge et on ne dessine que ce qui se voit vraiment. Rien de cela n'existait pour le navigateur. Trillion3D le construit pour les contraintes du web — pas de lancer de rayons matériel, une mémoire graphique bornée, une seule image à la fois — à partir de la seule littérature publiée.

const pages = await compiler.prepare(source) /** Rust: 128-triangle clusters, one DAG **/

Le travail est coupé en deux. Un compilateur natif en Rust lit les formats du métier — glTF, FBX, OBJ, USD, Alembic, Blender, Maya, Unity — et les découpe une fois pour toutes en pages compressées. Dans le navigateur, un moteur WebGPU choisit à chaque image le niveau de détail, élimine ce qui est caché, et dessine toute la scène en six commandes au plus.

gpu.cull(frustum, hiZ).drawIndirect({ maxCommands: 6 }).resolve(taa)

Aucun chiffre n'est affirmé sans mesure. Un banc automatisé compare chaque version à la précédente, et au même rendu fait avec Three.js seul, sur les mêmes points de vue et le même budget. Une caméra immobile ne redessine aucune page : c'est mesuré, pas supposé.

bench.compare(before, after, threeJs) /** no claim outlives its measurement **/
return {
trianglesPerCluster: 128, /** triangles par grappe **/
drawCommandsPer: 6, /** commandes de dessin par image, au plus **/
pagesRedrawnWith: 0, /** page redessinée caméra immobile **/
}
}

Projets

Mesure d’audience

Avec votre accord, Google Analytics utilise des cookies pour mesurer les visites et les interactions avec ce site. Les informations saisies dans le formulaire et le terminal ne sont pas transmises à Google. Votre choix est conservé 6 mois et peut être modifié via « Cookies » en bas de page.

Utilisation des données par Google