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 |
Hits |
Message |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 704001ae |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 704554ae |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d115e279 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 7811e16e |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10aeb15 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10af12d |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d009e0ac |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 70403ead |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10ae81d |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction ee09e0ad |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 703fd9ae |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d115e1b9 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 704034ad |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 7811e216 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10ae985 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 7811e12e |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10ae4d5 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10ae4fd |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
2 |
Branch in branch delay slot at 0801041c with different target |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
WriteToHardware: Invalid address dead9f9b near PC 08000410 LR 08000020 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10af17d |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
4 |
MIPSCompileOp: Invalid instruction 7811e0ee |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10aecf5 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction ed09e0ad |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10ae7f5 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10aea25 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10aefc5 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
11 |
MIPSCompileOp: Invalid instruction 7811e8ae |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d115e179 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
19 |
MIPSCompileOp: Invalid instruction ee09e0ae |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 7811e22e |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10af155 |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction d10aeb3d |
| eFootball Euro y Copa America By T. Bendezu |
v1.18.1 |
2025-01-20 |
11 |
MIPSCompileOp: Invalid instruction 700bedae |
| Midnight Club: L.A. Remix® |
v1.18.1 |
2025-03-04 |
2 |
80630011=sceAtracSetDataAndGetID(08c9d8c0, 00006dcc): no data chunk |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 4659bc00 |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 00008581 |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 4631c714 |
| eFootball 2025 |
v1.18.1 |
2025-02-06 |
4 |
MIPSCompileOp: Invalid instruction 00000301 |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 000001c1 |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 00000041 |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 42bffffb |
| eFootball 2025 |
v1.18.1 |
2025-02-05 |
6 |
MIPSCompileOp: Invalid instruction 46554800 |
| eFootball 2025 |
v1.18.1 |
2025-01-20 |
4 |
MIPSCompileOp: Invalid instruction 0000ffff |
| God of War®: Ghost of Sparta |
v1.18.1 |
2025-01-20 |
1 |
WriteToHardware: Invalid address 00000367 near PC 08a8873c LR 08a880cc |
| MONSTER HUNTER PORTABLE 3rd |
v1.18.1 |
2025-01-23 |
2 |
MIPSCompileOp: Invalid instruction 4cb10004 |
| Jak & Daxter®:The Lost Frontier™ |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 43800000 |
| Jak & Daxter®:The Lost Frontier™ |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 4064a9e0 |
| Jak & Daxter®:The Lost Frontier™ |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 44310000 |
| Jak & Daxter®:The Lost Frontier™ |
v1.18.1 |
2025-01-20 |
3 |
MIPSCompileOp: Invalid instruction 40621566 |
| Assassin's Creed: Bloodlines™ |
v1.18.1 |
2025-01-20 |
1 |
UNIMPL sceIoDevctl("usbpspcm:", 03415002, 09baa844, 4, 00000000, 0) |
| Assassin's Creed: Bloodlines™ |
v1.18.1 |
2025-01-20 |
1 |
UNIMPL sceIoDevctl("usbpspcm:", 03415001, 09baa844, 4, 00000000, 0) |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 000000be |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
1 |
MIPSCompileOp: Invalid instruction 000000bf |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
3 |
MIPSCompileOp: Invalid instruction 000066e8 |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 000000bb |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 000000ba |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 000000bc |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 000000b9 |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
2 |
MIPSCompileOp: Invalid instruction 000000bd |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
3 |
MIPSCompileOp: Invalid instruction 000047f8 |
| Sega Genesis Collection™ |
v1.18.1 |
2025-01-20 |
5 |
MIPSCompileOp: Invalid instruction 00001fbc |
| TEKKEN 8 NEXTGEN S6 V 2.0 EDITION BY YED |
v1.18.1 |
2025-01-20 |
1 |
WriteToHardware: Invalid address 00000164 near PC 088798ac LR 0887b380 |
| NARUTO SHIPPUDEN: Ultimate Ninja Impact |
v1.18.1 |
2025-01-20 |
1 |
00000000=sceUtilityScreenshotInitStart(09d31f88) |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
10 |
80630006=sceAtracSetDataAndGetID(0987a440, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
1 |
80630006=sceAtracSetDataAndGetID(098663c0, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
2 |
80630006=sceAtracSetDataAndGetID(09a9b180, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
3 |
80630006=sceAtracSetDataAndGetID(09a87100, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
11 |
80630006=sceAtracSetDataAndGetID(09e8a580, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
7 |
80630006=sceAtracSetDataAndGetID(09e76500, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
1 |
80630006=sceAtracSetDataAndGetID(09c3b4c0, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
5 |
80630006=sceAtracSetDataAndGetID(09c27440, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
2 |
80630006=sceAtracSetDataAndGetID(09e43300, 00014000): invalid RIFF header |
| eFootball PES 2021 By GABRIEL |
v1.18.1 |
2025-01-19 |
1 |
Bad SAS Mix output address: 08b26cc0, grain=164303440 |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
8 |
80630006=sceAtracSetDataAndGetID(09e11780, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-20 |
5 |
80630006=sceAtracSetDataAndGetID(09dfd700, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-19 |
2 |
80630006=sceAtracSetDataAndGetID(09de9680, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-19 |
2 |
80630006=sceAtracSetDataAndGetID(09dd5600, 00014000): invalid RIFF header |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-19 |
6 |
80630006=sceAtracSetDataAndGetID(0941b640, 00014000): invalid RIFF header |
| Grand Theft Auto: Vice City Stories |
v1.18.1 |
2025-01-19 |
1 |
MIPSCompileOp: Invalid instruction 4134cd26 |
| MONSTER HUNTER PORTABLE 3rd |
v1.18.1 |
2025-01-19 |
1 |
WriteToHardware: Invalid address e0459503 near PC 08000000 LR 08000000 |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-19 |
1 |
80630006=sceAtracSetDataAndGetID(09dda100, 00014000): invalid RIFF header |
| eFootball 2024 By RH12 Official |
v1.18.1 |
2025-02-10 |
19 |
807f00fd=sceMp3Init(00000000): invalid bitrate v3 l0 rate 0000 |
| eFootball 2024 By RH12 Official |
v1.18.1 |
2025-02-10 |
20 |
807f00fd=sceMp3Init(00000000): invalid bitrate v3 l3 rate 000f |
| Crash™ Tag Team Racing |
v1.18.1 |
2025-01-19 |
1 |
80630006=sceAtracSetDataAndGetID(09ddb100, 00014000): invalid RIFF header |
| WWE2K24-V1.04 BY MANIA SVR |
v1.18.1-12-g1124be79f8 |
2025-04-26 |
4 |
80630007=sceAtracSetData(2, 08d4b180, 0000d7d8): atracID uses different codec type than data |
| Def Jam® Fight For NY™: The Takeover |
v1.18.1 |
2025-01-19 |
1 |
UNTESTED sceNetAdhocctlJoinEnterGameMode(348476a, 3c:3d:3a:ad:f0:39, 20000000, 0) at 0897eeec |
| DFU25 |
v1.18.1 |
2025-02-07 |
4 |
Unknown GetPointerWrite 00000000 PC 08816154 LR 0881615c |
| Def Jam® Fight For NY™: The Takeover |
v1.18.1 |
2025-01-19 |
1 |
UNTESTED sceNetAdhocctlCreateEnterGameMode(96e8ff9, 1, 2, 09fbf960, 20000000, 0) at 0897ec84 |
| GTA: Liberty City Stories |
v1.20.4 |
2026-10-01 |
159 |
sceIoAssign(ms0:, msstor0p1:/, fatms0:, IOASSIGN_RDWR, 00000000, 0) |
| GTA: Liberty City Stories |
v1.18.1-12-g1124be79f8 |
2025-07-09 |
119 |
sceIoUnassign(ms0:) |
| GTA: Liberty City Stories |
v1.20.4 |
2026-09-11 |
19 |
UNIMPL sceKernelSelfStopUnloadModule(00000001, 00000000, 00000000): game has likely crashed |
| Grand Theft Auto: Liberty City Stories |
v1.9.0 |
2026-10-10 |
202 |
sceIoAssign(ms0:, msstor0p1:/, fatms0:, IOASSIGN_RDWR, 00000000, 0) |
| Grand Theft Auto: Liberty City Stories |
v1.9.0 |
2026-09-02 |
185 |
sceIoUnassign(ms0:) |
| eFootball Chelito 19 |
v1.9.4 |
2025-11-21 |
5 |
MIPSCompileOp: Invalid instruction 00000015 |
| Assassin's Creed: Bloodlines™ |
v1.18.1 |
2025-01-19 |
1 |
UNIMPL sceIoDevctl("usbpspcm:", 03415002, 09b6e2d4, 4, 00000000, 0) |
| Assassin's Creed: Bloodlines™ |
v1.18.1 |
2025-01-19 |
1 |
UNIMPL sceIoDevctl("usbpspcm:", 03415001, 09b6e2d4, 4, 00000000, 0) |
| EA FC25 BY GERTISGAMING FREE VERSION |
v1.19.2 |
2025-06-26 |
455 |
No DL ID available to enqueue |
| God of War™: Ghost of Sparta |
v1.18.1 |
2025-01-19 |
2 |
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 r10p0-00dev0 [Revision 96995].
01f14404:00000b29 HWX C T N LM Light: 0: c:0 t:1 1: c:0 t:0 2: c:0 t:1 3: c:0 t:1 MatUp:1 Cull
#version 100
// Driver: Mali-400 MP - GLSL 100
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01f14404:00000b29 HWX C T N LM Light: 0: c:0 t:1 1: c:0 t:0 2: c:0 t:1 3: c:0 t:1 MatUp:1 Cull
attribute vec3 position;
attribute mediump vec3 normal;
attribute vec2 texcoord;
attribute lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform vec3 u_lightpos1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform vec3 u_lightpos2;
uniform mediump vec3 u_lightatt2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform vec3 u_lightpos3;
uniform mediump vec3 u_lightatt3;
uniform lowp vec3 u_lightambient3;
uniform lowp vec3 u_lightdiffuse3;
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(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 = color0;
vec3 diffuseColor = u_matdiffuse.rgb;
vec3 specularColor = u_matspecular.rgb;
lowp vec4 lightSum0 = u_ambient * ambientColor + vec4(u_matemissive, 0.0);
vec3 toLight;
lowp vec3 diffuse;
float distance;
lowp float lightScale;
mediump float ldot;
toLight = u_lightpos0 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
lightSum0.rgb += (u_lightambient0 * ambientColor.rgb + diffuse) * lightScale;
toLight = u_lightpos1;
ldot = dot(toLight, worldnormal);
diffuse = (u_lightdiffuse1 * diffuseColor) * max(ldot, 0.0);
lightSum0.rgb += (u_lightambient1 * ambientColor.rgb + diffuse);
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);
lightSum0.rgb += (u_lightambient2 * ambientColor.rgb + diffuse) * lightScale;
toLight = u_lightpos3 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt3, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse3 * diffuseColor) * max(ldot, 0.0);
lightSum0.rgb += (u_lightambient3 * ambientColor.rgb + diffuse) * lightScale;
v_color0 = clamp(lightSum0, 0.0, 1.0);
v_color1 = splat3(0.0);
v_texcoord = vec3(texcoord.xy * u_uvscaleoffset.xy, 0.0);
v_fogdepth = (viewPos.z + u_fogcoef.x) * u_fogcoef.y;
vec3 projPos = outPos.xyz / outPos.w;
float projZ = (projPos.z - u_depthRange.z) * u_depthRange.w;
if (u_cullRangeMin.w <= 0.0 || projZ * outPos.w > -outPos.w) {
if ((projPos.x < u_cullRangeMin.x || proj |
| God of War™: Ghost of Sparta |
v1.18.1 |
2025-01-19 |
2 |
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 r10p0-00dev0 [Revision 96995].
01730144:00000b29 HWX C T N LM Light: 0: c:0 t:1 1: c:0 t:1 2: c:1 t:0 MatUp:3 Cull
#version 100
// Driver: Mali-400 MP - GLSL 100
precision highp float;
#define gl_VertexIndex gl_VertexID
#define splat3(x) vec3(x)
#define mul(x, y) ((x) * (y))
// 01730144:00000b29 HWX C T N LM Light: 0: c:0 t:1 1: c:0 t:1 2: c:1 t:0 MatUp:3 Cull
attribute vec3 position;
attribute mediump vec3 normal;
attribute vec2 texcoord;
attribute lowp vec4 color0;
uniform mat4 u_proj;
uniform mat4 u_world;
uniform mat4 u_view;
uniform vec4 u_uvscaleoffset;
uniform vec3 u_lightpos0;
uniform mediump vec3 u_lightatt0;
uniform lowp vec3 u_lightambient0;
uniform lowp vec3 u_lightdiffuse0;
uniform vec3 u_lightpos1;
uniform mediump vec3 u_lightatt1;
uniform lowp vec3 u_lightambient1;
uniform lowp vec3 u_lightdiffuse1;
uniform vec3 u_lightpos2;
uniform lowp vec3 u_lightambient2;
uniform lowp vec3 u_lightdiffuse2;
uniform lowp vec3 u_lightspecular2;
uniform lowp vec4 u_ambient;
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(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 = color0;
vec3 diffuseColor = color0.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 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt0, vec3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse0 * diffuseColor) * max(ldot, 0.0);
lightSum0.rgb += (u_lightambient0 * ambientColor.rgb + diffuse) * lightScale;
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);
lightSum0.rgb += (u_lightambient1 * ambientColor.rgb + diffuse) * lightScale;
toLight = u_lightpos2;
ldot = dot(toLight, worldnormal);
diffuse = (u_lightdiffuse2 * 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_lightspecular2 * specularColor * ldot ;
}
lightSum0.rgb += (u_lightambient2 * ambientColor.rgb + diffuse);
v_color0 = clamp(lightSum0, 0.0, 1.0);
v_color1 = clamp(lightSum1, 0.0, 1.0);
v_texcoord = vec3(texcoord.xy * u_uvscaleoffset.xy, 0.0);
v_fogdepth = (viewPos.z + u_fogcoef.x) * u_fogcoef.y;
vec3 projPos = outPos.xyz / outPos.w;
float projZ = (projPos.z - u_depthRange.z) * u_depthRange.w;
if (u_cullRangeMin.w <= 0.0 || projZ * outPos.w > -outPos.w) {
if ((projPos.x < u_cullRangeMin.x || projPos.y < u_cullRangeMin.y) || (projPos.x > u_cullRangeMax.x || projPos.y > u_cullRangeMax.y)) {
outPos.xyzw = u_cullRangeMax.wwww;
}
}
if (u_cullRangeMin |