From 6f2e843193dcd35ea0754dcfa27536b3ebef1548 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Wed, 31 Jan 2024 09:51:18 +0100 Subject: [PATCH] vk/gl: add amber-blue anaglyph (ColorCode 3D) --- .../Program/GLSLSnippets/VideoOutCalibrationPass.glsl | 9 +++++++++ rpcs3/Emu/system_config_types.cpp | 1 + rpcs3/Emu/system_config_types.h | 1 + rpcs3/rpcs3qt/emu_settings.cpp | 1 + 4 files changed, 12 insertions(+) diff --git a/rpcs3/Emu/RSX/Program/GLSLSnippets/VideoOutCalibrationPass.glsl b/rpcs3/Emu/RSX/Program/GLSLSnippets/VideoOutCalibrationPass.glsl index 90545d3eea..6e47b3ef40 100644 --- a/rpcs3/Emu/RSX/Program/GLSLSnippets/VideoOutCalibrationPass.glsl +++ b/rpcs3/Emu/RSX/Program/GLSLSnippets/VideoOutCalibrationPass.glsl @@ -21,6 +21,7 @@ layout(location=0) out vec4 ocol; #define STEREO_MODE_ANAGLYPH_RED_CYAN 6 #define STEREO_MODE_ANAGLYPH_MAGENTA_CYAN 7 #define STEREO_MODE_ANAGLYPH_TRIOSCOPIC 8 +#define STEREO_MODE_ANAGLYPH_AMBER_BLUE 9 vec2 left_single_matrix = vec2(1.f, 0.4898f); vec2 right_single_matrix = vec2(0.f, 0.510204f); @@ -75,6 +76,10 @@ vec4 read_source() left = texture(fs0, tc0 * left_single_matrix); right = texture(fs0, (tc0 * left_single_matrix) + right_single_matrix); return vec4(right.r, left.g, right.b, 1.f); + case STEREO_MODE_ANAGLYPH_AMBER_BLUE: + left = texture(fs0, tc0 * left_single_matrix); + right = texture(fs0, (tc0 * left_single_matrix) + right_single_matrix); + return vec4(left.r, left.g, (right.r + right.g + right.b) / 3.f, 1.f); case STEREO_MODE_SIDE_BY_SIDE: return (tc0.x < 0.5) ? texture(fs0, tc0 * sbs_single_matrix) @@ -115,6 +120,10 @@ vec4 read_source() left = texture(fs0, tc0); right = texture(fs1, tc0); return vec4(right.r, left.g, right.b, 1.f); + case STEREO_MODE_ANAGLYPH_AMBER_BLUE: + left = texture(fs0, tc0); + right = texture(fs1, tc0); + return vec4(left.r, left.g, (right.r + right.g + right.b) / 3.f, 1.f); case STEREO_MODE_SIDE_BY_SIDE: return (tc0.x < 0.5) ? texture(fs0, (tc0 * sbs_multi_matrix)) diff --git a/rpcs3/Emu/system_config_types.cpp b/rpcs3/Emu/system_config_types.cpp index 4f14587455..bb19a985d5 100644 --- a/rpcs3/Emu/system_config_types.cpp +++ b/rpcs3/Emu/system_config_types.cpp @@ -648,6 +648,7 @@ void fmt_class_string::format(std::string& out, u64 case stereo_render_mode_options::anaglyph_red_cyan: return "Anaglyph Red-Cyan"; case stereo_render_mode_options::anaglyph_magenta_cyan: return "Anaglyph Magenta-Cyan"; case stereo_render_mode_options::anaglyph_trioscopic: return "Anaglyph Trioscopic"; + case stereo_render_mode_options::anaglyph_amber_blue: return "Anaglyph Amber-Blue"; } return unknown; diff --git a/rpcs3/Emu/system_config_types.h b/rpcs3/Emu/system_config_types.h index 5e81676499..c55e6d880e 100644 --- a/rpcs3/Emu/system_config_types.h +++ b/rpcs3/Emu/system_config_types.h @@ -324,6 +324,7 @@ enum class stereo_render_mode_options anaglyph_red_cyan, anaglyph_magenta_cyan, anaglyph_trioscopic, + anaglyph_amber_blue, }; enum class xfloat_accuracy diff --git a/rpcs3/rpcs3qt/emu_settings.cpp b/rpcs3/rpcs3qt/emu_settings.cpp index 5b29a66339..1f4cad8a3a 100644 --- a/rpcs3/rpcs3qt/emu_settings.cpp +++ b/rpcs3/rpcs3qt/emu_settings.cpp @@ -1294,6 +1294,7 @@ QString emu_settings::GetLocalizedSetting(const QString& original, emu_settings_ case stereo_render_mode_options::anaglyph_red_cyan: return tr("Anaglyph Red-Cyan", "3D Display Mode"); case stereo_render_mode_options::anaglyph_magenta_cyan: return tr("Anaglyph Magenta-Cyan", "3D Display Mode"); case stereo_render_mode_options::anaglyph_trioscopic: return tr("Anaglyph Green-Magenta (Trioscopic)", "3D Display Mode"); + case stereo_render_mode_options::anaglyph_amber_blue: return tr("Anaglyph Amber-Blue (ColorCode 3D)", "3D Display Mode"); } break; case emu_settings_type::MidiDevices: