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

Contenu supprimé Contenu ajouté
Ligne 17 :
==L'élimination précoce des pixels sur les cartes graphiques en rendu immédiat==
 
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''''é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 pas 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 bidouillent 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'''é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 est de laisser le choix 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'élimination précoce'. C'est possible depuis DirectX 11.