パフォーマンスの観点から、ブランチの両側に1つずつ、合計2つのシェーダーを作成するか、ピクセルシェーダーコード内にブランチを配置する方がよいでしょうか。たとえば、水平パスと垂直パスのどちらを実行するかを決定するガウスぼかしシェーダーがある場合は、2つの別々のシェーダーに分割して、一方をバインドしてからもう一方をバインドするか、ブランチをシェーダー内に保持する方がよいでしょう。コード自体、つまり、2番目のパスでシェーダーを切り替える必要はありませんか?
void main(void)
{
...
if (uniform_Orientation == 0)
{
// Horizontal blur
}
else
{
// Vertical blur
}
}
私の本能は、それを2つの別々のシェーダーに分割する必要があると言っていますが、シェーダーを切り替えることによるパフォーマンスへの影響がわかりません。
誰かこれについて何か考えがありますか?