Les cartes graphiques

Chapitre 2.6 : Early-Z

Guy Grave

Si la détection des pixels masqués s'effectue dans les ROP, de nombreux pixels inutiles seront calculés par les pixels shaders, coloriés, éclairés, et j'en passe. Or, la profondeur d'un pixel est connue dès la fin de l'étape de rasterisation. On peut ainsi déterminer plus ou moins facilement si un fragment sera ou non calculé.

Du moins, c'est la théorie, comme vous allez le voir dans ce chapitre.

Commentez

- Titre : Les cartes graphiques

- Auteur : Guy Grave

- Parution : 14 mai 2014

- Licence : Le contenu de cet article est rédigé par Guy Grave et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Sommaire

- Navigation

- II. Introduction

- III. Hierarchical Z

- Navigation

Navigation

Tutoriel précédent : Render Output Target

Sommaire

Tutoriel suivant : Processeurs de shaders

II - Introduction

Si la détection des pixels masqués s'effectue dans les ROP, de nombreux pixels inutiles seront calculés par les pixels shaders, coloriés, éclairés, et j'en passe. Or, la profondeur d'un pixel est connue dès la fin de l'étape de rasterisation. On peut ainsi déterminer plus ou moins facilement si un fragment sera ou non calculé.

Du moins, c'est la théorie : les textures peuvent colorier le fragment en question avec des texels transparents, ce qui ruine un petit peu le beau raisonnement fait juste au-dessus. Mais les concepteurs de cartes graphiques sont malins et ont inventé des moyens pour détecter une partie des pixels qui ne seront pas visibles, avant que ceux-ci n'entrent dans l'unité de texture. On peut ainsi rejeter des pixels masqués par d'autres, via le tampon de profondeur, en tenant compte rapidement de la profondeur.

Ces techniques sont des techniques d'early-Z : Z-précoce. Il existe plusieurs techniques d'early-Z, qui sont présentes depuis belle lurette dans nos cartes graphiques. Celles-ci peuvent être classées en deux catégories : le zmax, et le zmin.

III - Hierarchical Z

La première technique est celle du hierarchical Z. Cette technique consiste à conserver une copie basse-résolution du tampon de profondeur, qui peut tenir dans une mémoire cache de la carte graphique, ou dans la mémoire vidéo.

Pour obtenir cette copie basse-résolution, le tampon de profondeur est découpé en rectangles de M * N pixels. Chacun de ces blocs se verra attribuer un pixel dans la copie basse-résolution du tampon de profondeur. Dans chacun de ces blocs, la carte graphique recherche le pixel qui a la profondeur la plus grande : c'est cette profondeur qui sera stockée dans le pixel correspondant dans la copie basse-résolution.

Pour éviter les problèmes avec la transparence, la carte graphique doit déterminer, pour chaque bloc, s'il contient un pixel transparent.

Navigation

Tutoriel précédent : Render Output Target

Sommaire

Tutoriel suivant : Processeurs de shaders