Wie es möglich ist, Daten über Shader zu übergeben, wenn Vertex, Tess. Kontrolle, tess. Evaluations-, Geometrie- und Fragment-Shader. Ich habe versucht, den Schnittstellenblock auf diese Weise zu verwenden.Weitergabe von Daten über Shader
//vertex shaders
out VS_OUT { ... } vs_out;
als ich diesen Code in Tessellation Steuer Shader geschrieben:
in VS_OUT { ... } tc_in;
out TC_OUT { ... } tc_out;
So tesselation Kontrolle Shader einmal für jeden Knoten genannt. Bedeutet dies, dass tc_in nicht Array, sondern einzelne Variable sein muss. Ich bin nicht wirklich sicher wegen der hinterhältigen gl_InvocationID.
Dann wird es hart. Tessellations-Evaluierungs-Shader Etwas sagt mir, dass der Evaluations-Shader den Schnittstellenblock als Array nehmen sollte.
in TC_OUT { ... } te_in[];
out TE_OUT { ... } te_out[];
Wechsel zum Geometrieshader. Der Geometrie-Shader benötigt mehrere Vertices, also Array-Block.
Scheint echt für mich, aber Daten kamen nicht zu Fragment Shader.
Ich würde mich über jeden Hinweis freuen.
Vielen Dank! Du hast sehr geholfen! – Peter
Ich bin froh, Ihnen helfen zu können. Wenn Sie ein paar Beispiele haben wollen, als ich zum ersten Mal Tessellations-Shader benutzte, half mir dieser Artikel (http://prideout.net/blog/?p=48), die Konzepte und die Implementierung zu verstehen. –