aboutsummaryrefslogtreecommitdiff
path: root/shaders/water.tcs
diff options
context:
space:
mode:
Diffstat (limited to 'shaders/water.tcs')
-rw-r--r--shaders/water.tcs28
1 files changed, 28 insertions, 0 deletions
diff --git a/shaders/water.tcs b/shaders/water.tcs
new file mode 100644
index 0000000..22b7a49
--- /dev/null
+++ b/shaders/water.tcs
@@ -0,0 +1,28 @@
+#version 430
+
+// number of CPs in patch
+layout (vertices = 4) out;
+
+// from VS (use empty modifier [] so we can say anything)
+in vec3 controlpoint[];
+
+// to evluation shader. will be used to guide positioning of generated points
+out vec3 evaluationpoint[];
+
+float tessLevelInner = 30.0; // controlled by keyboard buttons
+float tessLevelOuter = 30.0; // controlled by keyboard buttons
+
+void main () {
+ evaluationpoint[gl_InvocationID] = controlpoint[gl_InvocationID];
+
+ // Calculate the tessellation levels
+
+ if ( gl_InvocationID == 0 ) {
+ gl_TessLevelInner[0] = tessLevelInner; // number of nested primitives to generate
+ gl_TessLevelInner[1] = tessLevelInner; // number of nested primitives to generate
+ gl_TessLevelOuter[0] = tessLevelOuter; // times to subdivide first side
+ gl_TessLevelOuter[1] = tessLevelOuter; // times to subdivide second side
+ gl_TessLevelOuter[2] = tessLevelOuter; // times to subdivide second side
+ gl_TessLevelOuter[3] = tessLevelOuter; // times to subdivide second side
+ }
+}