blob: c833e95875dc20d05e1207c261ea1df50f994eb5 [file] [log] [blame]
#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;
}