Bonjour,
j'espère que vous pourrez m'aiguiller sur le problème suivant, je cherche à réaliser des opérations sur une texture passée à mon pixel shader.
Je cherche par à sommer tous les valeurs R des texels de la texture et à écrire le résultats en sortie.
J'ai donc en entrée 1024x1024 valeurs et en sortie 1 valeur.
J'ai tenté d'utiliser le même principe dont on avait parlé sur les pixels adjacents dans un post précédent, mais étant donnée la taille des textures et les limites que je rencontre avec les instructions du type :
texture2 = tex2D(gTexture1Sampler, In.TextureUV + float2(1.0f,0.0f));
je n'arrive pas à obtenir le résultat que je recherche.
En parcourant de la documentation sur le net, je vois qu'il est possible a priori de faire ce que je recherche avec plusieurs passes...
Il y a d'ailleurs cet exemple avec les produits matriciels comme illustrer dans la pièce jointe. Cet exemple repose sur le principe suivant :
j'ai trouvé ces informations à l'adressePass1
Output = ax1 * b1y + ax2 * b2y +… + axb * bby
…..
Passes: = n/Blockssize
Now there is a tradeoff between passes and program size/fetches
http://www.seas.upenn.edu/~cis665/Ma...nsontheGPU.ppt
mais je n'arrive pas à les utiliser.
1. Pourriez vous me renseigner sur les passes :
a. est-il possible d'utiliser le résultat d'une passes dans une autres passe ?
b. si oui, comment faire ?
2. Comment gérer les passes au niveau du pixel shader ?
3. Evidemment si quelqu'un a un exemple de code source proche de ce que je souhaite réaliser et qu'il souhaite le partager, je lui serai très reconnaissant.
Merci d'avance.
Partager