aboutsummaryrefslogtreecommitdiff
path: root/shaders/water.tcs
blob: 22b7a4900e428b509923431401e436f4fd8c26c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
    }
}