ブランチ付きのかなりシンプルなフラグメントシェーダがあります.GLSLコンパイラによってどのように処理されるのか、そしてパフォーマンスにどのように影響するのかは少し不明です。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;
}
私は、この場合には良い考えではないでしょう時には両方の分岐が実行されているAMDs documentから読みました。それ以上の情報や分解へのアクセスがなければ、私はこれについて何を考えるべきか、それが問題であれば避ける方法は不明です。
また、一貫性のある変数をベースにしたブランチは、一回の通過で一定であるため、大きなオーバーヘッドは発生しません。
あまりにも悪いのは窓だけです:( – ttvd
+1厳密で完全な答えです:) – Kos
リンクが壊れています –