Comment il est possible de transmettre des données via des shaders, en utilisant vertex, tess. contrôle, tess. évaluation, géométrie et fragmentation des shaders. J'ai essayé d'utiliser un bloc d'interface de cette façon.Transmettre des données via des shaders
//vertex shaders
out VS_OUT { ... } vs_out;
Que j'ai écrit ce code dans shader contrôle tessellation:
in VS_OUT { ... } tc_in;
out TC_OUT { ... } tc_out;
Ainsi, shaders de contrôle de tesselation appelé une fois pour chaque sommet. Cela signifie-t-il que tc_in ne doit pas être un tableau mais une variable unique. Je ne suis pas vraiment sûr de ça à cause de gl_InvocationID.
Alors les choses deviennent difficiles. Nuancier d'évaluation de Tessellation. Quelque chose me dit que shader d'évaluation devrait prendre le bloc d'interface en tant que tableau.
in TC_OUT { ... } te_in[];
out TE_OUT { ... } te_out[];
Déplacement vers un shader de géométrie. Geometry shader prend plusieurs sommets, donc, certainement un bloc d'interface de tableau.
in TE_OUT { ... } gs_in[];
out vec3 random_variable;
...
random_variable = gs_in[whatever_index];
Semble légitime pour moi, mais les données ne sont pas venus à fragment shader.
J'apprécierais n'importe quel conseil.
Merci beaucoup! Tu as beaucoup aidé! – Peter
Heureux d'être utile. Si vous voulez des exemples, quand j'ai utilisé les shaders de tessellation, [cet article] (http://prideout.net/blog/?p=48) m'a aidé à comprendre les concepts et la mise en œuvre. –