Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 2008
-
26 oct. 2004 à 22:54
La Guite
Messages postés45Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention27 novembre 2009
-
26 févr. 2005 à 15:08
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.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 27 oct. 2004 à 19:25
Oui, je sais lire la surface du depth-buffer mais pas avec les pixels shaders.
En fait, je savoir si c'est possible d'allumer un seul point avec les pixels shader; et savoir comment manipuler oDepth car je ne trouve rien de comprehensible sur le net.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 27 oct. 2004 à 19:32
allumer qu'un seul point, tu peux dire faire du 'per pixel lighting' sur une texture, ben c'est pas pour faciliter ce genre de traitement que les shaders existent ?
je connais pas, mais tu a chercher dans des exemples, genre un bump mapping ?
La Guite
Messages postés45Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention27 novembre 2009 26 févr. 2005 à 15:08
Il y a des boucles maitenant dans les pixels shader en version 3.0
Pour savoir si ta carte graphique le fait : tu peux le verif dans les Caps de directX
(GeForce 6)