1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#version 400 core
layout( triangles, fractional_even_spacing, ccw ) in;
out EyeSpaceVertex {
vec3 position;
vec3 normal;
} te_out;
uniform mat4 modelViewMatrix;
uniform mat3 normalMatrix;
uniform mat4 projectionMatrix;
uniform mat4 mvp;
void main()
{
float u = gl_TessCoord.x;
float v = gl_TessCoord.y;
float w = gl_TessCoord.z;
vec4 p0 = gl_in[0].gl_Position;
vec4 p1 = gl_in[1].gl_Position;
vec4 p2 = gl_in[2].gl_Position;
// Linearly interpolate to the vertex position using the
// (u,v) barycentric coords
vec4 pos = (u * p0)
+ (v * p1)
+ (w * p2);
// Transform to eye space (for lighting calcs)
te_out.position = vec3( modelViewMatrix * pos );
// Assume normal points along z
te_out.normal = normalize( normalMatrix * vec3( 0.0, 0.0, 1.0 ) );
// Transform to clip-space
gl_Position = mvp * pos;
}
|