【问题标题】:GLSL: Are dynamically uniform expressions only calculated once?GLSL:动态统一表达式是否只计算一次?
【发布时间】:2014-12-20 01:04:53
【问题描述】:

如果 GLSL 着色器中的某些计算仅依赖于统一变量,则它们可以只计算一次并用于每个顶点/片段。这真的用在硬件上吗?在阅读了 GLSL 规范中的“统一和非统一控制流”后,我得到了这个想法:

https://www.opengl.org/registry/doc/GLSLangSpec.4.40.pdf#page=30&zoom=auto,115.2,615.4

例如,我想知道预先计算投影矩阵和视图矩阵之间是否存在差异。

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

    这取决于驱动程序和它所构建的优化,在direct3D中有一个明确的api。

    例如简单点

    //...
    
    uniform mat4 projection;
    uniform mat4 view;
    uniform mat4 model;
    
    main(){
        gl_position = projection*view*model*pos;
    }
    

    大多数车手将能够对其进行优化以预先计算 MVP 矩阵并将其传递给单个制服。

    这是实现定义的,一些驱动程序比其他驱动程序更擅长内联制服。另一种优化选项是使用内联制服重新编译整个程序并优化未采用的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2010-12-09
      相关资源
      最近更新 更多