diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 0ec7bc6b2..b4e3a2ce9 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -95,6 +95,11 @@ void Config::ReadValues() { // Renderer Settings::values.use_hw_renderer = sdl2_config->GetBoolean("Renderer", "use_hw_renderer", true); + Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", true); + Settings::values.shaders_accurate_gs = + sdl2_config->GetBoolean("Renderer", "shaders_accurate_gs", true); + Settings::values.shaders_accurate_mul = + sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false); Settings::values.use_shader_jit = sdl2_config->GetBoolean("Renderer", "use_shader_jit", true); Settings::values.resolution_factor = static_cast(sdl2_config->GetInteger("Renderer", "resolution_factor", 1)); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 18be9ec25..7179d6f94 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -77,6 +77,18 @@ use_cpu_jit = # 0: Software, 1 (default): Hardware use_hw_renderer = +# Whether to use hardware shaders to emulate 3DS shaders +# 0: Software, 1 (default): Hardware +use_hw_shader = + +# Whether to use accurate multiplication in hardware shaders +# 0: Off (Default. Faster, but causes issues in some games) 1: On (Slower, but correct) +shaders_accurate_mul = + +# Whether to fallback to software for geometry shaders +# 0: Off (Faster, but causes issues in some games) 1: On (Default. Slower, but correct) +shaders_accurate_gs = + # Whether to use the Just-In-Time (JIT) compiler for shader emulation # 0: Interpreter (slow), 1 (default): JIT (fast) use_shader_jit = diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index ca99856b5..bdb296659 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -83,6 +83,10 @@ void Config::ReadValues() { qt_config->beginGroup("Renderer"); Settings::values.use_hw_renderer = qt_config->value("use_hw_renderer", true).toBool(); + Settings::values.use_hw_shader = qt_config->value("use_hw_shader", true).toBool(); + Settings::values.shaders_accurate_gs = qt_config->value("shaders_accurate_gs", true).toBool(); + Settings::values.shaders_accurate_mul = + qt_config->value("shaders_accurate_mul", false).toBool(); Settings::values.use_shader_jit = qt_config->value("use_shader_jit", true).toBool(); Settings::values.resolution_factor = static_cast(qt_config->value("resolution_factor", 1).toInt()); @@ -272,6 +276,9 @@ void Config::SaveValues() { qt_config->beginGroup("Renderer"); qt_config->setValue("use_hw_renderer", Settings::values.use_hw_renderer); + qt_config->setValue("use_hw_shader", Settings::values.use_hw_shader); + qt_config->setValue("shaders_accurate_gs", Settings::values.shaders_accurate_gs); + qt_config->setValue("shaders_accurate_mul", Settings::values.shaders_accurate_mul); qt_config->setValue("use_shader_jit", Settings::values.use_shader_jit); qt_config->setValue("resolution_factor", Settings::values.resolution_factor); qt_config->setValue("use_vsync", Settings::values.use_vsync);