Ite*_*tor 5 opengl opengl-es glsl hlsl glsles
我正在研究片段着色器。它可以工作,但仍然需要一些优化。
据我所知,GLSL中的大多数情况分支都是扁平化的,因此两种情况都被执行。我已经消除了大部分 if-else 条件,但其中一些条件必须保持原样,因为这两个分支的执行成本都很高。我知道,在 HLSL 中有一个[branch]针对此问题的关键字。但如何才能解决它呢GLSL?
我的代码如下所示(条件不统一,它们的结果取决于着色器中的计算):
if( condition ) {
expensive calculations...
}
if( condition2 ) {
expensive calculations...
}
if( condition3 ) {
expensive calculations...
}
...
Run Code Online (Sandbox Code Playgroud)
一项“昂贵的计算”可以修改条件所依赖的变量。有可能执行多个计算。
我知道,有些较旧的或移动 GPU 根本不支持分支。在这种情况下,与此问题无关