mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-23 11:19:03 +02:00
GPU: Move sprites on pixel centers back half a pixel above 1x (compat SnapHalfPixelSprites)
The PS1 emulator draws sprites with their corners on pixel centers (x.5) and their texture coordinates on texel centers. At 1x that covers whole pixels, but above 1x it covers half a pixel more on the right and bottom and reads the neighbouring texels, which shows as seams between tiles. With compat.ini's SnapHalfPixelSprites, such sprites and their texture coordinates are moved back half a pixel, which draws the same at 1x. Texture coordinates are also nudged a 64th of a texel in, as a scaled sprite can sample right on a texel edge, where interpolation can fall short of the texel the GE reads (the emulator's video unpacking does). Set for PS1 games (POPS00000). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
cf788d72ca
commit
ef7ca8b85f
4 files changed
+42
No files matched your search
@@ -170,6 +170,7 @@ void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) {
|
||||
CheckSetting(iniFile, gameID, "ReadbackShadow", &flags_.ReadbackShadow);
|
||||
CheckSetting(iniFile, gameID, "ColorPickingDrawSyncReadback", &flags_.ColorPickingDrawSyncReadback);
|
||||
CheckSetting(iniFile, gameID, "SeparateLogicOpDraws", &flags_.SeparateLogicOpDraws);
|
||||
CheckSetting(iniFile, gameID, "SnapHalfPixelSprites", &flags_.SnapHalfPixelSprites);
|
||||
CheckSetting(iniFile, gameID, "FixedFramebuffer", &flags_.FixedFramebuffer);
|
||||
CheckSetting(iniFile, gameID, "NativeResolutionFramebuffer", &flags_.NativeResolutionFramebuffer);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user