PDA

View Full Version : Uniform blocks



lexez
09-11-2010, 01:54 AM
Hello!

I'm trying to do some uniform blocks for matricies. Finally made them work, but why is it necessary to declare same uniform block in all shaders, even if only one shader use it? This fragment shader has no use for transformation matricies, but if the block isn't declared, shader can't see named uniforms (they get 0.0 no matter how i initialize them).

#version 330
uniform MatrixBlock
{
uniform mat4 MVmatrix;
uniform mat4 MVPmatrix;
};
uniform vec3 BrickColor;
uniform vec3 MortarColor;
uniform vec2 BrickSize;
uniform vec2 BrickPct;

in vec3 MCposition;
in float LightIntensity;

out vec4 FragColor;

void main()
{
vec3 color;
vec3 position, useBrick;
position = MCposition / BrickSize.xyx;
if (fract(position.y * 0.5) > 0.5)
{
position.x += 0.5;
position.z += 0.5;
}
position = fract(position);
useBrick = step(position, BrickPct.xyx);
color = mix(MortarColor, BrickColor, useBrick.x * useBrick.y * useBrick.z);
color *= LightIntensity;
FragColor = vec4(color, 1.0);
}