From 8e9a8b8d76ad0224459af987daa6b7d503a64707 Mon Sep 17 00:00:00 2001 From: nmkd <61149547+n00mkrad@users.noreply.github.com> Date: Sun, 16 Aug 2026 15:27:41 +0200 Subject: [PATCH] Allow disabling dithering when using software rendering --- Core/Config.cpp | 1 + Core/Config.h | 1 + GPU/Software/FuncId.cpp | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index 04eb036dd1..7a512bfe92 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -692,6 +692,7 @@ static const ConfigSetting graphicsSettings[] = { ConfigSetting("SkipBufferEffects", SETTING(g_Config, bSkipBufferEffects), false, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("DepthRasterMode", SETTING(g_Config, iDepthRasterMode), &DefaultDepthRaster, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("SoftwareRenderer", SETTING(g_Config, bSoftwareRendering), false, CfgFlag::PER_GAME), + ConfigSetting("SoftwareDisableDithering", SETTING(g_Config, bSoftwareDisableDithering), false, CfgFlag::PER_GAME), ConfigSetting("SoftwareRendererJit", SETTING(g_Config, bSoftwareRenderingJit), true, CfgFlag::PER_GAME), ConfigSetting("HardwareTransform", SETTING(g_Config, bHardwareTransform), true, CfgFlag::PER_GAME | CfgFlag::REPORT), ConfigSetting("TextureFiltering", SETTING(g_Config, iTexFiltering), 1, CfgFlag::PER_GAME | CfgFlag::REPORT), diff --git a/Core/Config.h b/Core/Config.h index 76dd510dfa..479c1dafed 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -294,6 +294,7 @@ public: bool bSoftwareRendering; bool bSoftwareRenderingJit; + bool bSoftwareDisableDithering; bool bHardwareTransform; bool bVendorBugChecksEnabled; diff --git a/GPU/Software/FuncId.cpp b/GPU/Software/FuncId.cpp index c024c39e78..6cbfd34d68 100644 --- a/GPU/Software/FuncId.cpp +++ b/GPU/Software/FuncId.cpp @@ -17,6 +17,7 @@ #include "Common/Data/Convert/ColorConv.h" #include "Common/StringUtils.h" +#include "Core/Config.h" #include "Core/MemMap.h" #include "GPU/Common/TextureDecoder.h" #include "GPU/GPUState.h" @@ -54,7 +55,7 @@ void ComputePixelFuncID(PixelFuncID *id) { // TODO: Could this be minz > 0x0000 || maxz < 0xFFFF? Maybe unsafe, depending on verts... id->applyDepthRange = !gstate.isModeThrough(); // Dither happens even in clear mode. - id->dithering = gstate.isDitherEnabled(); + id->dithering = gstate.isDitherEnabled() && !g_Config.bSoftwareDisableDithering; id->fbFormat = gstate.FrameBufFormat(); id->useStandardStride = gstate.FrameBufStride() == 512; id->applyColorWriteMask = gstate.getColorMask() != 0;