RetroArch/deps/SPIRV-Cross/shaders-msl/tesc/arrayed-block-io.multi-patch.tesc

65 lines
1.3 KiB
GLSL

#version 310 es
#extension GL_EXT_tessellation_shader : require
layout(vertices = 5) out;
layout(location = 0) patch out highp vec2 in_te_positionScale;
layout(location = 1) patch out highp vec2 in_te_positionOffset;
struct S
{
highp int x;
highp vec4 y;
highp float z[2];
};
layout(location = 2) patch out TheBlock
{
highp float blockFa[3];
S blockSa[2];
highp float blockF;
} tcBlock[2];
layout(location = 0) in highp float in_tc_attr[];
void main (void)
{
{
highp float v = 1.3;
// Assign values to output tcBlock
for (int i0 = 0; i0 < 2; ++i0)
{
for (int i1 = 0; i1 < 3; ++i1)
{
tcBlock[i0].blockFa[i1] = v;
v += 0.4;
}
for (int i1 = 0; i1 < 2; ++i1)
{
tcBlock[i0].blockSa[i1].x = int(v);
v += 0.4;
tcBlock[i0].blockSa[i1].y = vec4(v, v+0.8, v+1.6, v+2.4);
v += 0.4;
for (int i2 = 0; i2 < 2; ++i2)
{
tcBlock[i0].blockSa[i1].z[i2] = v;
v += 0.4;
}
}
tcBlock[i0].blockF = v;
v += 0.4;
}
}
gl_TessLevelInner[0] = in_tc_attr[0];
gl_TessLevelInner[1] = in_tc_attr[1];
gl_TessLevelOuter[0] = in_tc_attr[2];
gl_TessLevelOuter[1] = in_tc_attr[3];
gl_TessLevelOuter[2] = in_tc_attr[4];
gl_TessLevelOuter[3] = in_tc_attr[5];
in_te_positionScale = vec2(in_tc_attr[6], in_tc_attr[7]);
in_te_positionOffset = vec2(in_tc_attr[8], in_tc_attr[9]);
}