I am not sure if the problem is actually in my code, but I tested it on nVidia
driver and it worked (but their compiler might have a fix for it internally).
Here is vertex shader:
#version 330
layout(location = 0) in vec4 position;
layout(std140) uniform Matrices {
mat4 model;
mat4 view;
mat4 projection;
} matrices;
out gl_PerVertex {
vec4 gl_Position;
};
/* interpolate to compute normal in fragment shader */
out vec3 v_position;
void main(void)
{
v_position = vec3(matrices.view * matrices.model * position);
gl_Position = matrices.projection * matrices.view * matrices.model *
position;
}
If I use only one matrix from the uniform it works. I have printed UBOs values
and they are just identity matrices.