mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-27 10:38:46 -04:00
148f171daf
Thee86099ffix put the Beetle Calc_UVOffsets mirrored-uv bump in the textured-POLY path only — but gpu.c's axis-aligned-quad fast path converts mirrored quads (X/Y-flipped 2D sprites, e.g. every right-facing MMX entity cel) into gr_draw_textured_rect_scaled calls with u0>u1 / v0>v1, so they enter gpu_textured_rect and never see the poly compensation. That is why the sprite slivers persisted on X (worst facing right / crouching) aftere86099f: the visible producers were all rect-path prims. Fix: same +1 bump along each decreasing uv axis in gpu_textured_rect (GL and VK), with the sampling bounds tightened to [min, max-1] post-bump (max is the exclusive edge in both directions). Forward rects are unaffected (bump is a no-op; bounds identical to before). Frame-exact verification (deterministic attract, frame 2850, X idle facing right): pre-fix GL vs software full-frame diff = 3707 px spread across the sprite area; post-fix = 0 px in the entire gameplay area (the only remaining diff is the attract logo overlay blink-phase offset caused by the known GL blend-rounding timeline fork, tracked separately). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>