summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/tessellation-modes/shaders/triangles.tes
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-03-04 16:05:02 +0100
committerLaszlo Agocs <laszlo.agocs@theqtcompany.com>2015-03-04 15:21:01 +0000
commitc82207d54c76d8b66be010bfa63e45f9507891fa (patch)
tree8d112e96bc1fa42dbc49907f53d71fa5b893869a /examples/qt3d/tessellation-modes/shaders/triangles.tes
parent8bff6813ee2e7a59d27bd8639dc9a6e23287a0c8 (diff)
Move the examples under a qt3d subdir
Modules cannot have their examples in the top-level examples directory because in the pre-built packages all modules' examples are merged together. Change-Id: I80fdbb8f1ec6f3d8fd793e4d856e705000237127 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
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;
+}