J'ai un fragment shader plutôt simple avec une branche et je ne sais pas comment il est géré par le compilateur GLSL et comment cela affecterait les performances.Comportement de branchement GLSL
uniform sampler2D sampler;
uniform vec2 texSize;
uniform vec2 targetSize;
void main()
{
vec4 color;
if(texSize == targetSize)
color = texture2DNearest(sampler, gl_TexCoord[0]);
else
color = texture2DBicubic(sampler, gl_TexCoord[0]);
gl_FragColor = color;
}
J'ai lu d'une AMDs document que, parfois, les deux branches sont exécutées, ce qui ne serait pas une bonne idée dans ce cas. Sans plus d'informations ni d'accès au démontage, je ne sais pas quoi penser de cela, et comment l'éviter si c'est un problème?
Et aussi d'après ce que je comprends d'une branche basée sur une variable uniforme ne subira pas de frais généraux importants car il est constant sur un seul passage?
Dommage que ce soit Windows uniquement :( – ttvd
+1 pour une réponse stricte et complète. :) – Kos
Le lien est cassé –