GLSL中的静态流量控制是什么?

时间:2012-08-22 01:37:07

标签: opengl-es glsl flow-control

PowerVR documentation from Imagination说有静态流量控制。 (7.9 Flow Contro)

什么是静态流量控制?它是否意味着像#if...#endif这样的编译器预处理器?他们说,

Static flow control can be used to combine many shaders into one big shader.

这是什么意思?我可以从一个源实例化多种着色器变体吗?

1 个答案:

答案 0 :(得分:4)

根据7.9中的文字:

  

当条件执行取决于统一变量的值时,   这称为静态流量控制

所以你有一个着色器根据制服做出分支决定。那将是静态流量控制。

他们试图告诉你的是,设置制服可以动态重新编程着色器 - 编译后的代码将使用新的统一值进行修补,而不是每次着色器运行时都会查找这些值。因此,在着色器中访问制服的成本与使用常量相同,并且在着色器外设置制服的成本可能比您猜测的要高。