Commit Graph
3442 Commits
Author SHA1 Message Date
Henrik Rydgård 2da3df75d7 Oops, lost a check for smart 2D texture filtering 2026-06-07 17:38:28 +02:00
Henrik Rydgård a7f62d763a Make the MaxZ test a bit more lenient to fix Taiko no Tatsujin. Debugger improvement
Fixes #21797
2026-06-07 13:47:42 +02:00
Henrik Rydgård d19f8b72f9 Warning fixes 2026-06-06 14:24:16 +02:00
Henrik Rydgård 5bfc87ffd5 Improve the sprite border fix to work with RECTs, add some conditions 2026-06-06 12:31:41 +02:00
Henrik Rydgård cf9c0c5c84 Restructure the sprite detection, no longer require Smart 2D texture filtering to apply 2026-06-06 11:21:46 +02:00
Henrik Rydgård b84afa8a5b Fixes menus in NBA2K12.
Not sure if we can find a better way, I suppose
we could clamp vertex coordinates that are in this range instead, if it
turns out that this somehow breaks something.
2026-06-05 18:23:31 +02:00
Henrik Rydgård d59cdcad61 GTA sprite fix: Detect sprites, clip them slightly to avoid filtering artifacts 2026-06-05 11:48:46 +02:00
Henrik Rydgård 9ce5270e80 With our compatibility flag for depth rounding, truncate to 15 bits.
This matches some earlier test results by Unknown where we could see
that only every second value was used, and is the only explanation I can
come up with for the Afterburner problem, having now traced all the
depth math properly.

Fixes #21785 - and hopefully doesn't break anything else.
2026-06-05 00:50:30 +02:00
Henrik Rydgård 19d6850789 Apply the correct culling epsilons both in fastcull and in software transform. Fixes NBA again. 2026-06-05 00:18:06 +02:00
Henrik Rydgård 392a862be2 Merge pull request #21784 from hrydgard/smarter-2d-filter
Smart 2D texture filtering: Use the new vertex path to check for pixel mapping in transformed geometry
2026-06-04 17:24:40 +02:00
Henrik Rydgård 169f473b95 Smart 2D texture filtering: Use the new vertex path to check for pixel mapping in transformed geometry
Previously, "Smart 2D texture filtering" was limited to through-mode
draws, but many games use fully transformed draws to do 2D elements.

An example of this is Outrun in the menus, and it's always been plagued by
horrible filtering artifacts.

With the improved Smart 2D texture filtering, the artifacts are gone!
Of course, instead of glitchy bilinear you instead get point sampled
texturing so it looks more pixellated, but no more ugly borders between letters
in the game.
2026-06-04 17:04:04 +02:00
Henrik Rydgård 1867f0775e Avoid soft-transform-and-clip if the near plane matches the final clip plane, and a new compat flag isn't set
Fixes #21776

Since only two games are known to need the cull-after-clip behavior
(previously known as inversion), we flag those and avoid unnecessary
soft clipping.

I had hoped to find a dynamic check that would work, but haven't managed
to figure out a good one yet.

This will improve performance a little bit in some other games since we
can avoid clipping in software at all in many cases.
2026-06-04 14:49:22 +02:00
Henrik Rydgård 50e5f9c23a Small simplification and fix in VertexShaderGenerator 2026-06-04 12:45:20 +02:00
Henrik Rydgård 195455a7f4 Break out VertexReader, prepare VertexReader for CrossSIMD use in software transform 2026-06-04 12:45:17 +02:00
Henrik Rydgård 84c366971c Software transform: Scope some variables properly. Remove unnecessary & on parameter. 2026-06-04 12:45:17 +02:00
Henrik Rydgård 00d201b216 Correct software transform stats in all-cull and through mode cases 2026-06-04 12:45:17 +02:00
Henrik Rydgård c270e8766e Correct depth clear translation. Fixes #21780 2026-06-04 11:30:52 +02:00
Henrik Rydgård 652e3e2c22 Use fastcull on indexed draws too. 2026-06-04 11:24:15 +02:00
Henrik Rydgård 078197d790 Remove unnecessary scaling and then un-scaling of through-mode Z coordinates 2026-06-03 20:31:05 +02:00
Henrik Rydgård 382999b013 Merge pull request #21774 from hrydgard/assorted-fixes
Add default mappings for the right stick to many of our default keymaps
2026-06-03 19:11:50 +02:00
Henrik Rydgård 9f5d28ca6e Fix toggling pause with the bound pause key 2026-06-03 18:49:13 +02:00
Henrik Rydgård 2ea8a9ac1f Revert "Remove unnecessary scaling and then un-scaling of through-mode Z coordinates"
Didn't mean to commit this, it was supposed to go in a PR.

