SoftGPU: Draw sprites that texture from themselves in the GE's pixel order

A sprite that reads what it draws goes through the texture cache pixel by
pixel: rows left to right, top to bottom, texture lines loaded as samples
first read them, and pixels reaching memory a 16-byte block at a time, a
pixel after the next block starts (four with bilinear filtering). Fitted to
geprobe exp81 and exp204-exp209 on hardware; Split Second's blur passes now
match the PSP.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-10-09 12:27:45 +02:00
1 parent a882484147
commit fdb411dd0e
8 files changed
+359 -31

No files matched your search

+1 -1
View File
@@ -342,7 +342,7 @@ void DrawSprite(const VertexData &v0, const VertexData &v1, const BinCoords &ran
uint16_t texbufw = state.texbufw[0];
// We won't flush, since we compile all samplers together.
Sampler::FetchFunc fetchFunc = Sampler::GetFetchFunc(state.samplerID, nullptr);
Sampler::FetchFunc fetchFunc = state.fetch ? state.fetch : Sampler::GetFetchFunc(state.samplerID, nullptr);
_dbg_assert_msg_(fetchFunc != nullptr, "Failed to get precompiled fetch func");
auto &pixelID = state.pixelID;
auto &samplerID = state.samplerID;