diff options
Diffstat (limited to 'examples/qt3d/tessellation-modes/shaders/triangles.tes')
-rw-r--r-- | examples/qt3d/tessellation-modes/shaders/triangles.tes | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/examples/qt3d/tessellation-modes/shaders/triangles.tes b/examples/qt3d/tessellation-modes/shaders/triangles.tes new file mode 100644 index 000000000..c833e9587 --- /dev/null +++ b/examples/qt3d/tessellation-modes/shaders/triangles.tes @@ -0,0 +1,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; +} |