ステートメントの両方の部分が実行され、間違ったものがドロップされるため、シェーダーでステートメントを回避する必要があると聞いたことがあります(パフォーマンスに悪影響を及ぼします)。
DirectX 10ではまだ問題ですか?誰かが私に言った、その中で正しいブランチだけが実行されるだろう。
説明のために、私はコードを持っています:
float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3;
if(x>0.5){
x = 10 * y1 + b1;
}else{
x = 10 * y2 + b2;
}
より高速にする他の方法はありますか?
もしそうなら、どうやって?
両方のブランチは似ていますが、唯一の違いは「定数」の値です(y1, y2, b1, b2
ピクセルシェーダーのすべてのピクセルで同じです)。