« Les cartes graphiques/Les architectures de type tiled rendering » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 17 :
==Early-Z==
 
Les architectures à base de Tiles ne sont pas la seule solution pour éviter le calcul des pixels cachés. Les concepteurs de cartes graphiques usuelles (sans ''tiled rendering'') ont inventé des moyens pour détecter une partie des pixels qui ne seront pas visibles, de manière précoce. Ces techniques sont des techniques dites d''''early-Zélimination précoce'''. Elles permettent d'éliminer certains pixels non-visibles dès la sortie de l'étape de rastérisation. On ne peut pas éliminer ces pixels avant, pour une raison simple : on a besoin de connaitre leur coordonnée de profondeur, qui n'est connu qu'une fois l'étape de rastérisation/interpolation terminée. Ainsi, on est certain que les pixels ne sont pas texturés et ne passent aspas dans les pixels ''shaders'', ce qui est un gain en performance non-négligeable.
 
Mais ces techniques peuvent causer un rendu anormal dans certaines conditions. Ces conditions surviennent quand la coordonnée de profondeur ou de transparence d'un pixel peut être modifiée après l'étape de rastérisation, typiquement dans les pixels shaders. Il est rare que les shaders peuvent bidouillerbidouillent la profondeur ou la transparence d'un pixel, mais cela peut arriver. Il est aussi possible qu'ils altèrent le z-buffer, mais cela est encore plus rare. Autant dire qu'utiliser des techniques d'''early-Zélimination précoce''' peut donner un gain en performance massif, mais que les cartes graphiques doivent cependant se comporter d'une manière assez conservative malgré tout. Pour éliminer tout problème, on doit recourir à des solutions logicielles. La plus simple, celle utilisée en premier lieu est de laisser le choix d'utiliser l'''early-Z'' aux drivers de la carte graphique. Ils analysent les shaders et décident si le test de profondeur précoce peut être effectué ou non. De nos jours, les APIs graphiques comme DirectX et OpenGl permettent de marquer certains ''shaders'' comme étant compatibles ou incompatibles avec l'''early-Z'élimination précoce'. C'est possible depuis DirectX 11.
 
Il existe plusieurs techniques d'early-Zélimination précoce', 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. Il est parfaitement possible d'utiliser le zmax conjointement avec le zmin, ce qui donne des techniques hybrides.
 
===Z-Max===