summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/clip-planes-qml/phong-clip.vert
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire350@gmail.com>2015-07-19 18:17:02 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-07-29 06:09:04 +0000
commite87187e9a0d6acb18c874ac27fc565bda1d51e6e (patch)
tree7db52a6e93c778f2683c4e9a18455a74960cc7e5 /examples/qt3d/clip-planes-qml/phong-clip.vert
parentf05c1d69e415187b32bfc419d89cbd38265f9de0 (diff)
clip-planes-qml examples
Demonstrates use of: -StencilOp / StencilTest -StateSet and nested StateSet -ClipPlane -Multiple render passes with different shaders -Use of layers Change-Id: I2d3f87e99e1fdbf9ed22e81838d6cc1744b6b8c1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'examples/qt3d/clip-planes-qml/phong-clip.vert')
-rw-r--r--examples/qt3d/clip-planes-qml/phong-clip.vert38
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/qt3d/clip-planes-qml/phong-clip.vert b/examples/qt3d/clip-planes-qml/phong-clip.vert
new file mode 100644
index 000000000..95b83bf75
--- /dev/null
+++ b/examples/qt3d/clip-planes-qml/phong-clip.vert
@@ -0,0 +1,38 @@
+#version 150 core
+
+in vec3 vertexPosition;
+in vec3 vertexNormal;
+
+out VertexData {
+ vec3 position;
+ vec3 normal;
+} v_out;
+
+struct Section {
+ vec4 equation;
+ vec3 center;
+};
+
+struct SectionsData {
+ int sectionsCount;
+ Section sections[8];
+};
+
+uniform SectionsData sectionsData;
+uniform mat4 modelView;
+uniform mat4 modelMatrix;
+uniform mat3 modelViewNormal;
+uniform mat4 mvp;
+
+void main()
+{
+ v_out.normal = normalize( modelViewNormal * vertexNormal );
+ v_out.position = vec4(modelView * vec4( vertexPosition, 1.0 )).xyz;
+ vec3 worldPos = vec4(modelMatrix * vec4(vertexPosition, 1.0)).xyz;
+
+ for (int i = 0; i < sectionsData.sectionsCount; ++i) {
+ gl_ClipDistance[i] = dot(vec4(worldPos, 1.0), sectionsData.sections[i].equation);
+ }
+
+ gl_Position = mvp * vec4( vertexPosition, 1.0 );
+}