uniform mat4 ModelMatrix;
uniform mat4 ViewMatrix;
uniform mat4 ProjectionMatrix;
// our vertices - defined in object space
in vec4 Position;
void main()
{
vec4 WorldSpaceVec = vec4(1.0, 1.0, 1.0, 1.0);
vec4 WorldSpacePos = ModelMatrix * Position;
// good - substract vectors from the same space
vec4 WorldSpaceDiff = WorldSpaceVec - WorldSpacePos;
vec4 EyeSpacePos = ViewMatrix * WorldSpacePos;
// bad - substract world-space vector from eye-space vector
vec4 WTFVec = EyeSpacePos - WorldSpaceDiff;
vec4 ClipSpacePos = ProjectionMatrix * EyeSpacePos;
vec4 NormalizedDeviceCoordinates = ClipSpacePos / ClipSpacePos.w;
}