mirror of
https://github.com/libretro/RetroArch
synced 2025-02-01 00:32:46 +00:00
65 lines
1.3 KiB
GLSL
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]);
|
|
}
|