就性能而言,创建两个着色器,一个用于分支的每一侧,还是在像素着色器代码中放置一个分支更好?例如,如果我有一个高斯模糊着色器,它在执行水平或垂直传递之间做出决定,我最好将它分成两个单独的着色器,先绑定一个,然后再绑定另一个,或者将分支保留在着色器内代码本身,这意味着我不必为第二遍切换着色器?
void main(void)
{
...
if (uniform_Orientation == 0)
{
// Horizontal blur
}
else
{
// Vertical blur
}
}
我的直觉告诉我应该把它分成两个单独的着色器,但是我不确定切换着色器对性能的影响是什么。
有人对此有任何想法吗?