legreg a écrit :
durandal, ta question n'a pas grand sens.. (explications peu apres)
le partage des taches entre un processeur generaliste (CPU) et le processeur specialise (un ou plusieurs) depend essentiellement de la maniere dont on programme (1)
et du type de capacites exposees par le hardware (2).
Il serait beaucoup plus interessant pour toi de te demander de quelles taches est compose la chaine d'affichage. Ensuite tu peux comprendre comment tel ou tel processeur peut effectuer ces taches de maniere plus efficace que le processeur principal.
Premiere generation de hardware : - rien n'est accelere, puis on commence a accelerer quelques taches comme le double buffering (recopie d'ecran rapide ou simple changement de pointeurs), le remplissage geometrique (simple et avec des motifs), l'affichage de sprites.
- generation suivante, on accelere l'elimination des faces cachees (z-buffer ou tile architecture), on peut stocker des textures en memoire video, on accelere le blending (melange du motif avec le fond deja trace). On peut preciser des valeurs de couleurs sur les bords qui seront interpolees sur la surface du triangle.
- ensuite, on accelere le triangle setup. On passe des triangles deja transformes, voire sous forme de strips et on effectue un clipping sur les bords, on calcule la pente pour l'interpolation, on accelere le mipmapping et le filtrage des textures.
- On effectue la transformation sur la carte graphique, avec un nouveau processeur specialise ou integre au processeur graphique. la transformation pour l'instant inclut uniquement le calcul des coordonnees ecran de sommets qui sont donnees dans leur systeme de coordonnees objet. On calcule les eclairages a la maniere d'OpenGL (par sommet).
- Les transformations incluent desormais de plus en plus de choses, on peut effectuer du skinning de modeles sur la carte, modifier les normales et les valeurs d'eclairage, afin d'effectuer un eclairement par pixel (ou par fragment).
LeGreg
|