Shaderlab

Wander Shader

Wander

Début : Janvier 2014
Durée : 1 semaine
Langage : Shaderlab
Bibliothèques/Outils : Unity

Lien vers une démonstration basique du shader (Webplayer)

J’ai commencé cette petite expérimentation en me basant sur le jeu Wander, développé par des étudiants de l’Enjmin. J’avais suivi l’actualité autour des projets des étudiants du master JMIN et m’était toujours intéressé à l’effet visuel saisissant opérant dans ce jeu. On incarne en effet un personnage aveugle, l’affichage consistant donc en une propagation d’ondes sonores. Je me décidais donc à tenter de recréer un effet visuel similaire.

Je décidais alors de m’imposer les mêmes contraintes que le programmeur de ce projet, tel qu’il le décrivit dans un article :

  • Effectuer le rendu normal
  • Appliquer un effet de contour
  • Appliquer un effet de propagation de son

Ainsi, le programmeur s’assure alors qu’un unique rendu 3D est effectué, permettant d’optimiser les performances et de réaliser les effets visuels par un traitement d’image en post-rendu. Unity ne permettant d’ailleurs pas d’effectuer ce type d’effet dans sa version gratuite, il m’aura fallu utiliser mon mois d’essai d’Unity Pro.

Avant de m’y confronter moi-même, j’avais du mal à comprendre le problème sur lequel le programmeur de Wander s’était heurté, à savoir retrouver les coordonnées 3D de chaque pixel, à partir d’une image 2D. Il aura donc fallu utiliser la composante de profondeur de chaque pixel, pour recréer les coordonnées 3D en fonction du frustum de la caméra, ce qui fut en effet une étape très délicate.

Après quelques temps j’ai enfin réussi à obtenir l’aspect désiré. L’effet n’est pas sensiblement le même, et nécessiterait évidemment un peu de peaufinage supplémentaire : par exemple, quelques modifications seraient à apporter sur l’effet de contour pour que chacun des contours modifie la valeur de profondeur du pixel et évite cet effet disgracieux :

Wander

Cependant mon but ici n’était pas d’obtenir une version finie, mais bien de comprendre le fonctionnement de cet effet. Au final, je suis content d’avoir réussi à  le recréer, car je trouve cette idée très ingénieuse. L’expérience de Wander se base beaucoup sur ce très bon effet, et j’avais vraiment envie de m’y essayer.