Specify which games need vertex depth rounding instead of which ones don't.

Vertex depth rounding is a not-fully-accurate hack, and most games are better off with the extra depth precision
of 24-bit Z than reducing it to a not-fully-accurate 16-bit. So let's only use it where necessary, like in Phantasy Star.

See issue #8187.
This commit is contained in:
Henrik Rydgard 2016-01-16 11:31:27 +01:00
parent 03674fd571
commit 7e24801fc1
5 changed files with 12 additions and 50 deletions

View File

@ -45,7 +45,7 @@ void Compatibility::Clear() {
}
void Compatibility::CheckSettings(IniFile &iniFile, const std::string &gameID) {
CheckSetting(iniFile, gameID, "NoDepthRounding", flags_.NoDepthRounding);
CheckSetting(iniFile, gameID, "VertexDepthRounding", flags_.VertexDepthRounding);
CheckSetting(iniFile, gameID, "PixelDepthRounding", flags_.PixelDepthRounding);
}

View File

@ -45,7 +45,7 @@
// We already have the Action Replay-based cheat system for such use cases.
struct CompatFlags {
bool NoDepthRounding;
bool VertexDepthRounding;
bool PixelDepthRounding;
};

View File

@ -478,7 +478,7 @@ void DIRECTX9_GPU::CheckGPUFeatures() {
features |= GPU_SUPPORTS_TEXTURE_LOD_CONTROL;
features |= GPU_PREFER_CPU_DOWNLOAD;
if (!PSP_CoreParameter().compat.flags().NoDepthRounding) {
if (PSP_CoreParameter().compat.flags().VertexDepthRounding) {
features |= GPU_ROUND_DEPTH_TO_16BIT;
}

View File

@ -557,7 +557,7 @@ void GLES_GPU::CheckGPUFeatures() {
if ((!gl_extensions.IsGLES || gl_extensions.GLES3) && PSP_CoreParameter().compat.flags().PixelDepthRounding) {
features |= GPU_ROUND_FRAGMENT_DEPTH_TO_16BIT;
} else {
if (!PSP_CoreParameter().compat.flags().NoDepthRounding) {
if (PSP_CoreParameter().compat.flags().VertexDepthRounding) {
features |= GPU_ROUND_DEPTH_TO_16BIT;
}
}

View File

@ -28,52 +28,14 @@
# Issue numbers refer to issues on https://github.com/hrydgard/ppsspp/issues
# ========================================================================================
[NoDepthRounding]
# Fight Night Round 3
# Our accurate rounding of depth to 16-bit precision appears to cause a regression
# in this game. The game doesn't seem to need it, so let's turn it off.
# Issue #8004
ULES00270 = true
ULUS10066 = true
# Ridge Racer
# Our accurate rounding of depth to 16-bit precision appears to cause a regression
# in this game. The game doesn't seem to need it, so let's turn it off.
# Issue 8031
UCAS40015 = true
ULUS10001 = true
UCKS45002 = true
UCES00002 = true
ULJS19002 = true
UCKS45053 = true
NPJH50140 = true
# Do the same for Ridge Racer 2, it's nearly the exact same game except more levels and cars.
ULJS00080 = true
UCES00422 = true
NPJH50366 = true
# Same for Lost Heroes (JP).
ULJS00489 = true
NPJH50647 = true
# Summon Night 5 (JP). Issue #8181
ULJS00553 = true
NPJH50696 = true
ULJS19096 = true
#MotorStorm Arctic Edge
UCUS98743 = true
UCES01250 = true
UCAS40266 = true
UCJS10104 = true
NPJG00047 = true
UCKS45124 = true
#Saigo no Yakusoku no Monogatari (JP)
NPJH50416 = true
UCAS40339 = true
ULJM05860 = true
[VertexDepthRounding]
# Phantasy Star Portable needs depth rounding to 16-bit precision for text to show up.
# It's enough to do it at the vertex granularity. #3777
ULJM05309 = true
ULUS10410 = true
ULES01218 = true
ULJM08023 = true
ULES01218 = true
[PixelDepthRounding]
# Heroes Phantasia requires pixel depth rounding.