To see your stuff show here, enable Compatibility Server Reports in PPSSPP.
Click on a version, game, or report message to show similar entries. Hover over version to see platform info, and hover over a game title to see region and version info.
| Game title |
Version |
Latest Report |
Message |
| eFootball RB - V. |
v1.9.4 |
2026-04-05 |
Unknown GE command : fcf102d7 |
| eFootball RB - V. |
v1.9.4 |
2026-04-05 |
CALL to illegal address 001b8420 - ignoring! data=1b8422 |
| EA-Sports FC Lop-Play |
v1.7.5 |
2026-04-05 |
Unknown GetPointer 0000001b PC 08872bb4 LR 08872c1c |
| Seen in Liberty City |
v1.20.3 |
2026-04-05 |
sceKernelLoadModuleByID: unsupported options size=00000014, flags=089d5494, pos=0, access=1, data=2, text=2 |
| Seen in Liberty City |
v1.20.3 |
2026-04-05 |
Unexpected mpeg first timestamp: 0 / 0 |
| Seen in Liberty City |
v1.20.3 |
2026-04-05 |
sceKernelLoadModuleByID: unsupported options size=00000014, flags=08aa3278, pos=0, access=1, data=1, text=1 |
| Seen in Liberty City |
v1.20.3 |
2026-04-05 |
sceKernelLoadModuleByID: unsupported options size=00000014, flags=00000000, pos=0, access=1, data=1, text=1 |
| Seen in Liberty City |
v1.20.3 |
2026-04-05 |
sceKernelLoadModuleByID: unsupported options size=00000014, flags=00000137, pos=0, access=1, data=2, text=2 |
| Resistance: Retribution™ |
v1.19.3 |
2026-04-05 |
Could not setup streams, unexpected stream count: 16583 |
| Resistance: Retribution™ |
v1.19.3 |
2026-04-05 |
Unexpected mpeg first timestamp: 100000444b / 68719494219 |
| EA FC 2024 BY SPARTAN JR 11 |
v1.17.1 |
2026-04-05 |
Unknown GetPointer 00000020 PC 08815fcc LR 08815fd4 |
| Pro Evolution Soccer 2014 |
v1.16.6 |
2026-04-05 |
Unknown GetPointer 00000002 PC 0884a920 LR 0884a928 |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041ea600, src=08e5bb50, size=4096): overlapping read |
| Medal of Honor Heroes™ 2 |
v1.10.1 |
2026-04-05 |
sceKernelCreateSema(SNDMUTEX) unsupported options parameter, size = 145634952 |
| Medal of Honor Heroes™ 2 |
v1.10.1 |
2026-04-05 |
sceKernelCreateSema(SNDMUTEX) unsupported options parameter, size = 145543488 |
| Medal of Honor Heroes™ 2 |
v1.10.1 |
2026-04-05 |
sceKernelCreateSema(RealMutex) unsupported options parameter, size = 143963980 |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041ea600, src=08e3e5b0, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041f7600, src=08d9f1d0, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041fe600, src=08d9cd70, size=2048): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041a7900, src=08d7ba70, size=2048): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041a7900, src=08f21570, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=0417f900, src=08f09b90, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=0417f900, src=08f09b90, size=8192): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=0417f900, src=08f0ab90, size=8192): overlapping read |
| Grand Theft Auto®: Chinatown Wars™ |
v1.16.6 |
2026-04-05 |
Error in shader compilation: info: 0:1: F0002: Mali-400 GP register allocation failed for vertex shader.
Please contact [email protected] with the shader causing
the problem, along with this error message.
Mali online shader compiler r8p0-01rel0 [Revision 96995].
01f35551:00000921 HWX T LM Light: 0: c:1 t:0 1: c:1 t:1 2: c:1 t:1 3: c:1 t:1 MatUp:3 Cull
#version 100
// Driver: Mali-450 MP - GLSL 100
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01f35551:00000921 HWX T LM Light: 0: c:1 t:0 1: c:1 t:1 2: c:1 t:1 3: c:1 t:1 MatUp:3 Cull
attribute vec3 position;
attribute vec2 texcoord;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform vec3 u_lightpos0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform lowp vec3 u_lightspecular0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform lowp vec3 u_lightspecular1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec3 u_lightspecular2;
uniform vec3 u_lightpos3;
uniform mediump vec3 u_lightatt3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
uniform lowp vec3 u_lightspecular3;
uniform lowp vec4 u_ambient;
uniform lowp vec3 u_matdiffuse;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec2 u_fogcoef;
uniform highp vec4 u_depthRange;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
varying lowp vec4 v_color0;
varying lowp vec3 v_color1;
varying mediump vec3 v_texcoord;
varying mediump float v_fogdepth;
vec3 normalizeOr001(vec3 v) {
return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
}
void main() {
vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
mediump vec3 worldnormal = normalizeOr001(mul(vec4(0.0, 0.0, 1.0, 0.0), u_world).xyz);
vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
vec4 outPos = mul(u_proj, viewPos);
vec4 ambientColor = u_matambientalpha;
vec3 diffuseColor = u_matdiffuse.rgb;
vec3 specularColor = u_matspecular.rgb;
lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
lowp vec3 lightSum1 = splat3(0.0);
vec3 toLight;
lowp vec3 diffuse;
float distance;
lowp float lightScale;
mediump float ldot;
toLight = u_lightpos0;
ldot = dot(toLight, worldnormal);
diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
if (ldot >= 0.0) {
if (u_matspecular.a > 0.0) {
ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
ldot = pow(max(ldot, 0.0), u_matspecular.a);
} else {
ldot = 1.0;
}
if (ldot > 0.0)
lightSum1 += u_lightspecular0 * specularColor * ldot ;
}
lightSum0.rgb += (u_lightambient0 * ambientColor.rgb + diffuse);
toLight = u_lightpos1 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt1, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse1 * diffuseColor) * max(ldot, 0.0);
if (ldot >= 0.0) {
if (u_matspecular.a > 0.0) {
ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
ldot = pow(max(ldot, 0.0), u_matspecular.a);
} else {
ldot = 1.0;
}
if (ldot > 0.0)
lightSum1 += u_lightspecular1 * specularColor * ldot * lightScale;
}
lightSum0.rgb += (u_lightambient1 * ambientColor.rgb + diffuse) * lightScale;
toLight = u_lightpos2 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt2, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse2 * diffuseColor) * max(ldot, 0.0);
if (ldot >= 0.0) {
if (u_matspecular.a > 0.0) {
ldot = dot(normalize(toLight + vec3( |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041bc900, src=08e99090, size=4096): overlapping read |
| Tom Clancy's Ghost Recon® Predator |
v1.20.3 |
2026-04-05 |
__KernelStopThread: thread 469 does not exist (helper deleted) |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=04191900, src=08de1d30, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=0419d900, src=08e796b0, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=040ed400, src=08db6430, size=2048): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=0419d900, src=08de1d30, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041e4900, src=08de8d50, size=4096): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041f1900, src=08d8e7b0, size=8192): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041f1900, src=08d8e7b0, size=4096): overlapping read |
| FIFA 07 |
v1.19.3 |
2026-04-05 |
__KernelStopThread: thread 497 does not exist (ApctlThread stopped) |
| FIFA 07 |
v1.19.3 |
2026-04-05 |
__KernelStopThread: thread 497 does not exist (ApctlThread deleted) |
| はじめの一歩 PORTABLE VICTORIOUS SPIRITS |
v1.18.1 |
2026-04-05 |
sceDmacMemcpy(dest=0955c8d0, src=0954c8d0, size=65536): overlapping read |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d1b0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d0c0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 022b10e0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0229d520 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d37990 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d0a0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d080 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d060 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d040 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d37450 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d371c0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d37000 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d36d60 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d36ad0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d365c0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d36400 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d36240 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d35fb0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d020 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d000 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cfd0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cfb0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d620 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cdd0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cd10 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d520 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cc60 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cbe0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34f90 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34b60 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34600 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34530 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34360 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34290 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d341c0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d340f0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d34020 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d33e20 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d33890 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219cb30 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219ca30 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219c9f0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0229e800 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219c910 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219c880 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 02d32df0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219c860 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d3c0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219db50 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0219d7d0 |
| NEED FOR SPEED™ MOST WANTED 5-1-0 |
v1.11.3 |
2026-04-05 |
Jump to invalid address: 0229fdd0 |
| Avatar: The Last Airbender |
v1.5.4 |
2026-04-05 |
sceDmacMemcpy(dest=041c1a00, src=08f63e70, size=512): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041ea900, src=08e4b370, size=2048): overlapping read |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041f3900, src=08d5ed90, size=2048): overlapping read |
| Killzone™: Liberation |
v1.17.1 |
2026-04-05 |
sceDmacMemcpy(dest=04110000, src=095933e0, size=1024): overlapping read |
| MYFP26 ENGLISH |
v1.18.1 |
2026-04-05 |
Savedata version requested: 3 |
| FIFA 06 |
v1.19.3 |
2026-04-05 |
__KernelStopThread: thread 965 does not exist (ApctlThread deleted) |
| FIFA 06 |
v1.19.3 |
2026-04-05 |
__KernelStopThread: thread 965 does not exist (ApctlThread stopped) |
| EA-Sports FC Lop-Play |
v1.8.0 |
2026-04-05 |
ReadFromHardware: Invalid address ec094b38 near PC ec094b38 LR 08000018 |
| eFootball RB - V. |
v1.9.4 |
2026-04-05 |
Unknown GetPointer 00000020 PC 0884d7b4 LR 0884d7d4 |
| イース -フェルガナの誓い- |
v1.4.2-425-g7a7ccee5e |
2026-04-05 |
sceDmacMemcpy(dest=041cc900, src=08d54470, size=8192): overlapping read |
| WWE'12 |
v1.11.3 |
2026-04-05 |
sceDmacMemcpy(dest=041725c0, src=09552f80, size=65552): overlapping read |
| EA-Sports FC PC-V |
v1.20.3 |
2026-04-05 |
Error in shader compilation: info: 0:119: L0002: Undeclared variable 't'
0:119: L0001: Expected token '}', found 'end of file'
0:119: L0001: Expected token '}', found 'end of file'
0:119: L0001: Expected token '}', found 'end of file'
01000000:80000b20 HWX T N Light: LightUberShader Cull
#version 320 es
// Driver: Mali-T820 - GLSL 320
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01000000:80000b20 HWX T N Light: LightUberShader Cull
in vec3 position;
in mediump vec3 normal;
in vec2 texcoord;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform uint u_lightControl;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform mediump vec3 u_lightdir0;
uniform mediump vec2 u_lightangle_spotCoef0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform lowp vec3 u_lightspecular0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform mediump vec3 u_lightdir1;
uniform mediump vec2 u_lightangle_spotCoef1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform lowp vec3 u_lightspecular1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform mediump vec3 u_lightdir2;
uniform mediump vec2 u_lightangle_spotCoef2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec3 u_lightspecular2;
uniform vec3 u_lightpos3;
uniform mediump vec3 u_lightatt3;
uniform mediump vec3 u_lightdir3;
uniform mediump vec2 u_lightangle_spotCoef3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
uniform lowp vec3 u_lightspecular3;
uniform lowp vec4 u_ambient;
uniform lowp vec3 u_matdiffuse;
uniform lowp vec4 u_matspecular;
uniform lowp vec3 u_matemissive;
uniform lowp vec4 u_matambientalpha;
uniform highp vec2 u_fogcoef;
uniform highp vec4 u_depthRange;
uniform highp vec4 u_cullRangeMin;
uniform highp vec4 u_cullRangeMax;
out lowp vec4 v_color0;
out mediump vec3 v_texcoord;
out mediump float v_fogdepth;
vec3 normalizeOr001(vec3 v) {
return length(v) == 0.0 ? vec3(0.0, 0.0, 1.0) : normalize(v);
}
void main() {
vec3 worldpos = mul(vec4(position, 1.0), u_world).xyz;
mediump vec3 worldnormal = normalizeOr001(mul(vec4(normal, 0.0), u_world).xyz);
vec4 viewPos = vec4(mul(vec4(worldpos, 1.0), u_view).xyz, 1.0);
vec4 outPos = mul(u_proj, viewPos);
vec4 ambientColor = u_matambientalpha;
vec3 diffuseColor = u_matdiffuse.rgb;
vec3 specularColor = u_matspecular.rgb;
lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
lowp vec3 lightSum1 = splat3(0.0);
vec3 toLight;
lowp vec3 diffuse;
float distance;
lowp float lightScale;
mediump float ldot;
lowp float angle;
uint comp; uint type; float attenuation;
if ((u_lightControl & 0x1u) != 0x0u) {
comp = (u_lightControl >> 0x04u) & 0x3u;
type = (u_lightControl >> 0x06u) & 0x3u;
toLight = u_lightpos0;
if (type != 0x0u) {
toLight -= worldpos;
distance = length(toLight);
toLight /= distance;
attenuation = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
if (type == 0x01u) {
lightScale = attenuation;
} else {
angle = dot(u_lightdir0, toLight);
if (angle >= u_lightangle_spotCoef0.x) {
lightScale = attenuation * (u_lightangle_spotCoef0.y <= 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef0.y));
} else {
lightScale = 0.0;
}
}
} else {
lightScale = 1.0;
}
ldot = dot(toLight, worldnormal);
if (comp == 0x2u) {
ldot = u_matspecular.a > 0.0 ? pow(max(ldot, 0.0), u_matspecular.a) : 1.0;
}
diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
if (comp == 0x1u && ldot >= 0.0) {
if (u_matspecular.a > 0.0) {
ldot = dot(normalize(toLight + vec3(0.0, 0.0, 1.0)), worldnormal);
ldot = pow(max(ldot, 0.0), u_matspecular.a);
} else {
ldot = 1.0;
}
lightSum1 += u_lightspecular0 * specularColor * ldot * ligh |