1#version 450
2layout(vertices = 3) out;
3
4struct VertexOutput
5{
6    vec4 pos;
7    vec2 uv;
8};
9
10struct HSOut
11{
12    vec4 pos;
13    vec2 uv;
14};
15
16struct HSConstantOut
17{
18    float EdgeTess[3];
19    float InsideTess;
20};
21
22struct VertexOutput_1
23{
24    vec2 uv;
25};
26
27struct HSOut_1
28{
29    vec2 uv;
30};
31
32layout(location = 0) in VertexOutput_1 p[];
33layout(location = 0) out HSOut_1 _entryPointOutput[3];
34
35HSOut _hs_main(VertexOutput p_1[3], uint i)
36{
37    HSOut _output;
38    _output.pos = p_1[i].pos;
39    _output.uv = p_1[i].uv;
40    return _output;
41}
42
43HSConstantOut PatchHS(VertexOutput _patch[3])
44{
45    HSConstantOut _output;
46    _output.EdgeTess[0] = (vec2(1.0) + _patch[0].uv).x;
47    _output.EdgeTess[1] = (vec2(1.0) + _patch[0].uv).x;
48    _output.EdgeTess[2] = (vec2(1.0) + _patch[0].uv).x;
49    _output.InsideTess = (vec2(1.0) + _patch[0].uv).x;
50    return _output;
51}
52
53void main()
54{
55    VertexOutput p_1[3];
56    p_1[0].pos = gl_in[0].gl_Position;
57    p_1[0].uv = p[0].uv;
58    p_1[1].pos = gl_in[1].gl_Position;
59    p_1[1].uv = p[1].uv;
60    p_1[2].pos = gl_in[2].gl_Position;
61    p_1[2].uv = p[2].uv;
62    uint i = gl_InvocationID;
63    VertexOutput param[3] = p_1;
64    uint param_1 = i;
65    HSOut flattenTemp = _hs_main(param, param_1);
66    gl_out[gl_InvocationID].gl_Position = flattenTemp.pos;
67    _entryPointOutput[gl_InvocationID].uv = flattenTemp.uv;
68    barrier();
69    if (int(gl_InvocationID) == 0)
70    {
71        VertexOutput param_2[3] = p_1;
72        HSConstantOut _patchConstantResult = PatchHS(param_2);
73        gl_TessLevelOuter[0] = _patchConstantResult.EdgeTess[0];
74        gl_TessLevelOuter[1] = _patchConstantResult.EdgeTess[1];
75        gl_TessLevelOuter[2] = _patchConstantResult.EdgeTess[2];
76        gl_TessLevelInner[0] = _patchConstantResult.InsideTess;
77    }
78}
79
80