Bonjour à tous.
En glsl je voulais savoir si des tableaux sur des variable uniform était possible plus exactement sur des "uniform sampler 2d".
Mon problème est qu'avant l'exécution de mon programme je ne sais pas combien de textures je vais devoir utiliser avec mon shader d'où mon problème de savoir s'il est possible d'utiliser des tableaux d'uniform ou tout autre astuce conduisant au même résultat.
Je vous donne un petit exemple d'utilisation histoire que ca soit un peu plus claire.
Je donne juste un aperçu de mon fragment shader (le vertex shader est tout simplement une transfo des vertex par la matrice modelview en gros + quelque passage de varying tels que des coord textures )
Donc fragment shader actuelle pas du tout flexible :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 uniform sampler2D t0; uniform sampler2D t1; .... uniform sampler2D tn; /*jusqu'a ce que j'en ai marre de retaper n fois la même chose (enfin plus exactement le nombre max de textures simultanées acceptées par ma carte graphique et uniquement la mienne ba oui d'où l'intérêt d'avoir une astuce + flexible*/ //mon main void main(void) { gl_FragColor = fct_utilisant_les_tn(); }
L'idée serait d'avoir un fragment shader de la forme :
Par ce que dans le cas ou j'utilise une 12aine de texture je dois dire que se taper une pseudo boucle for à la main pour chacun des t0 à t12 c'est pas génial et surtout c'est pas du tout flexible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 uniform int nb_texture; uniform sampler2D t[nb_texture]; void main(void) { gl_FragColor = fct_utilisant_les_t(nb_texture); }
Si non l'idée c'était de rééditer en tps réelle mon fichier fragment avant le chargement du shader par opengl mais bon un peu tordu aussi comme solution.
Enfin si quelqu'un à une astuce plus adéquate je suis preneur.
Partager