layout (location=0) in vec3 a_co; layout (location=1) in vec3 a_norm; layout (location=2) in vec4 a_colour; layout (location=3) in vec2 a_uv; #line 2 0 uniform mat4 uPv; uniform mat4x3 uMdl; uniform float uOpacity; out vec4 aColour; out vec2 aUv; out vec3 aNorm; out vec3 aCo; out float aOpacity; void main() { vec3 world_pos = uMdl * vec4(a_co,1.0); gl_Position = uPv * vec4(world_pos,1.0); aColour = a_colour; aUv = a_uv; aNorm = mat3(uMdl) * a_norm; aCo = a_co; aOpacity = 1.0-(gl_Position.y+0.5)*uOpacity; }