我正在处理片段着色器。它有效,但仍需要一些优化。
据我所知,GLSL中的大多数分支都是扁平化的,因此两种情况都会被执行。我已经消除了大多数if-else条件,但是有一些条件必须保持不变,因为两个分支的执行成本都很高。我知道,在HLSL中,此问题有[branch]
个关键字。但是如何在GLSL
中解决它?
我的代码看起来像这样(条件不一致,结果取决于着色器中的计算):
if( condition ) {
expensive calculations...
}
if( condition2 ) {
expensive calculations...
}
if( condition3 ) {
expensive calculations...
}
...
一个“昂贵的计算”可以修改条件所依赖的变量。有可能执行多个计算。
我知道,有旧的或移动的GPU,它根本不支持分支。在这种情况下,与此问题无关
答案 0 :(得分:1)
GLSL没有强制执行分支的机制(或强制扁平化分支)。