Salut,
Je suis très étonné de voir qu'il n'y a pas de boucles dans les pixels shader.
Ex:
; A simple pixel shader
; This uses the ps 2.0 instruction set and registers
ps_2_0
;
; Declare the s0 register to be the sampler for stage 0
dcl_2d s0
; Declare t0 to have 2D texture coordinates
; from stage 0. These are the interpolated
; texture coordinates.
dcl t0.xy
; Sample the texture at stage 0 into the r1 temporary register
texld r1, t0, s0
; move r1 to the output register
mov oC0, r1
C'est le pixel shader le plus simple. C'est le même code qui modifie tous les points de la texture à afficher.
Mais comment ne modifier qu'une petite partie de la texture ?
Comment modifier localement une texture (sans se taper le scan de toute la texture).
Pour faire un effet de brouillard simple, la première idée qui m'est venue est de modifier la couleur de chaque pixel en fonction du Zbuffer (plus le pixel vient d'un point loin, plus il tend vers la couleur du brouillard).
Je sais faire cela en software, mais comment le faire faire par la carte vidéo, et en passant par les pixels shaders.
Le must serait d'accéder au depth-buffer et de modifier le backbuffer, mais le depth buffer n'est pas une texture....
Bref, tout cela pour dire que je suis déçu par les pixels shader. J'aimais bien l'assembleur, mais là .... on ne peut rien faire. L'histoire des boucles me surprend enormement car on ne peut vraiment pas faire ce qu'on veut, à part du bump mapping et du alphablending...
J'espère me tromper sur les pixel shader.
Merci de me donner quelques de ses avantages.
Guillaume