libretro / swanstation

GNU General Public License v3.0
121 stars 22 forks source link

Feature Request: Port "PGXP Depth Clear Threshold" from Duckstation to Swanstation #50

Closed Konic-and-Snuckles closed 1 year ago

Konic-and-Snuckles commented 1 year ago

Currently PGXP has very low compatibility, however some games work well when depth clear threshold is able to be lowered from default value of 4096 to some other number. Tomb Raider II through Chronicles do not play well with PGXP Depth Buffer due to sky box coordinates passing in front of textures closer to the foreground. In Duckstation, lowering this value from 4096 to something like 96 or 128 fixes the issue while also looking better than PGXP Depth Buffer=off. Please consider porting this feature to Swanstation.

DarthMew commented 1 year ago

The option could be added, but it would have to be implemented with fixed values as entries as opposed to the very granular way it's done in upstream due to a hard limit in the amount of entries a core option can have in RetroArch (so if a situation like a game only looking good with a value of say 77 or 562 occurs, it is not going to work). Dunno how much worth it is to implement if very granular values are required.

Konic-and-Snuckles commented 1 year ago

The option could be added, but it would have to be implemented with fixed values as entries as opposed to the very granular way it's done in upstream due to a hard limit in the amount of entries a core option can have in RetroArch (so if a situation like a game only looking good with a value of say 77 or 562 occurs, it is not going to work). Dunno how much worth it is to implement if very granular values are required.

Good point. I think only 11 fixed values would be necessary to cover the whole range: 0, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096. Those values might seem arbitrary but IIRC, Z fidelity is highest at the near Z plane so there ought to be more granular control there. And I think it makes logical sense to let users simply halve the depth threshold from 4096 down to 0, stopping when all distant objects are outside the Z-buffer and no longer occluding near Z objects.

DarthMew commented 1 year ago

Added via https://github.com/libretro/swanstation/commit/82390b89fe73b4abd2df6ac7b5dae319ff7785a4