-
Aperçu du projet
- Je travaille depuis plusieurs années sur des scènes 3D et des niveaux exécutés dans le navigateur
- Au départ, cela a commencé comme des démos séparées, puis a progressivement évolué vers des projets interconnectés proches de jeux
- Certaines fonctionnalités sont mises en œuvre à l’aide de techniques procédurales et génératives
-
Shaders + textures
- La plupart des textures sont conçues pour être sans jointure, afin qu’aucun motif répétitif n’apparaisse même sur de grandes surfaces
- Des shaders personnalisés ont été créés dans Three.JS pour fournir des fonctionnalités supplémentaires
-
Triplanar Mapping
- Permet d’appliquer des textures à un mesh sans UV map, ce qui est utile pour les terrains générés procéduralement
- Peut être mis en œuvre simplement et appliqué à différents meshes
- La fonction
pow()est utilisée pour ajuster les pondérations, améliorer la qualité et optimiser les performances
-
Hex Tiling
- Algorithme qui masque la répétition des textures sans jointure
- Porté en bibliothèque autonome, facile à intégrer dans des projets Three.JS
- Nécessite une UV map et entraîne un surcoût important en performances
-
Depth Pre-Pass
- La scène est rendue deux fois pour enregistrer la profondeur des pixels et améliorer les performances
- Peut améliorer les performances de plus de 30 % dans les scènes avec beaucoup d’overdraw
-
Synthèse de textures PBR pilotée par l’IA
- Des textures générées par IA sont utilisées pour améliorer la qualité de la scène
- DeepBump et Materialize sont utilisés pour générer des maps PBR
-
Brouillard/nuages volumétriques
- Développement de shaders qui ajoutent des nuages ou du brouillard à la scène
- Utilisation d’un lookup de bruit LoD pour ajouter diverses fonctionnalités
-
Meshes + géométrie
- Étude de techniques pour générer et déformer des meshes à l’exécution
- Principalement pour générer procéduralement des éléments décoratifs ou d’arrière-plan
-
Terrain LoD
- Le terrain est généré à l’aide de fonctions de bruit, avec une résolution ajustée dynamiquement selon la distance à la caméra
-
Pipeline de traitement et de manipulation procédurale des meshes
- Construction d’un pipeline pour subdiviser et déformer procéduralement des meshes low poly
- Le traitement des normales demande beaucoup d’efforts
-
Travaux futurs
- Prévoit d’utiliser la Constructive Solid Geometry (CSG) pour fusionner ou découper des meshes
- Envisage un portage en Rust afin de mieux comprendre ces techniques
Le résumé de GN⁺
- Cet article présente diverses techniques et divers outils utiles au développement procédural de jeux
- Des techniques de texturing comme le Triplanar Mapping et le Hex Tiling permettent d’améliorer à la fois les performances et la qualité
- La génération de textures par IA et les shaders de brouillard/nuages volumétriques renforcent le réalisme de la scène
- Des travaux futurs comme la Constructive Solid Geometry offrent un fort potentiel pour la transformation de meshes
- Parmi les projets aux fonctionnalités similaires, on peut citer ProBuilder de Unity et Houdini
1 commentaires
Commentaire Hacker News
J’ai déjà essayé la génération procédurale par le passé
Une bonne génération de terrain n’est pas simple
C’est un excellent article sur les techniques procédurales sur le web
J’ai eu des expériences mitigées avec l’utilisation d’un depth pre-pass
En tant qu’artiste 3D, j’ai trouvé cet article très intéressant