mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-25 11:19:03 +01:00
Rasterizer.cpp: the secondary color fallback does `prim_color[i] = ` where the SSE and NEON branches add, so the base/texture color is thrown away and the triangle renders as pure specular. Introduced by250abe0d56(Loongarch64 build fixes) changing one character; the structurally identical block in DrawRectangle still has the `+=`. Live on ARM32, LoongArch64, RISC-V64 and anything else that isn't SSE2 or ARM64. Lighting.cpp: IsLargerThanHalf's scalar path assigns instead of accumulating in its loop, so it returns only `v[2] > 1` and ignores the other components, and the NEON path computes a max where SSE computes a sum. All three disagreed. The question being asked is "is this color factor non-zero" - the test this replaced infcc3b7684ewas `!(colorFactor == ones)` - and since LightColorFactor produces 2*c+1, every component is >= 1 and the sum of four is >= 4, which is why the SSE sum > 4 is the correct one. Made the other two match it. Getting this wrong doesn't shift a shade, it enables or disables a whole light: x86-32 and ARM64 were switching lights off that x86-64 left on. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vd8ntC2brCUtCrDJMqLbs8