RPCS3 / rpcs3

PlayStation 3 emulator and debugger
https://rpcs3.net/
GNU General Public License v2.0
15.47k stars 1.92k forks source link

[Feature request] Anisotropic filter setting filtering out not fully mipmapped textures #14023

Open AniLeo opened 1 year ago

AniLeo commented 1 year ago

Quick summary

Currently the Anisotropic Filtering options for overriding with 2x to 16x can introduce graphical glitches as it will run on textures that it shouldn't be running on, this causes graphical glitches usually seen in the form of random red pixels across the frame

Example with Anisotropic Filter 16x on Drakengard 3's menu image

Details

NVIDIA driver also has an 'Enhanced' option that does something similar

https://www.nvidia.com/content/Control-Panel-Help/vLatest/en-gb/mergedProjects/nv3dENG/Tips_for_Setting_Antialiasing.htm

Other emulators such as Ryujinx already tackled this issue as well, see https://github.com/Ryujinx/Ryujinx/pull/2832

kd-11 commented 1 year ago

Some points to keep in mind:

  1. Due to limited memory budget, its not unusual to have missing mipmaps
  2. This forces us to introduce two separate behaviors like drivers do. Override mode vs Enhance mode because we're definitely going to have cases where the devs just skipped the mipmaps for some texture.
  3. The workaround to use mipmaps doesn't work well for us since some screenspace effects use mipmaps for DoF effects.

Ftr, we should go ahead and split the feature into the 2 modes. It should at least fix some games.