From 113c86f1b4661c7e300d3867cd26ed26b2640f2a Mon Sep 17 00:00:00 2001 From: AndrewGDX Date: Mon, 10 Nov 2025 15:03:38 +0300 Subject: Improved stereoscopic 3D settings --- Source/Core/VideoCommon/GeometryShaderManager.cpp | 6 ++---- Source/Core/VideoCommon/VideoConfig.cpp | 8 ++++---- Source/Core/VideoCommon/VideoConfig.h | 6 ++---- 3 files changed, 8 insertions(+), 12 deletions(-) (limited to 'Source/Core/VideoCommon') diff --git a/Source/Core/VideoCommon/GeometryShaderManager.cpp b/Source/Core/VideoCommon/GeometryShaderManager.cpp index 183b16acab..43c934ed28 100644 --- a/Source/Core/VideoCommon/GeometryShaderManager.cpp +++ b/Source/Core/VideoCommon/GeometryShaderManager.cpp @@ -54,8 +54,7 @@ void GeometryShaderManager::SetConstants(PrimitiveType prim) if (xfmem.projection.type == ProjectionType::Perspective) { - float offset = (g_ActiveConfig.iStereoDepth / 1000.0f) * - (g_ActiveConfig.iStereoDepthPercentage / 100.0f); + const float offset = g_ActiveConfig.stereo_depth; constants.stereoparams[0] = g_ActiveConfig.bStereoSwapEyes ? offset : -offset; constants.stereoparams[1] = g_ActiveConfig.bStereoSwapEyes ? -offset : offset; } @@ -64,8 +63,7 @@ void GeometryShaderManager::SetConstants(PrimitiveType prim) constants.stereoparams[0] = constants.stereoparams[1] = 0; } - constants.stereoparams[2] = (float)(g_ActiveConfig.iStereoConvergence * - (g_ActiveConfig.iStereoConvergencePercentage / 100.0f)); + constants.stereoparams[2] = g_ActiveConfig.stereo_convergence; dirty = true; } diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index c4d764176c..67eee5c5c3 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -162,12 +162,12 @@ void VideoConfig::Refresh() stereo_mode = Config::Get(Config::GFX_STEREO_MODE); stereo_per_eye_resolution_full = Config::Get(Config::GFX_STEREO_PER_EYE_RESOLUTION_FULL); - iStereoDepth = Config::Get(Config::GFX_STEREO_DEPTH); - iStereoConvergencePercentage = Config::Get(Config::GFX_STEREO_CONVERGENCE_PERCENTAGE); + stereo_depth = Config::Get(Config::GFX_STEREO_DEPTH) * + Config::Get(Config::GFX_STEREO_DEPTH_PERCENTAGE) * 0.00001f; + stereo_convergence = Config::Get(Config::GFX_STEREO_CONVERGENCE) * + Config::Get(Config::GFX_STEREO_CONVERGENCE_PERCENTAGE) * 0.01f; bStereoSwapEyes = Config::Get(Config::GFX_STEREO_SWAP_EYES); - iStereoConvergence = Config::Get(Config::GFX_STEREO_CONVERGENCE); bStereoEFBMonoDepth = Config::Get(Config::GFX_STEREO_EFB_MONO_DEPTH); - iStereoDepthPercentage = Config::Get(Config::GFX_STEREO_DEPTH_PERCENTAGE); bEFBAccessEnable = Config::Get(Config::GFX_HACK_EFB_ACCESS_ENABLE); bEFBAccessDeferInvalidation = Config::Get(Config::GFX_HACK_EFB_DEFER_INVALIDATION); diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h index e42b8e5d85..b826fcb783 100644 --- a/Source/Core/VideoCommon/VideoConfig.h +++ b/Source/Core/VideoCommon/VideoConfig.h @@ -310,12 +310,10 @@ struct VideoConfig final // Stereoscopy StereoMode stereo_mode{}; bool stereo_per_eye_resolution_full = false; - int iStereoDepth = 0; - int iStereoConvergence = 0; - int iStereoConvergencePercentage = 0; + float stereo_depth = 0; + float stereo_convergence = 0; bool bStereoSwapEyes = false; bool bStereoEFBMonoDepth = false; - int iStereoDepthPercentage = 0; // D3D only config, mostly to be merged into the above int iAdapter = 0; -- cgit v1.2.3