AdvancedWidget, Bloom Fixes: Allow for downscaled bloom to be blurred.

Update game ini's for bloom.
This commit is contained in:
TryTwo 2024-05-08 02:11:49 -07:00
parent b6ea92f1f0
commit fd8a36d4d9
16 changed files with 238 additions and 223 deletions

View File

@ -27,6 +27,7 @@ ArbitraryMipmapDetection = True
[Video_Settings] [Video_Settings]
EFBScaledExclude = 520 EFBScaledExclude = 520
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeDownscale = True
[Video_Stereoscopy] [Video_Stereoscopy]
StereoConvergence = 732 StereoConvergence = 732

View File

@ -20,4 +20,5 @@ StereoConvergence = 1
[Video_Settings] [Video_Settings]
EFBScaledExclude = 140 EFBScaledExclude = 140
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeDownscale = True

View File

@ -26,7 +26,7 @@ XFBToTextureEnable = False
DeferEFBCopies = False DeferEFBCopies = False
[Video_Settings] [Video_Settings]
EFBScaledExclude = 321 EFBScaledExclude = 320
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeAlt = True EFBScaledExcludeAlt = True
EFBScaledExcludeBlur = True EFBScaledExcludeBlur = True

View File

@ -19,3 +19,4 @@ EFBEmulateFormatChanges = True
[Video_Settings] [Video_Settings]
EFBScaledExclude = 320 EFBScaledExclude = 320
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeDownscale = True

View File

@ -34,3 +34,4 @@ ArbitraryMipmapDetection = True
[Video_Settings] [Video_Settings]
EFBScaledExclude = 330 EFBScaledExclude = 330
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeBlur = True

View File

@ -19,3 +19,4 @@ EFBToTextureEnable = False
SafeTextureCacheColorSamples = 512 SafeTextureCacheColorSamples = 512
EFBScaledExclude = 120 EFBScaledExclude = 120
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeDownscale = True

View File

@ -18,4 +18,5 @@ EFBAccessEnable = False
[Video_Settings] [Video_Settings]
EFBScaledExclude = 170 EFBScaledExclude = 170
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeAlt = True EFBScaledExcludeAlt = True
EFBScaledExcludeBlur = True

View File

@ -17,3 +17,4 @@ SafeTextureCacheColorSamples = 0
[Video_Settings] [Video_Settings]
EFBScaledExclude = 161 EFBScaledExclude = 161
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeDownscale = True

View File

@ -18,3 +18,4 @@ ImmediateXFBEnable = False
[Video_Settings] [Video_Settings]
EFBScaledExclude = 80 EFBScaledExclude = 80
EFBScaledExcludeEnabled = True EFBScaledExcludeEnabled = True
EFBScaledExcludeDownscale = True

View File

@ -116,6 +116,8 @@ const Info<int> GFX_BLOOM_FIX_BLUR_RADIUS{{System::GFX, "Settings", "EFBScaledEx
const Info<int> GFX_BLOOM_FIX_WIDTH{{System::GFX, "Settings", "EFBScaledExclude"}, 0}; const Info<int> GFX_BLOOM_FIX_WIDTH{{System::GFX, "Settings", "EFBScaledExclude"}, 0};
const Info<bool> GFX_BLOOM_FIX_ALT{{System::GFX, "Settings", "EFBScaledExcludeAlt"}, false}; const Info<bool> GFX_BLOOM_FIX_ALT{{System::GFX, "Settings", "EFBScaledExcludeAlt"}, false};
const Info<bool> GFX_BLOOM_FIX_BLUR{{System::GFX, "Settings", "EFBScaledExcludeBlur"}, false}; const Info<bool> GFX_BLOOM_FIX_BLUR{{System::GFX, "Settings", "EFBScaledExcludeBlur"}, false};
const Info<bool> GFX_BLOOM_FIX_DOWNSCALE{{System::GFX, "Settings", "EFBScaledExcludeDownscale"},
false};
const Info<bool> GFX_BLOOM_FIX_ENABLED{{System::GFX, "Settings", "EFBScaledExcludeEnabled"}, false}; const Info<bool> GFX_BLOOM_FIX_ENABLED{{System::GFX, "Settings", "EFBScaledExcludeEnabled"}, false};
const Info<TriState> GFX_MTL_MANUALLY_UPLOAD_BUFFERS{ const Info<TriState> GFX_MTL_MANUALLY_UPLOAD_BUFFERS{

View File

@ -18,176 +18,177 @@ enum class FrameDumpResolutionType : int;
namespace Config namespace Config
{ {
// Configuration Information // Configuration Information
// Graphics.Hardware // Graphics.Hardware
extern const Info<bool> GFX_VSYNC; extern const Info<bool> GFX_VSYNC;
extern const Info<int> GFX_ADAPTER; extern const Info<int> GFX_ADAPTER;
// Graphics.Settings // Graphics.Settings
extern const Info<bool> GFX_WIDESCREEN_HACK; extern const Info<bool> GFX_WIDESCREEN_HACK;
extern const Info<AspectMode> GFX_ASPECT_RATIO; extern const Info<AspectMode> GFX_ASPECT_RATIO;
extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_WIDTH; extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_WIDTH;
extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_HEIGHT; extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_HEIGHT;
extern const Info<AspectMode> GFX_SUGGESTED_ASPECT_RATIO; extern const Info<AspectMode> GFX_SUGGESTED_ASPECT_RATIO;
extern const Info<u32> GFX_WIDESCREEN_HEURISTIC_TRANSITION_THRESHOLD; extern const Info<u32> GFX_WIDESCREEN_HEURISTIC_TRANSITION_THRESHOLD;
extern const Info<float> GFX_WIDESCREEN_HEURISTIC_ASPECT_RATIO_SLOP; extern const Info<float> GFX_WIDESCREEN_HEURISTIC_ASPECT_RATIO_SLOP;
extern const Info<float> GFX_WIDESCREEN_HEURISTIC_STANDARD_RATIO; extern const Info<float> GFX_WIDESCREEN_HEURISTIC_STANDARD_RATIO;
extern const Info<float> GFX_WIDESCREEN_HEURISTIC_WIDESCREEN_RATIO; extern const Info<float> GFX_WIDESCREEN_HEURISTIC_WIDESCREEN_RATIO;
extern const Info<bool> GFX_CROP; extern const Info<bool> GFX_CROP;
extern const Info<int> GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES; extern const Info<int> GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES;
extern const Info<bool> GFX_SHOW_FPS; extern const Info<bool> GFX_SHOW_FPS;
extern const Info<bool> GFX_SHOW_FTIMES; extern const Info<bool> GFX_SHOW_FTIMES;
extern const Info<bool> GFX_SHOW_VPS; extern const Info<bool> GFX_SHOW_VPS;
extern const Info<bool> GFX_SHOW_VTIMES; extern const Info<bool> GFX_SHOW_VTIMES;
extern const Info<bool> GFX_SHOW_GRAPHS; extern const Info<bool> GFX_SHOW_GRAPHS;
extern const Info<bool> GFX_SHOW_SPEED; extern const Info<bool> GFX_SHOW_SPEED;
extern const Info<bool> GFX_SHOW_SPEED_COLORS; extern const Info<bool> GFX_SHOW_SPEED_COLORS;
extern const Info<int> GFX_PERF_SAMP_WINDOW; extern const Info<int> GFX_PERF_SAMP_WINDOW;
extern const Info<bool> GFX_SHOW_NETPLAY_PING; extern const Info<bool> GFX_SHOW_NETPLAY_PING;
extern const Info<bool> GFX_SHOW_NETPLAY_MESSAGES; extern const Info<bool> GFX_SHOW_NETPLAY_MESSAGES;
extern const Info<bool> GFX_LOG_RENDER_TIME_TO_FILE; extern const Info<bool> GFX_LOG_RENDER_TIME_TO_FILE;
extern const Info<bool> GFX_OVERLAY_STATS; extern const Info<bool> GFX_OVERLAY_STATS;
extern const Info<bool> GFX_OVERLAY_PROJ_STATS; extern const Info<bool> GFX_OVERLAY_PROJ_STATS;
extern const Info<bool> GFX_OVERLAY_SCISSOR_STATS; extern const Info<bool> GFX_OVERLAY_SCISSOR_STATS;
extern const Info<bool> GFX_DUMP_TEXTURES; extern const Info<bool> GFX_DUMP_TEXTURES;
extern const Info<bool> GFX_DUMP_MIP_TEXTURES; extern const Info<bool> GFX_DUMP_MIP_TEXTURES;
extern const Info<bool> GFX_DUMP_BASE_TEXTURES; extern const Info<bool> GFX_DUMP_BASE_TEXTURES;
extern const Info<int> GFX_TEXTURE_PNG_COMPRESSION_LEVEL; extern const Info<int> GFX_TEXTURE_PNG_COMPRESSION_LEVEL;
extern const Info<bool> GFX_HIRES_TEXTURES; extern const Info<bool> GFX_HIRES_TEXTURES;
extern const Info<bool> GFX_CACHE_HIRES_TEXTURES; extern const Info<bool> GFX_CACHE_HIRES_TEXTURES;
extern const Info<bool> GFX_DUMP_EFB_TARGET; extern const Info<bool> GFX_DUMP_EFB_TARGET;
extern const Info<bool> GFX_DUMP_XFB_TARGET; extern const Info<bool> GFX_DUMP_XFB_TARGET;
extern const Info<bool> GFX_DUMP_FRAMES_AS_IMAGES; extern const Info<bool> GFX_DUMP_FRAMES_AS_IMAGES;
extern const Info<bool> GFX_USE_FFV1; extern const Info<bool> GFX_USE_FFV1;
extern const Info<std::string> GFX_DUMP_FORMAT; extern const Info<std::string> GFX_DUMP_FORMAT;
extern const Info<std::string> GFX_DUMP_CODEC; extern const Info<std::string> GFX_DUMP_CODEC;
extern const Info<std::string> GFX_DUMP_PIXEL_FORMAT; extern const Info<std::string> GFX_DUMP_PIXEL_FORMAT;
extern const Info<std::string> GFX_DUMP_ENCODER; extern const Info<std::string> GFX_DUMP_ENCODER;
extern const Info<std::string> GFX_DUMP_PATH; extern const Info<std::string> GFX_DUMP_PATH;
extern const Info<int> GFX_BITRATE_KBPS; extern const Info<int> GFX_BITRATE_KBPS;
extern const Info<FrameDumpResolutionType> GFX_FRAME_DUMPS_RESOLUTION_TYPE; extern const Info<FrameDumpResolutionType> GFX_FRAME_DUMPS_RESOLUTION_TYPE;
extern const Info<int> GFX_PNG_COMPRESSION_LEVEL; extern const Info<int> GFX_PNG_COMPRESSION_LEVEL;
extern const Info<bool> GFX_ENABLE_GPU_TEXTURE_DECODING; extern const Info<bool> GFX_ENABLE_GPU_TEXTURE_DECODING;
extern const Info<bool> GFX_ENABLE_PIXEL_LIGHTING; extern const Info<bool> GFX_ENABLE_PIXEL_LIGHTING;
extern const Info<bool> GFX_FAST_DEPTH_CALC; extern const Info<bool> GFX_FAST_DEPTH_CALC;
extern const Info<u32> GFX_MSAA; extern const Info<u32> GFX_MSAA;
extern const Info<bool> GFX_SSAA; extern const Info<bool> GFX_SSAA;
extern const Info<int> GFX_EFB_SCALE; extern const Info<int> GFX_EFB_SCALE;
extern const Info<int> GFX_MAX_EFB_SCALE; extern const Info<int> GFX_MAX_EFB_SCALE;
extern const Info<bool> GFX_TEXFMT_OVERLAY_ENABLE; extern const Info<bool> GFX_TEXFMT_OVERLAY_ENABLE;
extern const Info<bool> GFX_TEXFMT_OVERLAY_CENTER; extern const Info<bool> GFX_TEXFMT_OVERLAY_CENTER;
extern const Info<bool> GFX_ENABLE_WIREFRAME; extern const Info<bool> GFX_ENABLE_WIREFRAME;
extern const Info<bool> GFX_DISABLE_FOG; extern const Info<bool> GFX_DISABLE_FOG;
extern const Info<bool> GFX_BORDERLESS_FULLSCREEN; extern const Info<bool> GFX_BORDERLESS_FULLSCREEN;
extern const Info<bool> GFX_ENABLE_VALIDATION_LAYER; extern const Info<bool> GFX_ENABLE_VALIDATION_LAYER;
extern const Info<bool> GFX_BACKEND_MULTITHREADING; extern const Info<bool> GFX_BACKEND_MULTITHREADING;
extern const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL; extern const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL;
extern const Info<bool> GFX_SHADER_CACHE; extern const Info<bool> GFX_SHADER_CACHE;
extern const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING; extern const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING;
extern const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE; extern const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE;
extern const Info<int> GFX_SHADER_COMPILER_THREADS; extern const Info<int> GFX_SHADER_COMPILER_THREADS;
extern const Info<int> GFX_SHADER_PRECOMPILER_THREADS; extern const Info<int> GFX_SHADER_PRECOMPILER_THREADS;
extern const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE; extern const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE;
extern const Info<bool> GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION; extern const Info<bool> GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION;
extern const Info<bool> GFX_CPU_CULL; extern const Info<bool> GFX_CPU_CULL;
extern const Info<TriState> GFX_MTL_MANUALLY_UPLOAD_BUFFERS; extern const Info<TriState> GFX_MTL_MANUALLY_UPLOAD_BUFFERS;
extern const Info<TriState> GFX_MTL_USE_PRESENT_DRAWABLE; extern const Info<TriState> GFX_MTL_USE_PRESENT_DRAWABLE;
extern const Info<bool> GFX_SW_DUMP_OBJECTS; extern const Info<bool> GFX_SW_DUMP_OBJECTS;
extern const Info<bool> GFX_SW_DUMP_TEV_STAGES; extern const Info<bool> GFX_SW_DUMP_TEV_STAGES;
extern const Info<bool> GFX_SW_DUMP_TEV_TEX_FETCHES; extern const Info<bool> GFX_SW_DUMP_TEV_TEX_FETCHES;
extern const Info<bool> GFX_PREFER_GLES; extern const Info<bool> GFX_PREFER_GLES;
extern const Info<bool> GFX_MODS_ENABLE; extern const Info<bool> GFX_MODS_ENABLE;
// Graphics.Enhancements // Graphics.Enhancements
extern const Info<TextureFilteringMode> GFX_ENHANCE_FORCE_TEXTURE_FILTERING; extern const Info<TextureFilteringMode> GFX_ENHANCE_FORCE_TEXTURE_FILTERING;
extern const Info<int> GFX_ENHANCE_MAX_ANISOTROPY; // NOTE - this is x in (1 << x) extern const Info<int> GFX_ENHANCE_MAX_ANISOTROPY; // NOTE - this is x in (1 << x)
extern const Info<OutputResamplingMode> GFX_ENHANCE_OUTPUT_RESAMPLING; extern const Info<OutputResamplingMode> GFX_ENHANCE_OUTPUT_RESAMPLING;
extern const Info<std::string> GFX_ENHANCE_POST_SHADER; extern const Info<std::string> GFX_ENHANCE_POST_SHADER;
extern const Info<bool> GFX_ENHANCE_FORCE_TRUE_COLOR; extern const Info<bool> GFX_ENHANCE_FORCE_TRUE_COLOR;
extern const Info<bool> GFX_ENHANCE_DISABLE_COPY_FILTER; extern const Info<bool> GFX_ENHANCE_DISABLE_COPY_FILTER;
extern const Info<bool> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION; extern const Info<bool> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION;
extern const Info<float> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD; extern const Info<float> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD;
extern const Info<bool> GFX_ENHANCE_HDR_OUTPUT; extern const Info<bool> GFX_ENHANCE_HDR_OUTPUT;
// Color.Correction // Color.Correction
static constexpr float GFX_CC_GAME_GAMMA_MIN = 2.2f; static constexpr float GFX_CC_GAME_GAMMA_MIN = 2.2f;
static constexpr float GFX_CC_GAME_GAMMA_MAX = 2.8f; static constexpr float GFX_CC_GAME_GAMMA_MAX = 2.8f;
static constexpr float GFX_CC_DISPLAY_GAMMA_MIN = 2.2f; static constexpr float GFX_CC_DISPLAY_GAMMA_MIN = 2.2f;
static constexpr float GFX_CC_DISPLAY_GAMMA_MAX = 2.4f; static constexpr float GFX_CC_DISPLAY_GAMMA_MAX = 2.4f;
static constexpr float GFX_CC_HDR_PAPER_WHITE_NITS_MIN = 80.f; static constexpr float GFX_CC_HDR_PAPER_WHITE_NITS_MIN = 80.f;
static constexpr float GFX_CC_HDR_PAPER_WHITE_NITS_MAX = 500.f; static constexpr float GFX_CC_HDR_PAPER_WHITE_NITS_MAX = 500.f;
extern const Info<bool> GFX_CC_CORRECT_COLOR_SPACE; extern const Info<bool> GFX_CC_CORRECT_COLOR_SPACE;
extern const Info<ColorCorrectionRegion> GFX_CC_GAME_COLOR_SPACE; extern const Info<ColorCorrectionRegion> GFX_CC_GAME_COLOR_SPACE;
extern const Info<bool> GFX_CC_CORRECT_GAMMA; extern const Info<bool> GFX_CC_CORRECT_GAMMA;
extern const Info<float> GFX_CC_GAME_GAMMA; extern const Info<float> GFX_CC_GAME_GAMMA;
extern const Info<bool> GFX_CC_SDR_DISPLAY_GAMMA_SRGB; extern const Info<bool> GFX_CC_SDR_DISPLAY_GAMMA_SRGB;
extern const Info<float> GFX_CC_SDR_DISPLAY_CUSTOM_GAMMA; extern const Info<float> GFX_CC_SDR_DISPLAY_CUSTOM_GAMMA;
extern const Info<float> GFX_CC_HDR_PAPER_WHITE_NITS; extern const Info<float> GFX_CC_HDR_PAPER_WHITE_NITS;
// Graphics.Stereoscopy // Graphics.Stereoscopy
extern const Info<StereoMode> GFX_STEREO_MODE; extern const Info<StereoMode> GFX_STEREO_MODE;
extern const Info<int> GFX_STEREO_DEPTH; extern const Info<int> GFX_STEREO_DEPTH;
extern const Info<int> GFX_STEREO_CONVERGENCE_PERCENTAGE; extern const Info<int> GFX_STEREO_CONVERGENCE_PERCENTAGE;
extern const Info<bool> GFX_STEREO_SWAP_EYES; extern const Info<bool> GFX_STEREO_SWAP_EYES;
extern const Info<int> GFX_STEREO_CONVERGENCE; extern const Info<int> GFX_STEREO_CONVERGENCE;
extern const Info<bool> GFX_STEREO_EFB_MONO_DEPTH; extern const Info<bool> GFX_STEREO_EFB_MONO_DEPTH;
extern const Info<int> GFX_STEREO_DEPTH_PERCENTAGE; extern const Info<int> GFX_STEREO_DEPTH_PERCENTAGE;
// Stereoscopy pseudo-limits for consistent behavior between enhancements tab and hotkeys. // Stereoscopy pseudo-limits for consistent behavior between enhancements tab and hotkeys.
static constexpr int GFX_STEREO_DEPTH_MAXIMUM = 100; static constexpr int GFX_STEREO_DEPTH_MAXIMUM = 100;
static constexpr int GFX_STEREO_CONVERGENCE_MAXIMUM = 200; static constexpr int GFX_STEREO_CONVERGENCE_MAXIMUM = 200;
// Graphics.Hacks // Graphics.Hacks
extern const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE; extern const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE;
extern const Info<bool> GFX_HACK_EFB_DEFER_INVALIDATION; extern const Info<bool> GFX_HACK_EFB_DEFER_INVALIDATION;
extern const Info<int> GFX_HACK_EFB_ACCESS_TILE_SIZE; extern const Info<int> GFX_HACK_EFB_ACCESS_TILE_SIZE;
extern const Info<bool> GFX_HACK_BBOX_ENABLE; extern const Info<bool> GFX_HACK_BBOX_ENABLE;
extern const Info<bool> GFX_HACK_FORCE_PROGRESSIVE; extern const Info<bool> GFX_HACK_FORCE_PROGRESSIVE;
extern const Info<bool> GFX_HACK_SKIP_EFB_COPY_TO_RAM; extern const Info<bool> GFX_HACK_SKIP_EFB_COPY_TO_RAM;
extern const Info<bool> GFX_HACK_SKIP_XFB_COPY_TO_RAM; extern const Info<bool> GFX_HACK_SKIP_XFB_COPY_TO_RAM;
extern const Info<bool> GFX_HACK_DISABLE_COPY_TO_VRAM; extern const Info<bool> GFX_HACK_DISABLE_COPY_TO_VRAM;
extern const Info<bool> GFX_HACK_DEFER_EFB_COPIES; extern const Info<bool> GFX_HACK_DEFER_EFB_COPIES;
extern const Info<bool> GFX_HACK_IMMEDIATE_XFB; extern const Info<bool> GFX_HACK_IMMEDIATE_XFB;
extern const Info<bool> GFX_HACK_SKIP_DUPLICATE_XFBS; extern const Info<bool> GFX_HACK_SKIP_DUPLICATE_XFBS;
extern const Info<bool> GFX_HACK_EARLY_XFB_OUTPUT; extern const Info<bool> GFX_HACK_EARLY_XFB_OUTPUT;
extern const Info<bool> GFX_HACK_COPY_EFB_SCALED; extern const Info<bool> GFX_HACK_COPY_EFB_SCALED;
extern const Info<bool> GFX_HACK_EFB_EMULATE_FORMAT_CHANGES; extern const Info<bool> GFX_HACK_EFB_EMULATE_FORMAT_CHANGES;
extern const Info<bool> GFX_HACK_VERTEX_ROUNDING; extern const Info<bool> GFX_HACK_VERTEX_ROUNDING;
extern const Info<bool> GFX_HACK_VI_SKIP; extern const Info<bool> GFX_HACK_VI_SKIP;
extern const Info<u32> GFX_HACK_MISSING_COLOR_VALUE; extern const Info<u32> GFX_HACK_MISSING_COLOR_VALUE;
extern const Info<bool> GFX_HACK_FAST_TEXTURE_SAMPLING; extern const Info<bool> GFX_HACK_FAST_TEXTURE_SAMPLING;
#ifdef __APPLE__ #ifdef __APPLE__
extern const Info<bool> GFX_HACK_NO_MIPMAPPING; extern const Info<bool> GFX_HACK_NO_MIPMAPPING;
#endif #endif
// Graphics.Hacks Scaled EFB bloom fixes // Graphics.Hacks Scaled EFB bloom fixes
extern const Info<int> GFX_BLOOM_FIX_STRENGTH; extern const Info<int> GFX_BLOOM_FIX_STRENGTH;
extern const Info<int> GFX_BLOOM_FIX_BLUR_RADIUS; extern const Info<int> GFX_BLOOM_FIX_BLUR_RADIUS;
extern const Info<int> GFX_BLOOM_FIX_WIDTH; extern const Info<int> GFX_BLOOM_FIX_WIDTH;
extern const Info<bool> GFX_BLOOM_FIX_ALT; extern const Info<bool> GFX_BLOOM_FIX_ALT;
extern const Info<bool> GFX_BLOOM_FIX_BLUR; extern const Info<bool> GFX_BLOOM_FIX_BLUR;
extern const Info<bool> GFX_BLOOM_FIX_ENABLED; extern const Info<bool> GFX_BLOOM_FIX_DOWNSCALE;
extern const Info<bool> GFX_BLOOM_FIX_ENABLED;
// Graphics.GameSpecific // Graphics.GameSpecific
extern const Info<bool> GFX_PERF_QUERIES_ENABLE; extern const Info<bool> GFX_PERF_QUERIES_ENABLE;
// Android custom GPU drivers // Android custom GPU drivers
extern const Info<std::string> GFX_DRIVER_LIB_NAME; extern const Info<std::string> GFX_DRIVER_LIB_NAME;
} // namespace Config } // namespace Config

View File

@ -198,6 +198,7 @@ void AdvancedWidget::CreateWidgets()
m_bloom_fix_check = new ConfigBool(tr("Enabled"), Config::GFX_BLOOM_FIX_ENABLED); m_bloom_fix_check = new ConfigBool(tr("Enabled"), Config::GFX_BLOOM_FIX_ENABLED);
m_bloom_alt_check = new ConfigBool(tr("Filter Less"), Config::GFX_BLOOM_FIX_ALT); m_bloom_alt_check = new ConfigBool(tr("Filter Less"), Config::GFX_BLOOM_FIX_ALT);
m_bloom_blur_check = new ConfigBool(tr("Use Shader"), Config::GFX_BLOOM_FIX_BLUR); m_bloom_blur_check = new ConfigBool(tr("Use Shader"), Config::GFX_BLOOM_FIX_BLUR);
m_bloom_downscale_check = new ConfigBool(tr("Downscale Bloom"), Config::GFX_BLOOM_FIX_DOWNSCALE);
m_bloom_width_slider = new ConfigSlider(0, EFB_WIDTH, Config::GFX_BLOOM_FIX_WIDTH, 1); m_bloom_width_slider = new ConfigSlider(0, EFB_WIDTH, Config::GFX_BLOOM_FIX_WIDTH, 1);
m_bloom_width_integer = new ConfigInteger(0, EFB_WIDTH, Config::GFX_BLOOM_FIX_WIDTH, 1); m_bloom_width_integer = new ConfigInteger(0, EFB_WIDTH, Config::GFX_BLOOM_FIX_WIDTH, 1);
// Change stepping by a factor of 5. (20 = 100). // Change stepping by a factor of 5. (20 = 100).
@ -222,6 +223,7 @@ void AdvancedWidget::CreateWidgets()
efb_layout_top->addStretch(); efb_layout_top->addStretch();
efb_layout_top->addWidget(m_bloom_alt_check); efb_layout_top->addWidget(m_bloom_alt_check);
efb_layout_top->addWidget(m_bloom_blur_check); efb_layout_top->addWidget(m_bloom_blur_check);
efb_layout_top->addWidget(m_bloom_downscale_check);
efb_layout_width_integer->addWidget(new QLabel(tr("Width < "))); efb_layout_width_integer->addWidget(new QLabel(tr("Width < ")));
efb_layout_width_integer->addWidget(m_bloom_width_integer); efb_layout_width_integer->addWidget(m_bloom_width_integer);
efb_layout_width_integer->addWidget(m_bloom_width_slider); efb_layout_width_integer->addWidget(m_bloom_width_slider);
@ -327,6 +329,8 @@ void AdvancedWidget::UpdateBloomControls()
const bool checked = m_bloom_fix_check->isChecked(); const bool checked = m_bloom_fix_check->isChecked();
const bool blur_checked = m_bloom_blur_check->isChecked(); const bool blur_checked = m_bloom_blur_check->isChecked();
m_bloom_alt_check->setEnabled(checked); m_bloom_alt_check->setEnabled(checked);
m_bloom_blur_check->setEnabled(checked);
m_bloom_downscale_check->setEnabled(checked);
m_bloom_width_integer->setEnabled(checked); m_bloom_width_integer->setEnabled(checked);
m_bloom_width_slider->setEnabled(checked); m_bloom_width_slider->setEnabled(checked);
m_bloom_blur_radius_slider->setEnabled(checked && blur_checked); m_bloom_blur_radius_slider->setEnabled(checked && blur_checked);
@ -530,6 +534,7 @@ void AdvancedWidget::AddDescriptions()
QT_TR_NOOP("Uses a shader to fix bloom by blurring the texture rather than downscaling it. " QT_TR_NOOP("Uses a shader to fix bloom by blurring the texture rather than downscaling it. "
"Provides higher quality results in most games. Enables sliders for editing the " "Provides higher quality results in most games. Enables sliders for editing the "
"shader's radius and overall bloom strength. Typically not used with Downscale."); "shader's radius and overall bloom strength. Typically not used with Downscale.");
#ifdef _WIN32 #ifdef _WIN32
static const char TR_BORDERLESS_FULLSCREEN_DESCRIPTION[] = QT_TR_NOOP( static const char TR_BORDERLESS_FULLSCREEN_DESCRIPTION[] = QT_TR_NOOP(
"Implements fullscreen mode with a borderless window spanning the whole screen instead of " "Implements fullscreen mode with a borderless window spanning the whole screen instead of "

View File

@ -18,77 +18,78 @@ class ToolTipCheckBox;
class AdvancedWidget final : public QWidget class AdvancedWidget final : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit AdvancedWidget(GraphicsWindow* parent); explicit AdvancedWidget(GraphicsWindow* parent);
private: private:
void LoadSettings(); void LoadSettings();
void SaveSettings(); void SaveSettings();
void CreateWidgets(); void CreateWidgets();
void ConnectWidgets(); void ConnectWidgets();
void AddDescriptions(); void AddDescriptions();
void OnBackendChanged(); void OnBackendChanged();
void OnEmulationStateChanged(bool running); void OnEmulationStateChanged(bool running);
void UpdateBloomControls(); void UpdateBloomControls();
void UpdateSliderLabels(); void UpdateSliderLabels();
// Debugging // Debugging
ConfigBool* m_enable_wireframe; ConfigBool* m_enable_wireframe;
ConfigBool* m_show_statistics; ConfigBool* m_show_statistics;
ConfigBool* m_show_proj_statistics; ConfigBool* m_show_proj_statistics;
ConfigBool* m_enable_format_overlay; ConfigBool* m_enable_format_overlay;
ConfigBool* m_enable_api_validation; ConfigBool* m_enable_api_validation;
ConfigBool* m_show_fps; ConfigBool* m_show_fps;
ConfigBool* m_show_ftimes; ConfigBool* m_show_ftimes;
ConfigBool* m_show_vps; ConfigBool* m_show_vps;
ConfigBool* m_show_vtimes; ConfigBool* m_show_vtimes;
ConfigBool* m_show_graphs; ConfigBool* m_show_graphs;
ConfigBool* m_show_speed; ConfigBool* m_show_speed;
ConfigBool* m_show_speed_colors; ConfigBool* m_show_speed_colors;
ConfigInteger* m_perf_samp_window; ConfigInteger* m_perf_samp_window;
ConfigBool* m_log_render_time; ConfigBool* m_log_render_time;
// Utility // Utility
ConfigBool* m_prefetch_custom_textures; ConfigBool* m_prefetch_custom_textures;
ConfigBool* m_dump_efb_target; ConfigBool* m_dump_efb_target;
ConfigBool* m_dump_xfb_target; ConfigBool* m_dump_xfb_target;
ConfigBool* m_disable_vram_copies; ConfigBool* m_disable_vram_copies;
ConfigBool* m_load_custom_textures; ConfigBool* m_load_custom_textures;
ToolTipCheckBox* m_enable_graphics_mods; ToolTipCheckBox* m_enable_graphics_mods;
// Texture dumping // Texture dumping
ConfigBool* m_dump_textures; ConfigBool* m_dump_textures;
ConfigBool* m_dump_mip_textures; ConfigBool* m_dump_mip_textures;
ConfigBool* m_dump_base_textures; ConfigBool* m_dump_base_textures;
// Frame dumping // Frame dumping
ConfigBool* m_dump_use_ffv1; ConfigBool* m_dump_use_ffv1;
ConfigChoice* m_frame_dumps_resolution_type; ConfigChoice* m_frame_dumps_resolution_type;
ConfigInteger* m_dump_bitrate; ConfigInteger* m_dump_bitrate;
ConfigInteger* m_png_compression_level; ConfigInteger* m_png_compression_level;
// Misc // Misc
ConfigBool* m_enable_cropping; ConfigBool* m_enable_cropping;
ToolTipCheckBox* m_enable_prog_scan; ToolTipCheckBox* m_enable_prog_scan;
ConfigBool* m_backend_multithreading; ConfigBool* m_backend_multithreading;
ConfigBool* m_prefer_vs_for_point_line_expansion; ConfigBool* m_prefer_vs_for_point_line_expansion;
ConfigBool* m_cpu_cull; ConfigBool* m_cpu_cull;
ConfigBool* m_borderless_fullscreen; ConfigBool* m_borderless_fullscreen;
// Experimental // Experimental
ConfigBool* m_defer_efb_access_invalidation; ConfigBool* m_defer_efb_access_invalidation;
ConfigBool* m_manual_texture_sampling; ConfigBool* m_manual_texture_sampling;
// EFB Bloom Fixes // EFB Bloom Fixes
QLabel* m_bloom_strength_val_label; QLabel* m_bloom_strength_val_label;
QLabel* m_bloom_blur_radius_val_label; QLabel* m_bloom_blur_radius_val_label;
ConfigBool* m_bloom_fix_check; ConfigBool* m_bloom_fix_check;
ConfigBool* m_bloom_alt_check; ConfigBool* m_bloom_alt_check;
ConfigBool* m_bloom_blur_check; ConfigBool* m_bloom_blur_check;
ConfigInteger* m_bloom_width_integer; ConfigBool* m_bloom_downscale_check;
ConfigSlider* m_bloom_width_slider; ConfigInteger* m_bloom_width_integer;
ConfigSlider* m_bloom_strength_slider; ConfigSlider* m_bloom_width_slider;
ConfigSlider* m_bloom_blur_radius_slider; ConfigSlider* m_bloom_strength_slider;
ConfigSlider* m_bloom_blur_radius_slider;
}; };

View File

@ -2368,21 +2368,17 @@ void TextureCacheBase::CopyRenderTargetToTexture(
} }
bool scale_efb = is_xfb_copy || g_ActiveConfig.bCopyEFBScaled; bool scale_efb = is_xfb_copy || g_ActiveConfig.bCopyEFBScaled;
bool EFBBlur = false; bool use_blur_shader = false;
// Bloom correction detection // Bloom correction detection.
if (scale_efb && !is_xfb_copy && g_ActiveConfig.bEFBExcludeEnabled && if (!is_xfb_copy && g_ActiveConfig.bEFBExcludeEnabled &&
width <= g_ActiveConfig.iEFBExcludeWidth) width <= g_ActiveConfig.iEFBExcludeWidth &&
(!g_ActiveConfig.bEFBExcludeAlt || m_bloom_dst_check == dst))
{ {
if (!g_ActiveConfig.bEFBExcludeAlt || m_bloom_dst_check == dst) // Poorly upscaled EFB detected.
scale_efb = false; // Will accept the blur shader being used on unscaled EFBs as well.
use_blur_shader = g_ActiveConfig.bEFBBlur;
if (g_ActiveConfig.bEFBBlur && scale_efb == false) scale_efb = !g_ActiveConfig.bEFBExcludeDownscale && g_ActiveConfig.bCopyEFBScaled;
{
// Scale it but blur it to fix.
scale_efb = true;
EFBBlur = g_ActiveConfig.bEFBBlur;
}
} }
if (!scale_efb) if (!scale_efb)
@ -2476,7 +2472,7 @@ void TextureCacheBase::CopyRenderTargetToTexture(
GetVRAMCopyFilterCoefficients(filter_coefficients)); GetVRAMCopyFilterCoefficients(filter_coefficients));
// Bloom fix // Bloom fix
if (EFBBlur == true && if (use_blur_shader == true &&
(baseFormat == TextureFormat::RGB565 || baseFormat == TextureFormat::RGBA8)) (baseFormat == TextureFormat::RGB565 || baseFormat == TextureFormat::RGBA8))
{ {
BlurCopy(entry); BlurCopy(entry);

View File

@ -141,6 +141,7 @@ void VideoConfig::Refresh()
iEFBExcludeBlurRadius = Config::Get(Config::GFX_BLOOM_FIX_BLUR_RADIUS); iEFBExcludeBlurRadius = Config::Get(Config::GFX_BLOOM_FIX_BLUR_RADIUS);
bEFBExcludeAlt = Config::Get(Config::GFX_BLOOM_FIX_ALT); bEFBExcludeAlt = Config::Get(Config::GFX_BLOOM_FIX_ALT);
bEFBBlur = Config::Get(Config::GFX_BLOOM_FIX_BLUR); bEFBBlur = Config::Get(Config::GFX_BLOOM_FIX_BLUR);
bEFBExcludeDownscale = Config::Get(Config::GFX_BLOOM_FIX_DOWNSCALE);
bEFBExcludeEnabled = Config::Get(Config::GFX_BLOOM_FIX_ENABLED); bEFBExcludeEnabled = Config::Get(Config::GFX_BLOOM_FIX_ENABLED);
bTexFmtOverlayEnable = Config::Get(Config::GFX_TEXFMT_OVERLAY_ENABLE); bTexFmtOverlayEnable = Config::Get(Config::GFX_TEXFMT_OVERLAY_ENABLE);
bTexFmtOverlayCenter = Config::Get(Config::GFX_TEXFMT_OVERLAY_CENTER); bTexFmtOverlayCenter = Config::Get(Config::GFX_TEXFMT_OVERLAY_CENTER);

View File

@ -243,6 +243,7 @@ struct VideoConfig final
u32 iEFBExcludeBlurRadius = 4; u32 iEFBExcludeBlurRadius = 4;
bool bEFBExcludeAlt = false; bool bEFBExcludeAlt = false;
bool bEFBBlur = false; bool bEFBBlur = false;
bool bEFBExcludeDownscale = false;
bool bEFBExcludeEnabled = false; bool bEFBExcludeEnabled = false;
// Stereoscopy // Stereoscopy