【问题标题】:What's the static flow control in GLSL?GLSL 中的静态流控制是什么?
【发布时间】:2012-08-22 01:37:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: opengl-es glsl flow-control


    【解决方案1】:

    根据 7.9 之前的文本:

    当条件执行依赖于统一变量的值时, 这叫做静态流控制

    因此,您将拥有一个基于制服做出分支决策的着色器。那将是静态流控制。

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

    【讨论】:

    • 请注意,这是特定于硬件的。这就是他们的特定硬件的工作原理。
    • 确实,需要注意的是所有 Apple 设备都使用 PowerVR GPU,因此如果您的目标是 iOS,那么您可以毫无顾虑地针对 PowerVR 进行优化。它们在 Android 领域相当常见,但您也会看到许多 Nvidia Tegras 和 Broadcom 部件的行为可能非常不同。
    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2011-08-13
    • 1970-01-01
    相关资源
    最近更新 更多