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