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
29
30
31
32
33
34
35
36
37
38
39
40
#version 430
layout (vertices = 3) out;

uniform int R;

struct TriData
{
	vec2 cornerTexCoords[3];
	vec2 edgeTexCoords[3];
	uint cPtr;
};

layout(std430, binding = 0) buffer triData
{
    TriData tris[];
};

out TCS_OUT
{
	vec2 pos;
} vertex[];

patch out uint triId;

void main(void)
{
	int triIdx = gl_PrimitiveID;
	int vIdx = gl_InvocationID;

	TriData tri = tris[triIdx];
	vertex[gl_InvocationID].pos = tri.cornerTexCoords[gl_InvocationID];
	
	triId = triIdx;

	gl_TessLevelOuter[0] = R; 
	gl_TessLevelOuter[1] = R; 
	gl_TessLevelOuter[2] = R; 

	gl_TessLevelInner[0] = R; 
}