« Les cartes graphiques/Les cartes accélératrices 3D » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 126 :
===Les circuits du pipeline programmable : vertex et pixels shaders===
 
A partir de la Geforce 3 de Nvidia, les unités de traitement de la géométrie sont devenues programmables. Cela permet une grande flexibilité, à savoir que changer le comportement ne nécessite pas de re-câbler tout le circuit. Les unités de traitement de la géométrie deviennent donc des processeurs indépendants, capables d’exécuter des programmes appelés '''Vertex Shaders'''. Par la suite, l'étape de traitement des pixels est elle aussi devenue programmable. Des programmes capables de traiter des pixels,et les '''pixels shaders''' (programmes de traitement de pixels) ont fait leur apparition. UnePar secondela sériesuite, d'unitésautres atypes alorsde shaders ont été ajoutéeinventés : shaders de géométrie, shaders génériques, etc. Ces shaders sont écrits dans nosun carteslangage graphiquesde :haut-niveau, le HLSL ou le GLSL, et sont traduits (compilés) par les processeurspilotes de pixelsla shaderscarte graphique avant leur exécution. ParAu lafil suitedu temps, d'autresles typesspécifications de shadersces ontlangages étésont inventésdevenues :de shadersplus deen géométrie,plus shadersriches génériques,et etcle matériel en a fait autant.
 
<gallery widths=300px heights=350px>
VertexShader.MaxDZ8.svg|Vertex shader.
PixelShader.MaxDZ8.svg|Pixel shader.
GeometryShader.MaxDZ8.svg|Geometry shader.
GenericShader.MaxDZ8.svg|Generic shader.
</gallery>
 
Ces shaders sont écrits dans un langage de haut-niveau, le HLSL ou le GLSL, et sont traduits (compilés) par les pilotes de la carte graphique avant leur exécution. Au fil du temps, les spécifications de ces langages sont devenues de plus en plus riches et le matériel en a fait autant.
 
Les premières cartes graphiques avaient des jeux d'instructions séparés pour les unités de vertex shader et les unités de pixel shader, et les processeurs étaient séparés. Pour donner un exemple, c'était le cas de la Geforce 6800. Cette séparation entre unités de texture et de vertices était motivée par le fait que les unités de vertice n’accédaient jamais à la mémoire, contrairement aux unités de traitement de pixels qui doivent accéder aux textures.