summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.tesc
blob: 92a2dc28faf0e6f0f906df81ed197a504f86da4e (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#version 440

layout(vertices = 3) out;

layout(location = 4) in VertOut
{
    vec3 v_color;
    int a;
    float b;
}vOut[];

layout(location = 5) out TescOutA {
    vec3 color;
    int id;
}tcOutA[];

layout(location = 10) out TescOutB {
    vec2 some;
    int other[3];
    vec3 variables;
}tcOutB[];

layout(location = 2) patch out TescOutC {
    vec3 stuff;
    float more_stuff;
}tcOutC;

void main()
{
    // tesc builtin outputs
    gl_TessLevelOuter[0] = 1.0;
    gl_TessLevelOuter[1] = 2.0;
    gl_TessLevelOuter[2] = 3.0;
    gl_TessLevelOuter[3] = 4.0;
    gl_TessLevelInner[0] = 5.0;
    gl_TessLevelInner[1] = 6.0;

    gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
    gl_out[gl_InvocationID].gl_PointSize = 10 + gl_InvocationID;
    gl_out[gl_InvocationID].gl_ClipDistance[0] = 20.0 + gl_InvocationID;
    gl_out[gl_InvocationID].gl_ClipDistance[1] = 40.0 + gl_InvocationID;
    gl_out[gl_InvocationID].gl_ClipDistance[2] = 60.0 + gl_InvocationID;
    gl_out[gl_InvocationID].gl_ClipDistance[3] = 80.0 + gl_InvocationID;
    gl_out[gl_InvocationID].gl_ClipDistance[4] = 100.0 + gl_InvocationID;

    // outputs
    tcOutA[gl_InvocationID].color = vOut[gl_InvocationID].v_color;
    tcOutA[gl_InvocationID].id = gl_InvocationID + 91;
    tcOutB[gl_InvocationID].some = vec2(gl_InvocationID, vOut[gl_InvocationID].a);
    tcOutB[gl_InvocationID].other[0] = gl_PrimitiveID + 10;
    tcOutB[gl_InvocationID].other[1] = gl_PrimitiveID + 20;
    tcOutB[gl_InvocationID].other[2] = gl_PrimitiveID + 30;
    tcOutB[gl_InvocationID].variables = vec3(3.0f, vOut[gl_InvocationID].b, 17.0f);
    tcOutC.stuff = vec3(1.0, 2.0, 3.0);
    tcOutC.more_stuff = 4.0;
}