如何强制GLSL分支?

时间:2016-09-12 06:48:17

标签: opengl opengl-es glsl hlsl glsles

我正在处理片段着色器。它有效,但仍需要一些优化。

据我所知,GLSL中的大多数分支都是扁平化的,因此两种情况都会被执行。我已经消除了大多数if-else条件,但是有一些条件必须保持不变,因为两个分支的执行成本都很高。我知道,在HLSL中,此问题有[branch]个关键字。但是如何在GLSL中解决它?

我的代码看起来像这样(条件不一致,结果取决于着色器中的计算):

if( condition ) {
    expensive calculations...
}

if( condition2 ) {
    expensive calculations...
}

if( condition3 ) {
    expensive calculations...
}

...

一个“昂贵的计算”可以修改条件所依赖的变量。有可能执行多个计算。

我知道,有旧的或移动的GPU,它根本不支持分支。在这种情况下,与此问题无关

1 个答案:

答案 0 :(得分:1)

GLSL没有强制执行分支的机制(或强制扁平化分支)。