估计GLSL着色器中所需的寄存器数量

格雷格·K。

最近我要买一些

错误C6020:变量超出常量寄存器限制;编译程序需要超过1024个寄存器

GLSL顶点着色器的编译过程中出现错误,可能是由于统一变量的数量所致,我正在尝试找出一种基于我定义的统一性来估算/计算着色器中所需寄存器数量的方法。是否有任何指导或规则?

例如,我是否正确地假设最大为vec4的变量需要1个寄存器,而mat4需要4个寄存器?为此有任何规定吗?

尼科尔·波拉斯(Nicol Bolas)

图形硬件实在太多样化了,无法进行任何此类估算。甚至您看似简单的假设:

vec4大小的变量需要1个寄存器,而mat4需要4个寄存器?

在许多现代硬件上,这是不正确的。曾经是,但是那是几年前。特别是在谈论单个uniform变量时;编译器可以与他们一起玩各种游戏。

甚至没有一种远程准确的方法来估算一段GLSL代码消耗的此类资源的数量。您可以计算代码使用的统一组件的数量,但这是因为OpenGL会告诉您如何做。除此之外,您无能为力。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章