top of page

La lumière dans un monde voxel : vraies lumières ou flood fill ?

Photo du rédacteur: Marcel Dütscher
Marcel Dütscher
27 juin
2 min de lecture

Un joueur pose une lampe dans sa base. Que se passe-t-il techniquement ? Cette question innocente a déclenché chez nous une décision de fond — et la réponse est un bel exemple du fait que la solution « plus moderne » n'est pas toujours la meilleure.


Option A : de vraies lumières Unity. Chaque bloc lumineux devient une source de lumière ponctuelle, et le moteur calcule tout. C'est superbe — mais ça ne passe pas à l'échelle. Un monde voxel peut avoir des centaines de blocs lumineux dans le champ de vision ; des lumières ponctuelles en temps réel en telle quantité font transpirer n'importe quel GPU, et encore plus dans la version navigateur.


Option B : la lumière par flood fill. Le grand classique du genre : la lumière est une valeur numérique par bloc, qui se propage depuis la source et diminue à chaque pas. Ça ne coûte presque rien, autant de sources qu'on veut — mais le résultat paraît plat, parce que la lumière n'a pas de direction. Un mur à côté de la lampe est aussi clair que la surface en dessous.


Notre choix : un flood fill avec direction. On est restés sur l'approche flood fill, mais on lui a appris la notion de direction : la lumière sait d'où elle vient, et les surfaces sont éclairées différemment en conséquence. Le résultat est intégré au mesh du chunk lors du meshing — à l'exécution, ça ne coûte pratiquement rien, mais le rendu a nettement plus de relief que la lumière de blocs classique.


Depuis, on applique cette leçon partout : d'abord se demander quel est vraiment le problème du genre (ici : énormément de sources, une géométrie statique), ensuite choisir la technique. De vraies lumières résolvaient un problème qu'on n'avait pas — et en auraient créé un qu'on ne sait pas résoudre.

Posts récents

Voir tout

Commentaires


Les commentaires sur ce post ne sont plus acceptés. Contactez le propriétaire pour plus d'informations.
bottom of page