123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
#version 150
#extension GL_ARB_shader_image_load_store : enable
#extension GL_ARB_shading_language_420pack : enable
#extension GL_ARB_sample_shading : enable
#define SAMPLER_BINDING(x) layout(binding = x)
#extension GL_ARB_shader_storage_buffer_object : enable
#extension GL_ARB_gpu_shader5 : enable
#define float2 vec2
#define float3 vec3
#define float4 vec4
#define uint2 uvec2
#define uint3 uvec3
#define uint4 uvec4
#define int2 ivec2
#define int3 ivec3
#define int4 ivec4
#define frac fract
#define lerp mix
layout(lines, invocations = 1) in;
layout(triangle_strip, max_vertices = 4) out;
struct Light {
int4 color;
float4 cosatt;
float4 distatt;
float4 pos;
float4 dir;
};
layout(std140, binding = 3) uniform GSBlock {
float4 cstereo;
float4 clinept;
int4 ctexoffset;
};
struct VS_OUTPUT {
float4 pos;
float4 colors_0;
float4 colors_1;
float3 tex0;
float4 clipPos;
};
#define InstanceID gl_InvocationID
in VertexData {
centroid float4 pos;
centroid float4 colors_0;
centroid float4 colors_1;
centroid float3 tex0;
centroid float4 clipPos;
} vs[2];
out VertexData {
centroid float4 pos;
centroid float4 colors_0;
centroid float4 colors_1;
centroid float3 tex0;
centroid float4 clipPos;
} ps;
void main()
{
VS_OUTPUT start, end;
start.pos = vs[0].pos;
start.colors_0 = vs[0].colors_0;
start.colors_1 = vs[0].colors_1;
start.tex0 = vs[0].tex0;
start.clipPos = vs[0].clipPos;
end.pos = vs[1].pos;
end.colors_0 = vs[1].colors_0;
end.colors_1 = vs[1].colors_1;
end.tex0 = vs[1].tex0;
end.clipPos = vs[1].clipPos;
float2 offset;
float2 to = abs(end.pos.xy / end.pos.w - start.pos.xy / start.pos.w);
if (clinept.y * to.y > clinept.x * to.x) {
offset = float2(clinept.z / clinept.x, 0);
} else {
offset = float2(0, -clinept.z / clinept.y);
}
for (int i = 0; i < 2; ++i) {
VS_OUTPUT f;
f.pos = vs[i].pos;
f.colors_0 = vs[i].colors_0;
f.colors_1 = vs[i].colors_1;
f.tex0 = vs[i].tex0;
f.clipPos = vs[i].clipPos;
VS_OUTPUT l = f;
VS_OUTPUT r = f;
l.pos.xy -= offset * l.pos.w;
r.pos.xy += offset * r.pos.w;
if (ctexoffset[2] != 0) {
float texOffset = 1.0 / float(ctexoffset[2]);
if (((ctexoffset[0] >> 0) & 0x1) != 0)
r.tex0.x += texOffset;
if (((ctexoffset[0] >> 1) & 0x1) != 0)
r.tex1.x += texOffset;
if (((ctexoffset[0] >> 2) & 0x1) != 0)
r.tex2.x += texOffset;
if (((ctexoffset[0] >> 3) & 0x1) != 0)
r.tex3.x += texOffset;
if (((ctexoffset[0] >> 4) & 0x1) != 0)
r.tex4.x += texOffset;
if (((ctexoffset[0] >> 5) & 0x1) != 0)
r.tex5.x += texOffset;
}
gl_Position = l.pos;
ps.pos = l.pos;
ps.colors_0 = l.colors_0;
ps.colors_1 = l.colors_1;
ps.tex0 = l.tex0;
ps.clipPos = l.clipPos;
EmitVertex();
gl_Position = r.pos;
ps.pos = r.pos;
ps.colors_0 = r.colors_0;
ps.colors_1 = r.colors_1;
ps.tex0 = r.tex0;
ps.clipPos = r.clipPos;
EmitVertex();
}
EndPrimitive();
}
0(100) : error C1009: "tex1" is not member of struct "VS_OUTPUT"
0(102) : error C1009: "tex2" is not member of struct "VS_OUTPUT"
0(104) : error C1009: "tex3" is not member of struct "VS_OUTPUT"
0(106) : error C1009: "tex4" is not member of struct "VS_OUTPUT"
0(108) : error C1009: "tex5" is not member of struct "VS_OUTPUT"