Bob*_*y-Z 2 opengl shader glsl
假设我有一个非常简单的GLSL顶点着色器:
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
in vec3 position;
in vec3 color;
out vec3 vertexColor;
void main()
{
mat4 mvp = projection * view * model;
vertexColor = color;
gl_Position = mvp * vec4(position, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
变量是否mvp为每个顶点重新计算,或者是否预先计算并存储,直到它取决于变化的统一变量?
某个特定的实现可以缓存该值吗?当然.他们会吗?
我不会认为他们愿意.这种高速缓存很难实现,因为它需要在绘制调用之前根据统一状态评估这些表达式,然后将这些表达式上传到代码中.
如果你有一些从多个统一值计算出来的状态,并且你认为这样的计算会出现性能问题,那么你就是应该计算它的人.