summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/tessellation-modes/shaders/triangles.tes
diff options
context:
space:
mode:
Diffstat (limited to 'examples/qt3d/tessellation-modes/shaders/triangles.tes')
-rw-r--r--examples/qt3d/tessellation-modes/shaders/triangles.tes39
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;
+}