Professional Documents
Culture Documents
#define ATTRIBUTE_LOCATION(x)
#define FRAGMENT_OUTPUT_LOCATION(x)
#define FRAGMENT_OUTPUT_LOCATION_INDEXED(x, y)
#define UBO_BINDING(packing, x) layout(packing, binding = x)
#define SAMPLER_BINDING(x) layout(binding = x)
#define TEXEL_BUFFER_BINDING(x) layout(binding = x)
#define SSBO_BINDING(x) layout(std430, binding = x)
#define IMAGE_BINDING(format, x) layout(format, binding = x)
#define VARYING_LOCATION(x)
#version 320 es
#define ATTRIBUTE_LOCATION(x)
#define FRAGMENT_OUTPUT_LOCATION(x)
#define FRAGMENT_OUTPUT_LOCATION_INDEXED(x, y)
#define UBO_BINDING(packing, x) layout(packing, binding = x)
#define SAMPLER_BINDING(x) layout(binding = x)
#define TEXEL_BUFFER_BINDING(x) layout(binding = x)
#define SSBO_BINDING(x) layout(std430, binding = x)
#define IMAGE_BINDING(format, x) layout(format, binding = x)
#define VARYING_LOCATION(x)
// TEV stage 0
// indirect op
int2 indtevtrans0 = int2(0, 0);
wrappedcoord.x = fixpoint_uv0.x;
wrappedcoord.y = fixpoint_uv0.y;
tevcoord.xy = wrappedcoord + indtevtrans0;
tevcoord.xy = (tevcoord.xy << 8) >> 8;
rastemp = iround(col0 * 255.0).rgba;
textemp = sampleTextureWrapper(0u, tevcoord.xy, layer).rgba;
konsttemp = int4(k[0].rgb, k[0].a);
tevin_a = int4(konsttemp.rgb, 0)&int4(255, 255, 255, 255);
tevin_b = int4(rastemp.rgb, 0)&int4(255, 255, 255, 255);
tevin_c = int4(rastemp.rgb, 0)&int4(255, 255, 255, 255);
tevin_d = int4(c0.rgb, 0);
// color combine
prev.rgb = clamp((((tevin_d.rgb - 128) << 2) + (((((tevin_a.rgb<<8) +
(tevin_b.rgb-tevin_a.rgb)*(tevin_c.rgb+(tevin_c.rgb>>7))) << 2) + 128)>>8)),
int3(0,0,0), int3(255,255,255));
// alpha combine
prev.a = clamp((((tevin_d.a)) - (((((tevin_a.a<<8) + (tevin_b.a-
tevin_a.a)*(tevin_c.a+(tevin_c.a>>7)))) + 127)>>8)), 0, 255);
// TEV stage 1
// indirect op
int2 indtevtrans1 = int2(0, 0);
wrappedcoord.x = fixpoint_uv0.x;
wrappedcoord.y = fixpoint_uv0.y;
tevcoord.xy = wrappedcoord + indtevtrans1;
tevcoord.xy = (tevcoord.xy << 8) >> 8;
textemp = sampleTextureWrapper(0u, tevcoord.xy, layer).rgba;
konsttemp = int4(k[1].rgb, k[0].a);
tevin_a = int4(konsttemp.rgb, textemp.a)&int4(255, 255, 255, 255);
tevin_b = int4(c1.rgb, 0)&int4(255, 255, 255, 255);
tevin_c = int4(prev.rgb, 0)&int4(255, 255, 255, 255);
tevin_d = int4(textemp.rgb, 0);
// color combine
prev.rgb = clamp((((tevin_d.rgb)) + (((((tevin_a.rgb<<8) + (tevin_b.rgb-
tevin_a.rgb)*(tevin_c.rgb+(tevin_c.rgb>>7)))) + 128)>>8)), int3(0,0,0),
int3(255,255,255));
// alpha combine
prev.a = clamp((((tevin_d.a)) + (((((tevin_a.a<<8) + (tevin_b.a-
tevin_a.a)*(tevin_c.a+(tevin_c.a>>7)))) + 128)>>8)), 0, 255);
prev = prev & 255;
// Hardware testing indicates that an alpha of 1 can pass an alpha test,
// but doesn't do anything in blending
if (prev.a == 1) prev.a = 0;
int zCoord = czbias[1].x + int((clipPos.z / clipPos.w) * float(czbias[1].y));
zCoord = clamp(zCoord, 0, 0xFFFFFF);
depth = float(zCoord) / 16777216.0;
float ze = (cfogf.x * 16777216.0) / float(cfogi.y - (zCoord >> cfogi.w));
float offset = (2.0 * (rawpos.x / cfogf.w)) - 1.0 - cfogf.z;
float floatindex = clamp(9.0 - abs(offset) * 9.0, 0.0, 9.0);
uint indexlower = uint(floatindex);
uint indexupper = indexlower + 1u;
float klower = cfogrange[indexlower >> 2u][indexlower & 3u];
float kupper = cfogrange[indexupper >> 2u][indexupper & 3u];
float k = lerp(klower, kupper, frac(floatindex));
float x_adjust = sqrt(offset * offset + k * k) / k;
ze *= x_adjust;
float fog = clamp(ze - cfogf.y, 0.0, 1.0);
int ifog = iround(fog * 256.0);
prev.rgb = (prev.rgb * (256 - ifog) + cfogcolor.rgb * ifog) >> 8;
ocol0.rgb = float3(prev.rgb) / 255.0;
ocol0.a = float(prev.a >> 2) / 63.0;
ocol1 = float4(0.0, 0.0, 0.0, float(prev.a) / 255.0);
}