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 refraction


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. dispersion


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. bump_mapping


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. texture


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