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

时间:2018-08-10 07:28:02

标签: opengl glsl shader

最近我有一些

  

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

GLSL顶点着色器的编译过程中出现

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

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

1 个答案:

答案 0 :(得分:1)

对于任何这样的估计,图形硬件简直太多样化了。甚至您看似简单的假设:

  

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

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

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