1 pièce(s) jointe(s)
Opérations sur les textures dans pixels shader
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 :
Citation:
Pass1
Output = ax1 * b1y + ax2 * b2y +… + axb * bby
…..
Passes: = n/Blockssize
Now there is a tradeoff between passes and program size/fetches
j'ai trouvé ces informations à l'adresse
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.
passes dans un pixel shader
..bien je vois que ce sujetne rencontre pas beaucoup de succès.
dommage car je suis bien embêté.
quelqu'un a-t-il au moins une idée de comment faire pour cumuler un résultat dans un float lors de l'utilisation de plusieur passses dans un pixel shader ?
une limite en taille de texture ?
A nouveau bonjour,
j'ai testé la technique que tu m'as donné Smashy et elle fonctionne super bien, alors merci !
le seul problème que je rencontre encore c'est qu'elle fonctionne très bien pour des textures de taille inférieure à 512x512.
en effet dès que je passe à 512x512 ou une taille supèrieure, je constate une erreur assez importante dans le calcul de la somme... alors que j'utilise toujours le même mode de fonctionnement.
J'ai fait des tests, pour toutes les tailles jusqu'à 256x256 je ne recontre aucun problème les calculs tombent toujours juste.
Aurais-tu une idée d'où vient ce problème ?
...ce n'est pas une question de limite...
je viens de refaire quelques test et pour une taille de 1024x1024 ça fonctionne sans erreur...
allez comprendre..
ça viendrai de ma carte tout bêtement ?