Applications des nuanceurs à la génération en temps réel d'images réalistes
Jusqu'à récemment, le processus de rendu temps réel était fixé par le
pipeline graphique. Maintenant, les cartes récentes permettent de
prendre le contrôle de ce pipeline, tant au niveau de l'assemblage de
primitives (nuanceurs de sommets), que de la rastérisation (nuanceurs de fragments),
en donnant les instructions directement processeur graphique. Cette
technique permet de contrôler efficacement le procédé de rendu, et de
simuler très facilement des phénomènes physiques comme la réfraction,
la dispersion, ou la réflexion, ou des techniques de rendus avancées,
habituellement dédiées aux rendus offline comme le bump-mapping, le
shadowing, le bluring, l'utilisation de textures procédurales, etc ...
Il est possible d'implémenter facilement des modèles d'illumination
différents (Fresnel, cellShading...). Tous les exemples suivants ont
été compilés sous Linux (Redhat 8.0), et exécutés sur une
GeForce3/AGP.
Réfraction
Ici, un exemple de réfraction avec phénomène de Fresnel
(réflexion partielle aux angles ras).Le lapin est rendu par lancer de rayon,
le rayon réfléchi étant utilisé pour parcourir une
texture cubique. Le coefficient de Fresnel quantifie le rapport réflexion/réfraction en
fonction de l'angle apparent des faces par rapport à l'observateur
|
|
Dispersion
Cette image illustre le phénomène physique connu sous le nom de dispersion chromatique.
Ce phénomène est du au fait que l'indice de réfraction varie avec la longueur d'onde.
La technique est basée sur le même principe que dans l'exemple précédant,
mais en décomposant la texture cubique en ses composantes rouges, vertes, et bleues, et en appliquant
la réfraction avec leur coefficient de réfraction respectifs.
|
|
Bump Mapping
Cette technique permet de simuler des reliefs complexes tout en évitant la tesselisation.
Le relief est simulé au niveau de la rastérisation, en spécifiant pour
chaque pixel comment moduler la normale pour le calcul de l'éclairage (il s'agit habituellement
d'une interpolation linéaire des normales entre vertex). Les normales sont altérées
par une texture de bump, qui code en niveau de gris l'«élévation» de la géométrie.
|
|
Textures procédurales
Cet exemple met en pratique en temps réel la génération et l'animation
en temps réel d'une texture 3D, basé sur le bruit de Perlin.
|
|
Depth Peeling
Cet effet illustre une technique appelée depth peeling ("épluchage par profondeur").
Cette méthode utilise deux tests de profondeur par fragment (dont un grâce à
la technique de shadow mapping) pour éliminer de la scène des couches, exposant
ainsi des fragments qui auraient du échouer au test de profondeur. L'image montre la fameuse
Teapot après deux épluchages successifs. Les faces sont rendues avec un éclairage
double-face, rouge a l'extérieur, et vert a l'intérieur. Les parties bleues correspondent
a l'arrière plan.
|
|
Dynamic Texturing
Cette image a été produite sur un simple quadrilatère, par génération en temps
réel d'une texture de bump, réagissant dynamiquement a un ensemble de forces
(ici, des impacts de gouttes). Cette texture est générée offline puis
appliquée sur le quadrilatère. Le passage de la souris sur le quadrilatère crée une traînée dans le liquide.
|
|
Génération de terrain
Les vertex shaders peuvent être employés pour générer un terrain de manière
procédurale, en se basant sur le bruit de Perlin. La texture appliquée est une texture
3D, construite a partir de 3 textures à hauteur intermédiaires.
|
|
Quentin Bleton
Last modified: Mon Jun 16 14:36:02 EDT 2003