This reverts commit 6d4c70c67d.
2026-06-03 17:18:10 +02:00
Henrik Rydgård 6d4c70c67d Remove unnecessary scaling and then un-scaling of through-mode Z coordinates 2026-06-03 16:00:40 +02:00
Henrik Rydgård 48084e9c3e Cleanup, fix some oversights 2026-06-03 15:23:17 +02:00
Henrik Rydgård d0f4e5c2d1 Visualize bounding boxes in ImGe debugger by drawing their corners 2026-06-03 13:46:30 +02:00
Henrik Rydgård 1624a6da83 Delete some old now-unused variables, and remove an accidental use. 2026-06-03 13:28:40 +02:00
Henrik Rydgård 7f4c51c141 Merge pull request #21752 from hrydgard/clean-nans-sw
Clean out NaNs and INFs from PosFloat vertex coordinates
2026-06-03 10:38:13 +02:00
Henrik Rydgård ab108f7f0c BBOX: Avoid z clipping issues by culling in clip space. 2026-06-03 10:05:21 +02:00
Henrik Rydgård 86212f5384 Correct minor shader generator bug for depthclamp case. 2026-06-02 15:58:47 +02:00
Henrik Rydgård 79328a99b3 Vertex preview works again in both debuggers. 2026-06-02 15:40:37 +02:00
Henrik Rydgård c46774c923 Fix the ImGe debugger vertex list 2026-06-02 14:53:37 +02:00
Henrik Rydgård bb573e6e0c Well, it builds, but doesn't work yet. 2026-06-02 12:33:53 +02:00
Henrik Rydgård 5151df7366 Remove fbman, texcache parameters from SoftwareTransformParams 2026-06-02 11:39:33 +02:00
Henrik Rydgård 77d5ca3116 Remove the SoftwareTransform class, there's no state anymore 2026-06-02 11:39:33 +02:00
Henrik Rydgård 8113cb9147 Misc cleanup and renaming 2026-06-02 11:39:33 +02:00
Henrik Rydgård a317890c08 Remove the GPUDebugInterface class
Just a pointless extra layer in the class hiearchy, making it
unnecessarily hard to modify the interface.

Might as well hit GPUCommon directly.
2026-06-02 11:15:08 +02:00
Henrik Rydgård e6185ba6bb Clean out NaNs and INFs from vertex coordinates
This enables a behavior seen on the real PSP where 0 * NaN == 0 in the
GPU (NOTE: This means the vertex transform pipeline).

However, this
doesn't touch INFs unfortunately, and we need to modify those too...

This, together with #21715, finally fixes #20204 .
2026-06-02 10:52:39 +02:00
Henrik Rydgård 847953fd31 Fix wrong logic causing excessive software transform fallback if cull planes are missing. Minor cleanup. 2026-05-31 13:31:16 +02:00
Henrik Rydgård 702088c2d0 Fix backwards check for minZ/maxZ in fragment shader 2026-05-31 10:40:14 +02:00
Henrik Rydgård bdd72c08f3 Fix dirtying caused by clip flag state. This could probably be a bit smarter. 2026-05-30 21:47:21 +02:00
Henrik Rydgård f8b153ba2b Fix some issues with depth rounding, and depth clamp in D3D11 2026-05-30 19:07:59 +02:00
Henrik Rydgård 0e880a16f0 Flush on changed clipInfoFlags. This fixes many Z fighting artifacts caused by strange joining of meshes and sw/hw tranform conflict. 2026-05-30 19:07:59 +02:00
Henrik Rydgård 44ece6dfa2 Determine the clip flags directly when culling, simplifying the code. 2026-05-30 19:07:59 +02:00
Henrik Rydgård 2a5c2fa477 Check if the viewport transform matches the clip space. If so we can skip the near clip plane. 2026-05-30 19:07:59 +02:00
Henrik Rydgård 189dde8115 Cache the cull matrix. Minor bbox optimization. 2026-05-30 19:07:59 +02:00
Henrik Rydgård 116d91fcaa Viewport-scissor dirty state cleanup 2026-05-30 19:07:59 +02:00
Henrik Rydgård 0e8ba0d6fe Bugfixes, cleanup 2026-05-30 19:07:59 +02:00
Henrik Rydgård e75d9f8a5f Unify the bounding depth checks, correct them if minmax clip is needed 2026-05-30 19:07:59 +02:00
Henrik Rydgård 0eede05f5f Implement fragment shader depth clamp and min/max discard. Slow on some hardware, but it's a fallback. 2026-05-30 19:07:59 +02:00
Henrik Rydgård 66fd3e65d8 Remove some redundant function parameters 2026-05-30 19:07:59 +02:00