prix

Stéphane Charpentier | 12/05/2005
Accès direct :

Pixel Pipeline : version programmable

Le pixel pipeline programmable (ou plus simplement : les pixel shaders) a un fonctionnement très proche du vertex pipeline programmable. Des valeurs arrivent en entrée (les données d'un pixel), un traitement est effectué, et les valeurs modifiées ressortent. Les dernières versions des pixel shaders les ont amenées à un niveau très proche des vertex shaders au niveau des fonctionnalités, comme il sera expliqué plus bas.

Il existe néanmoins des instructions qui sont spécifiques aux pixel shaders et qu'il est intéressant de décrire, puisqu'elles affectent grandement le fonctionnement du pixel pipeline.

ImageInstructions

Ces instructions vont donc réaliser des opérations sur les valeurs qui leur sont fournies (par exemple une couleur). D'autres informations sont disponibles comme les coordonnées U/V des textures dont il avait été question dans la première partie de cet article. Pour rappel, elles donnent une position sur une texture (U pour l'axe des abscisses, V pour les ordonnées).

Texld

Cette instruction (texture load) permet d'aller chercher des données dans les textures. Ces données peuvent être de simples couleurs, pour l'utilisation la plus classique des textures, ou tout autre type de données. Par exemple, dans le cas du bump mapping, la texture - ou bump map - contiendra des valeurs qui sont des perturbations utilisées lors des calculs du bump mapping. A noter que cette instruction a longtemps été réservée aux pixel shaders, mais qu'elle est disponible dans les vertex shaders 3.0 (c'est d'ailleurs pratiquement la seule différence avec les vertex shaders 2.x).

Texkill

Une instruction qui pourrait paraître toute bête, mais qui finalement est une des plus puissantes, puisqu'elle contrôle le flux du pixel pipeline. En effet, elle permet de "tuer" un pixel, c'est à dire d'annuler son rendu. C'est non seulement très utile pour certaines techniques d'affichage, mais cela permet également d'augmenter les performances puisque le pixel n'ira pas plus loin dans le processus de rendu.

ImageVersions

Il y a plus de versions de pixel shaders qu'il n'y a de versions de vertex shaders. Allant de la version 1.0 à 1.4, pour ensuite passer aux versions 2.0, 2.x et 3.0, toutes ces versions - surtout les premières - ont été un véritable casse-tête lors du développement des premiers jeux exploitant les pixel shaders.

Nous pouvons passer les versions antérieures aux pixel shaders 1.3, puisque ces derniers représentent plus ou moins la première version vraiment utilisée et supportée par toutes les cartes graphiques supportant les pixel shaders.

Pixel Shaders 1.3

Cette "première" version possédait très peu de registres ainsi que très peu d'instructions, ce qui la rendait assez limitée. Il faut savoir qu'un pixel shader est généralement beaucoup plus complexe et plus gourmand en ressources qu'un vertex shader, ce qui est d'ailleurs une des raisons pour laquelle il n'existe pas de version logicielle des pixel shaders.

Pixel Shaders 1.4


Version mutante, elle a été utilisée principalement par ATI et mise en avant lors de la sortie de la Radeon 8500. Elle est beaucoup plus puissante que la version précédente puisqu'elle peut aller chercher les données présentes dans les textures. Elle fût malgré tout beaucoup moins utilisée puisqu'elle n'était pas supportée par les cartes NVIDIA de l'époque.

Pixel Shaders 2.0 et 2.x

Avec cette version, les pixel shaders commencèrent enfin à être utilisables, notamment parce que de nombreuses instructions ont été ajoutées. Ce nouveau jeu d'instructions correspond plus ou moins à ce qui était disponible dans les vertex shaders 1.0, tout en gardant les possibilités des pixel shaders 1.4 et en les simplifiant. Bref, c'est beaucoup mieux, mais finalement en retard par rapport aux vertex shaders puisque ne possèdant pas de contrôle de flux. Contrôle de flux qui est justement arrivé avec la version 2.x.

Pixel Shaders 3.0

Enfin, la version 3.0 ajoutera quelques registres et quelques nouvelles instructions, amenant le jeu d'instructions des pixel shaders 3.0 plus ou moins au même niveau que celui des vertex shaders 3.0, avec évidemment plus d'instructions au niveau de l'accès aux textures.
 
 
 

Actualités relatives Cartes graphiques