Add full mipmap with ps2 trilinear to Global Storm:
Fixes ground textures.
Add missing autoflush fixes to other regions of Terminator 3 The Redemption:
Fixes environment lights visible through player model.
If barriers are already present and it's a texture shuffle then prefer full sw blend, it will be more accurate with no cost.
One barrier is enough for texture shuffles, no need to do full, which means less texture barriers and draw calls.
The idea is to adjust the alpha destination for more
accurate hw blending which will work on all renderers.
Old behavior has Ad in range within 0-1 whereas for blending 0-2 is needed.
copy rt -> adjust the alpha -> copy back the adjusted alpha-> restore old alpha after blending is done
Since we can't do Cd*(Alpha + 1) - Cs*Alpha in hw blend what we can do is adjust the Cs value that will be subtracted,
this way we can get a better result in hw blend. Result is still wrong but less wrong than before.
Reduces memory useage during memory searching process.
- Minimizes passing by copy, uses references to avoid causing copies
- Deletes FutureWatcher ptr when no longer needed to avoid leaking memory (thanks Fobes)
- Updates the search results vector in-place so that no extra copies are needed.
- Makes use of std::move to transfer resources instead of keeping two copies.
- No longer keeps a copy of prior search results in addition to the active search, the stored results are transferred to the search worker and then transferred back.
More improvements to be made, but making a first that should make a
decent impact.
Also: Updates storage of prior results a s a vector now.
Prior since the results were stored in a hashmap, the .keys() function needed to be used to index at an arbitrary point when loading results into the UI.
This caused a big spike in memory usage when the results count is particularly large.
Using a vector optimizes this as we don't need to add any memory when indexing in this way.
Also unlike before when we used vector, we're also removing elements in place when doing filter searches so we don't need two vectors.
Since we're hashing at the block level, a different TBW that causes a
different-looking texture should cause different blocks to get hashed,
and thus, a different hash.
- Don't include TCC in the hashed TEX0 bits.
- Hash the region size, not rectangle.
Significantly reduces hash cache size in Ace Combat 5, over the course
of 30 frames from 1,000+ textures down to 400.
NOTE: This will change texture replacement hashes. Any "old" region
textures will transparently be converted to the new internal name format
upon loading.