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 |
Rock Band Unplugged™ |
v1.11.1 |
2021-02-26 |
sceDmacMemcpy(dest=08d27430, src=08d31460, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2021-02-23 |
sceKernelLoadModule: unsupported options size=00000014, flags=ffffffff, pos=0, access=1, data=2, text=2 |
Rock Band Unplugged™ |
v1.9.4 |
2021-02-20 |
sceDmacMemcpy(dest=08d269b0, src=08d30960, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2021-02-20 |
sceDmacMemcpy(dest=08d38a20, src=08d426d0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2021-02-20 |
sceDmacMemcpy(dest=08d390e0, src=08d43ad0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2021-02-19 |
Unknown GetPointer 00000000 PC 08000000 LR 08000000 |
Rock Band Unplugged™ |
v1.11 |
2021-02-19 |
__KernelStopThread: thread 598 does not exist |
Rock Band Unplugged™ |
v1.9.4 |
2021-02-19 |
sceDmacMemcpy(dest=08d14880, src=08d1f030, size=384): overlapping read |
Rock Band Unplugged™ |
v1.11.1 |
2021-02-19 |
sceDmacMemcpy(dest=08d147c0, src=08d1f670, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2021-02-19 |
sceDmacMemcpy(dest=08d14640, src=08d1ec70, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3-1382-gb40385396 |
2021-02-10 |
sceDmacMemcpy(dest=08d14eb0, src=08d1e2e0, size=528): overlapping read |
Rock Band Unplugged™ |
v1.10.3-1382-gb40385396 |
2021-02-10 |
sceDmacMemcpy(dest=08d4a790, src=08d55600, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2021-02-07 |
sceKernelLoadModule: unsupported options size=00000014, flags=0892b22c, pos=0, access=1, data=2, text=2 |
Rock Band Unplugged™ |
v1.10.3 |
2021-02-07 |
sceKernelLoadModule: unsupported options size=00000014, flags=00000000, pos=0, access=1, data=1, text=1 |
Rock Band Unplugged™ |
v1.10.3 |
2021-02-05 |
sceDmacMemcpy(dest=08d38ae0, src=08d42610, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2021-02-04 |
sceDmacMemcpy(dest=08d393d0, src=08d423c0, size=592): overlapping read |
Rock Band Unplugged™ |
v1.10.3-1550-g5d8b2ef50 |
2021-01-31 |
__KernelStopThread: thread 457 does not exist |
Rock Band Unplugged™ |
v1.10.3 |
2021-01-31 |
sceDmacMemcpy(dest=08d14ac0, src=08d1f0f0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2021-01-29 |
sceDmacMemcpy(dest=08d39860, src=08d42810, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.3 |
2021-01-27 |
sceDmacMemcpy(dest=08d15a80, src=08d1f330, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2021-01-23 |
sceDmacMemcpy(dest=08d394a0, src=08d43150, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-12-29 |
sceKernelCreateSema(RealMutex) unsupported options parameter, size = -65536 |
Rock Band Unplugged™ |
v1.10.3 |
2020-12-16 |
sceDmacMemcpy(dest=08d14910, src=08d1e900, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-12-15 |
sceDmacMemcpy(dest=08d14280, src=08d1e8f0, size=576): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-12-09 |
sceGeBreak(mode=0, unknown=08d098b8): unknown ptr (valid) |
Rock Band Unplugged™ |
v1.10.3 |
2020-11-17 |
ReadFromHardware: Invalid address 0080466a near PC 08945bfc LR 08a0b264 |
Rock Band Unplugged™ |
v1.10.3 |
2020-11-16 |
sceDmacMemcpy(dest=08d14700, src=08d1e970, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-11-16 |
scePsmfPlayerChangePlayMode(0937de3c, 0, 0): play speed not changed |
Rock Band Unplugged™ |
v1.4 |
2020-12-07 |
sceDmacMemcpy(dest=08d15240, src=08d1ebb0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-11-02 |
ReadFromHardware: Invalid address 3dbe1942 near PC 08945bfc LR 08a0b264 |
Rock Band Unplugged™ |
v1.10.3 |
2020-11-04 |
sceDmacMemcpy(dest=08d275b0, src=08d315e0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-10-15 |
sceDmacMemcpy(dest=08d391a0, src=08d43590, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-10-13 |
sceDmacMemcpy(dest=08d14ab0, src=08d1e2e0, size=592): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-10-13 |
sceDmacMemcpy(dest=08d15240, src=08d1ec30, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-10-13 |
sceDmacMemcpy(dest=08d14c10, src=08d1ec00, size=384): overlapping read |
Rock Band Unplugged™ |
v1.7.5 |
2020-10-12 |
sceDmacMemcpy(dest=08d4b690, src=08d54b80, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-10-10 |
sceDmacMemcpy(dest=08d14dc0, src=08d1f570, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-11-27 |
sceDmacMemcpy(dest=08d5d850, src=08d67840, size=192): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-10-03 |
sceDmacMemcpy(dest=08d5c7d0, src=08d667c0, size=192): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-10-01 |
sceDmacMemcpy(dest=08d14580, src=08d1ea30, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-27 |
sceDmacMemcpy(dest=08d394a0, src=08d43c10, size=176): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-26 |
sceDmacMemcpy(dest=08d14a00, src=08d1e730, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-26 |
sceDmacMemcpy(dest=08d262f0, src=08d31c20, size=176): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-25 |
sceDmacMemcpy(dest=08d278b0, src=08d31860, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-25 |
sceDmacMemcpy(dest=08d14280, src=08d1f7f0, size=576): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-24 |
sceDmacMemcpy(dest=08d14610, src=08d1e600, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-10-01 |
sceDmacMemcpy(dest=08d5d250, src=08d67240, size=192): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-24 |
sceDmacMemcpy(dest=08d26e30, src=08d30de0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-23 |
sceDmacMemcpy(dest=08d275b0, src=08d31560, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-23 |
sceDmacMemcpy(dest=08d14dc0, src=08d1fbb0, size=48): overlapping read |
Rock Band Unplugged™ |
v1.9.3 |
2020-09-22 |
D3D error in shader compilation: info: J:\exodosama\EXODo restore\Emus\psp\[email protected](104,16-57): error X4505: maximum temp register index exceeded
J:\exodosama\EXODo restore\Emus\psp\[email protected](104,12-71): error X4505: maximum temp register index exceeded
/ code: #pragma warning( disable : 3571 )
float4x4 u_proj : register(c0);
float2 u_fogcoef : register(c18);
float4 u_matambientalpha : register(c20);
float4x3 u_world : register(c11);
float4x3 u_view : register(c8);
float3 u_lightpos0 : register(c24);
float3 u_lightatt0 : register(c32);
float3 u_lightambient0 : register(c48);
float3 u_lightdiffuse0 : register(c40);
float3 u_lightspecular0 : register(c44);
float3 u_lightpos1 : register(c25);
float3 u_lightatt1 : register(c33);
float3 u_lightdir1 : register(c29);
float4 u_lightangle_spotCoef1 : register(c37);
float3 u_lightambient1 : register(c49);
float3 u_lightdiffuse1 : register(c41);
float3 u_lightspecular1 : register(c45);
float3 u_lightpos2 : register(c26);
float3 u_lightatt2 : register(c34);
float3 u_lightambient2 : register(c50);
float3 u_lightdiffuse2 : register(c42);
float3 u_lightspecular2 : register(c46);
float3 u_lightpos3 : register(c27);
float3 u_lightambient3 : register(c51);
float3 u_lightdiffuse3 : register(c43);
float3 u_lightspecular3 : register(c47);
float4 u_ambient : register(c19);
float3 u_matdiffuse : register(c21);
float4 u_matspecular : register(c22);
float3 u_matemissive : register(c23);
float4 u_cullRangeMin : register(c80);
float4 u_cullRangeMax : register(c81);
struct VS_IN {
float3 normal : NORMAL;
float3 position : POSITION;
};
struct VS_OUT {
float4 v_color0 : COLOR0;
float3 v_color1 : COLOR1;
float v_fogdepth: TEXCOORD1;
float4 gl_Position : POSITION;
};
VS_OUT main(VS_IN In) {
VS_OUT Out;
float3 worldpos = mul(float4(In.position.xyz, 1.0), u_world);
float3 worldnormal = normalize(mul(float4(In.normal, 0.0), u_world));
float4 viewPos = float4(mul(float4(worldpos, 1.0), u_view), 1.0);
float4 outPos = mul(viewPos, u_proj);
float4 lightSum0 = u_ambient * u_matambientalpha + float4(u_matemissive, 0.0);
float3 lightSum1 = 0;
float3 toLight;
float3 diffuse;
float distance;
float lightScale;
float ldot;
float angle;
toLight = u_lightpos0 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt0, float3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse0 * u_matdiffuse) * max(ldot, 0.0);
if (ldot >= 0.0) {
ldot = dot(normalize(toLight + float3(0.0, 0.0, 1.0)), worldnormal);
if (u_matspecular.a == 0.0) {
ldot = 1.0;
} else {
ldot = pow(max(ldot, 0.0), u_matspecular.a);
}
if (ldot > 0.0)
lightSum1 += u_lightspecular0 * u_matspecular.rgb * ldot * lightScale;
}
lightSum0.rgb += (u_lightambient0 * u_matambientalpha.rgb + diffuse) * lightScale;
toLight = u_lightpos1 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
angle = length(u_lightdir1) == 0.0 ? 0.0 : dot(normalize(u_lightdir1), toLight);
if (angle >= u_lightangle_spotCoef1.x) {
lightScale = clamp(1.0 / dot(u_lightatt1, float3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef1.y == 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef1.y));
} else {
lightScale = 0.0;
}
diffuse = (u_lightdiffuse1 * u_matdiffuse) * max(ldot, 0.0);
if (ldot >= 0.0) {
ldot = dot(normalize(toLight + float3(0.0, 0.0, 1.0)), worldnormal);
if (u_matspecular.a == 0.0) {
ldot = 1.0;
} else {
ldot = pow(max(ldot, 0.0), u_matspecular.a);
}
if (ldot > 0.0)
lightSum1 += u_lightspecular1 * u_matspecular.rgb * ldot * lightScale;
}
lightSum0.rgb += (u_lightambient1 * u_matambientalpha.rgb + diffuse) * lightScale;
toLight = u_lightpos2 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt2, float3(1.0, distance, distance |
Rock Band Unplugged™ |
v1.10.3-712-g7ed1ade56 |
2020-09-20 |
sceDmacMemcpy(dest=08d156c0, src=08d1f6f0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-20 |
sceDmacMemcpy(dest=08d15240, src=08d1f370, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-20 |
sceDmacMemcpy(dest=08d5c650, src=08d66640, size=192): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-19 |
sceDmacMemcpy(dest=08d27430, src=08d31360, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-16 |
sceDmacMemcpy(dest=08d15900, src=08d1e8b0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-14 |
Render to area containing texture at 04162000 +256x0 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-09 |
sceKernelCreateSema(KSAP_ThLockSema) unsupported attr parameter: 00000011 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-09 |
sceKernelCreateSema(KSAP_FnLockSema) unsupported attr parameter: 00000011 |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-05 |
sceDmacMemcpy(dest=08d38c60, src=08d42e10, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpService': 0x506c318d |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpService': 0x4e851b10 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpService': 0x174d0d24 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpAuth': 0xcd86a656 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpAuth': 0x3f1c1f70 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNp': 0xbb069a87 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNp': 0xa0be3c4b |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNp': 0x633b5f71 |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpService': 0xfc0bc8db |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-04 |
Unknown syscall in known module 'sceNpService': 0xbe22eea3 |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-04 |
sceDmacMemcpy(dest=08d4a790, src=08d55580, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-04 |
sceDmacMemcpy(dest=08d15c00, src=08d1f670, size=192): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-09-01 |
sceKernelLoadModuleByID: unsupported options size=00000014, flags=08b62c68, pos=0, access=1, data=1, text=1 |
Rock Band Unplugged™ |
v1.9.4 |
2020-09-02 |
sceDmacMemcpy(dest=08d4afd0, src=08d55300, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-08-30 |
sceDmacMemcpy(dest=08d15000, src=08d1f8b0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-18 |
sceDmacMemcpy(dest=08d14c40, src=08d1f630, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-17 |
sceDmacMemcpy(dest=08d15300, src=08d1eaf0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-15 |
sceDmacMemcpy(dest=08d159f0, src=08d1e2e0, size=528): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-15 |
sceDmacMemcpy(dest=08d14d00, src=08d1f230, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-15 |
sceDmacMemcpy(dest=08d27730, src=08d316e0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-14 |
sceDmacMemcpy(dest=08d15600, src=08d1f870, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-14 |
sceDmacMemcpy(dest=08d14880, src=08d1fcb0, size=176): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-13 |
sceDmacMemcpy(dest=08d14f40, src=08d1f1f0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-09 |
sceDmacMemcpy(dest=08d393e0, src=08d42f10, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-09 |
sceDmacMemcpy(dest=08d14880, src=08d1ebf0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-08 |
sceDmacMemcpy(dest=08d388a0, src=08d42810, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.3 |
2020-08-02 |
sceDmacMemcpy(dest=08d14f40, src=08d1f030, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.3 |
2020-08-01 |
sceDmacMemcpy(dest=08d272b0, src=08d31260, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.3 |
2020-07-26 |
sceDmacMemcpy(dest=08d15600, src=08d1e7f0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.3 |
2020-07-24 |
sceDmacMemcpy(dest=08d39560, src=08d42b10, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.2 |
2020-07-22 |
sceDmacMemcpy(dest=08d14640, src=08d1e970, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.2 |
2020-07-22 |
sceDmacMemcpy(dest=08d14e80, src=08d1f1f0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.2 |
2020-07-20 |
sceDmacMemcpy(dest=08d150c0, src=08d1f2f0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.2 |
2020-07-19 |
sceDmacMemcpy(dest=08d272b0, src=08d312e0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.10.2 |
2020-07-18 |
sceDmacMemcpy(dest=08d14280, src=08d1eab0, size=576): overlapping read |
Rock Band Unplugged™ |
v1.10.2 |
2020-07-17 |
sceDmacMemcpy(dest=08d269b0, src=08d30d20, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-07-15 |
sceDmacMemcpy(dest=08d15840, src=08d1fb70, size=112): overlapping read |
Rock Band Unplugged™ |
v1.9.4 |
2020-07-05 |
sceDmacMemcpy(dest=08d27430, src=08d313e0, size=384): overlapping read |
Rock Band Unplugged™ |
v1.8.0 |
2020-07-05 |
sceDmacMemcpy(dest=08d15240, src=08d1f470, size=384): overlapping read |
Rock Band Unplugged™ |
v1.9.3 |
2020-07-02 |
D3D error in shader compilation: info: C:\Program Files\PPSSPP\[email protected](114,16-57): error X4505: maximum temp register index exceeded
C:\Program Files\PPSSPP\[email protected](114,12-71): error X4505: maximum temp register index exceeded
/ code: #pragma warning( disable : 3571 )
float4x4 u_proj : register(c0);
float2 u_fogcoef : register(c18);
float4 u_matambientalpha : register(c20);
float4x3 u_world : register(c11);
float4x3 u_view : register(c8);
float4 u_uvscaleoffset : register(c17);
float3 u_lightpos0 : register(c24);
float3 u_lightatt0 : register(c32);
float3 u_lightambient0 : register(c48);
float3 u_lightdiffuse0 : register(c40);
float3 u_lightspecular0 : register(c44);
float3 u_lightpos1 : register(c25);
float3 u_lightatt1 : register(c33);
float3 u_lightdir1 : register(c29);
float4 u_lightangle_spotCoef1 : register(c37);
float3 u_lightambient1 : register(c49);
float3 u_lightdiffuse1 : register(c41);
float3 u_lightspecular1 : register(c45);
float3 u_lightpos2 : register(c26);
float3 u_lightatt2 : register(c34);
float3 u_lightdir2 : register(c30);
float4 u_lightangle_spotCoef2 : register(c38);
float3 u_lightambient2 : register(c50);
float3 u_lightdiffuse2 : register(c42);
float3 u_lightspecular2 : register(c46);
float3 u_lightpos3 : register(c27);
float3 u_lightambient3 : register(c51);
float3 u_lightdiffuse3 : register(c43);
float3 u_lightspecular3 : register(c47);
float4 u_ambient : register(c19);
float3 u_matdiffuse : register(c21);
float4 u_matspecular : register(c22);
float3 u_matemissive : register(c23);
float4 u_cullRangeMin : register(c80);
float4 u_cullRangeMax : register(c81);
struct VS_IN {
float2 texcoord : TEXCOORD0;
float3 normal : NORMAL;
float3 position : POSITION;
};
struct VS_OUT {
float3 v_texcoord : TEXCOORD0;
float4 v_color0 : COLOR0;
float3 v_color1 : COLOR1;
float v_fogdepth: TEXCOORD1;
float4 gl_Position : POSITION;
};
VS_OUT main(VS_IN In) {
VS_OUT Out;
float3 worldpos = mul(float4(In.position.xyz, 1.0), u_world);
float3 worldnormal = normalize(mul(float4(In.normal, 0.0), u_world));
float4 viewPos = float4(mul(float4(worldpos, 1.0), u_view), 1.0);
float4 outPos = mul(viewPos, u_proj);
float4 lightSum0 = u_ambient * u_matambientalpha + float4(u_matemissive, 0.0);
float3 lightSum1 = 0;
float3 toLight;
float3 diffuse;
float distance;
float lightScale;
float ldot;
float angle;
toLight = u_lightpos0 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
lightScale = clamp(1.0 / dot(u_lightatt0, float3(1.0, distance, distance*distance)), 0.0, 1.0);
diffuse = (u_lightdiffuse0 * u_matdiffuse) * max(ldot, 0.0);
if (ldot >= 0.0) {
ldot = dot(normalize(toLight + float3(0.0, 0.0, 1.0)), worldnormal);
if (u_matspecular.a == 0.0) {
ldot = 1.0;
} else {
ldot = pow(max(ldot, 0.0), u_matspecular.a);
}
if (ldot > 0.0)
lightSum1 += u_lightspecular0 * u_matspecular.rgb * ldot * lightScale;
}
lightSum0.rgb += (u_lightambient0 * u_matambientalpha.rgb + diffuse) * lightScale;
toLight = u_lightpos1 - worldpos;
distance = length(toLight);
toLight /= distance;
ldot = dot(toLight, worldnormal);
angle = length(u_lightdir1) == 0.0 ? 0.0 : dot(normalize(u_lightdir1), toLight);
if (angle >= u_lightangle_spotCoef1.x) {
lightScale = clamp(1.0 / dot(u_lightatt1, float3(1.0, distance, distance*distance)), 0.0, 1.0) * (u_lightangle_spotCoef1.y == 0.0 ? 1.0 : pow(angle, u_lightangle_spotCoef1.y));
} else {
lightScale = 0.0;
}
diffuse = (u_lightdiffuse1 * u_matdiffuse) * max(ldot, 0.0);
if (ldot >= 0.0) {
ldot = dot(normalize(toLight + float3(0.0, 0.0, 1.0)), worldnormal);
if (u_matspecular.a == 0.0) {
ldot = 1.0;
} else {
ldot = pow(max(ldot, 0.0), u_matspecular.a);
}
if (ldot > 0.0)
lightSum1 += u_lightspecular1 * u_matspecular.rgb * ldot * lightScale;
}
lightSum0.rgb += (u_lightambient1 * u_matambientalpha.rgb + diffuse) * lightScale;
toLight = u_lightp |