Article     Discussion     Modifier     Historique     Forums     Salon IRC

Z-buffer

Un article de Games Creators Network.


le Z-buffer est un terme devenu générique désignant la technique permettant l'affichage organisé par ordre de profondeur des éléments d'une scène 3D.

Le principe est le suivant:

Une scène 3D est constituée de triangles (polygônes à 3 sommets). Un sommet est appelé vertex en anglais (au pluriel: "vertices").

Pour dessiner un triangle, sur lequel une texture est appliquée, l'API graphique (travaille avec les pilotes et les routines câblées du GPU) procède par interpolation. Au départ les 3 coordonnées des vertices sont lues, 2 sont gardées pour créer une ligne: la première arête du triangle. Cette arête sera progressivement translatée (sur le plan du triangle et dans une direction orthogonale à elle même) jusqu'a devenir un point à l'autre extrémité du triangle. Tout du long de ce segment, sont tracés les pixels. Chaque pixel prend la couleur du texel plaqué correspondant. (c'est l'étape du filling) Les 3 coordonnées de chaque pixels sont alors connues de l'API, ce sera la coordonnée Z, autrement dit, la profondeur, qui sera gardée pour être stockée dans le Z-buffer. A cette étape cette coordonnée est appellée homogène. Avant que le pixel soit dessiné, sa valeur Z sera comparée à celle déjà existante dans le Z-buffer. C'est pourquoi le Z-buffer doit être effacé et initialisé à +infini avant rendu dans le backbuffer.

considérations de précision:

Le Z-buffer contient des nombres codés selon la norme IEEE-754 (virgule flottante). De nos jours ce stockage ce fait sur 24 ou 32 bits. Mais sur d'anciennes cartes (comme la voodoo3) ce codage se faisait sur 16 bits. Causant des imprécisions, deux faces pouvaient s'entre-mêler si elles atteignaient une certaine distance dans le Z-buffer. Les valeurs du Z-buffer sont comprises entre la near clipping plane et la far clipping plane. Ce qu'il faut savoir, c'est qu'un nombre IEEE-754 stocke ses valeurs par exposant et par mantisse, donc si le nombre augmente son ordre d'une puissance de deux, alors sa précision dans son prochain intervalle sera divisée par 2. En clair, entre 2^n et 2^(n+1) on peut stocker 2^bits_mantisse nombres. donc plus le nombre est grand moins sa précision peut etre correcte. Ce qui explique l'effet dans certains map de counter strike, où deux surfaces pouvaient donner de drôles d'artefacts vu de loin si le mappeur les avaient construites trop proches.

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.