1 points par GN⁺ 2024-05-25 | Aucun commentaire pour le moment. | Partager sur WhatsApp

Voxel Displacement Renderer — moderniser l’esthétique 3D rétro

Motivation esthétique

  • Les jeux 3D du début et du milieu des années 1990 (Doom, Quake, Duke Nukem) ont eu une influence majeure sur le plan technologique comme sur le gameplay.
  • Aujourd’hui, les limites visuelles de ces jeux sont perçues comme un charme rétro.
  • La géométrie des environnements était simple et très évocatrice, tandis que les textures présentaient des contours de pixels nets.
  • Ce style rappelle l’abstraction stylisée du pixel art 2D.
  • Il est aujourd’hui populaire dans les jeux modernes inspirés du rétro et dans les titres 3D indépendants.

Fonctionnement habituel des voxels

  • Un mesh voxel est une grille tridimensionnelle dans laquelle chaque cellule en forme de cube est soit pleine, soit vide.
  • Les gros voxels sont texturés, tandis que les petits voxels sont unis.
  • Pour créer de grands environnements, on peut soit placer toute la géométrie dans une grille partagée, soit disposer des meshes voxels indépendants dans le même espace.
  • Si l’on décide de construire un monde de jeu en voxels, il faut créer une géométrie voxel, et le rendu comme la logique de gameplay doivent fonctionner à l’échelle du voxel.
  • Il est facile d’ajouter ou de supprimer de la géométrie dans un mesh voxel.

Fonctionnement habituel du displacement

  • Le displacement mapping définit à quelle distance chaque pixel d’une texture doit s’étendre vers l’intérieur ou l’extérieur de la surface d’un mesh.
  • Les logiciels de modélisation 3D peuvent appliquer le displacement mapping en subdivisant un mesh puis en déplaçant les nouveaux sommets.
  • En graphisme temps réel, il est utilisé avec des effets de shading de surface pour produire des détails géométriques fins sans modifier la forme physique du mesh.
  • Le shell mapping permet de voir le displacement le long de la silhouette d’un objet.

Ce que j’ai créé — un mélange de voxels et de displacement mapping

  • J’utilise des meshes low poly classiques pour modéliser les environnements de jeux 3D anciens, puis j’applique des displacement maps pour définir des détails de surface à l’échelle du voxel.
  • À partir d’un mesh triangulaire et d’informations limitées de displacement map, le renderer convertit les données géométriques à charger sur le GPU.
  • Les textures sont prétraitées afin de générer les informations nécessaires au rendu.
  • L’état du mesh et des textures est utilisé pour rendre une géométrie à displacement voxel.

Création des assets artistiques et des environnements

  • Il faut créer deux types d’assets : des textures et des meshes.
  • Chaque texture se compose d’une carte d’albédo et d’une displacement map.
  • Les meshes sont des meshes triangulaires low poly classiques avec texture mapping.
  • Il existe des contraintes sur la structure des meshes et sur le mapping des textures.

Avantages de cette approche

  • Elle permet de créer du contenu avec un workflow familier.
  • Comme les environnements sont conçus sous forme de meshes triangulaires, il n’est pas nécessaire d’écrire un moteur physique ou un contrôleur de personnage spécifique.
  • La plupart des systèmes de gameplay n’ont pas besoin de se préoccuper des détails voxels.

Prochaines étapes

  • Il reste beaucoup de fonctionnalités à ajouter ou à améliorer dans le renderer lui-même.
  • Je cherche comment intégrer de petits objets ou des objets animés.
  • Je prévois d’améliorer l’implémentation de l’éclairage.
  • Je pense qu’intégrer cette technique de rendu dans un jeu est une voie réaliste.

L’avis de GN⁺

  • Défi technique : combiner voxels et displacement mapping est une tâche très difficile. Cela demande beaucoup de mécanique sur mesure.
  • Aspects pratiques : cette technique a de bonnes chances d’être intégrée dans des moteurs de jeu existants. Cela permettrait aux développeurs de réutiliser leurs systèmes actuels.
  • Attrait esthétique : une réinterprétation moderne de l’esthétique des jeux 3D rétro peut séduire de nombreux joueurs.
  • Considérations de performance : cette technique de rendu nécessite des optimisations de performance, en particulier pour le rendu en temps réel.
  • Potentiel futur : cette technique pourrait s’appliquer à divers genres de jeux et être particulièrement utile aux développeurs indépendants.

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.