SSSSS : vers une peau réaliste temps réel

Jorge Jimenez, chercheur en 3D temps réel au sein de l’Université de Zaragoza (Espagne), a mis en ligne quelques images des travaux de son équipe sur la simulation de subsurface scattering temps réel :

 

sssss

sssss

Le shader utilisé tourne en seulement deux passes (le but étant de pouvoir le faire tourner sur XBOX sans problème), et utilise une technique screen-space (suivant la même approche, donc que le SSAO qui simule l’ambient occlusion) : le Screen-Space Subsurface Scattering, soit… SSSSS.

Jimenez indique que le shader est totalement paramétrable, et des profils sont prévus pour l’optimiser selon le hardware cible. Il donne les performances suivantes à titre d’exemple :
– 0,27ms en 720p sur GeForce GTX 295
– 1,69ms en 1080p, avec le même matériel.

Voici un autre aperçu du rendu, avec en haut la version sans SSSSS, en bas avec :

sssss

Voici un résumé du déroulement des calculs :
– La scène est rendue de façon classique, les pixels affichant de la peau étant mis en mémoire dans le stencil buffer (voir wikipédia pour plus de détails).
– On fait ensuite un calcul approximatif du SSS sur ces pixels, en se basant sur la forme de la surface (obtenue via le depth buffer). Le coût ne dépend donc ici que de la surface d’écran couverte par de la peau, quel que soit le nombre de visages.
Le calcul de SSS se fait en plusieurs passes (2 dans la version visible sur les images).
– Enfin, on affiche la combinaison du rendu classique et de la passe de SSSSS, de la même facçon que ce qui est fait pour, par exemple, du SSAO.

Le fait de travailler avec le SSSSS a de multiples avantages pour du temps réel :
– on ne calcule que la portion visible de la peau (pas de calculs inutiles de la diffusion derrière la tête ou dans la zone non visible à l’écran)
– les calculs sont effectués en résolution écran, et non en fonction de la taille de la texture. Cela veut dire aussi que le coût en temps sera d’autant plus grand que le visage est vu en gros plan.

Jimenez présentera la technique lors du SIGGRAPH 2011, dans la session CG in Europe (mercredi 10 août). Le code source est pour le moment distribué à la demande, et sera rendu public au dernier trimestre 2011.

Pour plus de détails :
– la page de l’annonce, avec les images (à voir en pleine résolution) ;
page dédiée au principe du SSSSS, et publication sur le sujet datant de 2009, par Jimenez et ses collaborateurs ; on y trouvera un pdf, des slides et un film en HD.
– La démo Samaritan diffusée lors de la Games Developper Conference, mettant en scène les nouveautés de l’Unreal Engine, fait appel à cette technique. NVidia revient brièvement sur le sujet dans une présentation disponible sur son site, en pdf. A noter, le CryEngine 3 implémente lui aussi une technique de type SSSSS.

Via Geeks3D.

A Lire également