AdvancedWidget, Bloom: Add sliders for bloom strength and blur radius.
This commit is contained in:
parent
29455dab67
commit
b6ea92f1f0
|
@ -109,6 +109,10 @@ const Info<bool> GFX_SAVE_TEXTURE_CACHE_TO_STATE{
|
|||
const Info<bool> GFX_PREFER_VS_FOR_LINE_POINT_EXPANSION{
|
||||
{System::GFX, "Settings", "PreferVSForLinePointExpansion"}, false};
|
||||
const Info<bool> GFX_CPU_CULL{{System::GFX, "Settings", "CPUCull"}, false};
|
||||
const Info<int> GFX_BLOOM_FIX_STRENGTH{{System::GFX, "Settings", "EFBScaledExcludeBloomStrength"},
|
||||
20};
|
||||
const Info<int> GFX_BLOOM_FIX_BLUR_RADIUS{{System::GFX, "Settings", "EFBScaledExcludeBlurRadius"},
|
||||
4};
|
||||
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_BLUR{{System::GFX, "Settings", "EFBScaledExcludeBlur"}, false};
|
||||
|
|
|
@ -18,174 +18,176 @@ enum class FrameDumpResolutionType : int;
|
|||
|
||||
namespace Config
|
||||
{
|
||||
// Configuration Information
|
||||
// Configuration Information
|
||||
|
||||
// Graphics.Hardware
|
||||
// Graphics.Hardware
|
||||
|
||||
extern const Info<bool> GFX_VSYNC;
|
||||
extern const Info<int> GFX_ADAPTER;
|
||||
extern const Info<bool> GFX_VSYNC;
|
||||
extern const Info<int> GFX_ADAPTER;
|
||||
|
||||
// Graphics.Settings
|
||||
// Graphics.Settings
|
||||
|
||||
extern const Info<bool> GFX_WIDESCREEN_HACK;
|
||||
extern const Info<AspectMode> GFX_ASPECT_RATIO;
|
||||
extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_WIDTH;
|
||||
extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_HEIGHT;
|
||||
extern const Info<AspectMode> GFX_SUGGESTED_ASPECT_RATIO;
|
||||
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_STANDARD_RATIO;
|
||||
extern const Info<float> GFX_WIDESCREEN_HEURISTIC_WIDESCREEN_RATIO;
|
||||
extern const Info<bool> GFX_CROP;
|
||||
extern const Info<int> GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES;
|
||||
extern const Info<bool> GFX_SHOW_FPS;
|
||||
extern const Info<bool> GFX_SHOW_FTIMES;
|
||||
extern const Info<bool> GFX_SHOW_VPS;
|
||||
extern const Info<bool> GFX_SHOW_VTIMES;
|
||||
extern const Info<bool> GFX_SHOW_GRAPHS;
|
||||
extern const Info<bool> GFX_SHOW_SPEED;
|
||||
extern const Info<bool> GFX_SHOW_SPEED_COLORS;
|
||||
extern const Info<int> GFX_PERF_SAMP_WINDOW;
|
||||
extern const Info<bool> GFX_SHOW_NETPLAY_PING;
|
||||
extern const Info<bool> GFX_SHOW_NETPLAY_MESSAGES;
|
||||
extern const Info<bool> GFX_LOG_RENDER_TIME_TO_FILE;
|
||||
extern const Info<bool> GFX_OVERLAY_STATS;
|
||||
extern const Info<bool> GFX_OVERLAY_PROJ_STATS;
|
||||
extern const Info<bool> GFX_OVERLAY_SCISSOR_STATS;
|
||||
extern const Info<bool> GFX_DUMP_TEXTURES;
|
||||
extern const Info<bool> GFX_DUMP_MIP_TEXTURES;
|
||||
extern const Info<bool> GFX_DUMP_BASE_TEXTURES;
|
||||
extern const Info<int> GFX_TEXTURE_PNG_COMPRESSION_LEVEL;
|
||||
extern const Info<bool> GFX_HIRES_TEXTURES;
|
||||
extern const Info<bool> GFX_CACHE_HIRES_TEXTURES;
|
||||
extern const Info<bool> GFX_DUMP_EFB_TARGET;
|
||||
extern const Info<bool> GFX_DUMP_XFB_TARGET;
|
||||
extern const Info<bool> GFX_DUMP_FRAMES_AS_IMAGES;
|
||||
extern const Info<bool> GFX_USE_FFV1;
|
||||
extern const Info<std::string> GFX_DUMP_FORMAT;
|
||||
extern const Info<std::string> GFX_DUMP_CODEC;
|
||||
extern const Info<std::string> GFX_DUMP_PIXEL_FORMAT;
|
||||
extern const Info<std::string> GFX_DUMP_ENCODER;
|
||||
extern const Info<std::string> GFX_DUMP_PATH;
|
||||
extern const Info<int> GFX_BITRATE_KBPS;
|
||||
extern const Info<FrameDumpResolutionType> GFX_FRAME_DUMPS_RESOLUTION_TYPE;
|
||||
extern const Info<int> GFX_PNG_COMPRESSION_LEVEL;
|
||||
extern const Info<bool> GFX_ENABLE_GPU_TEXTURE_DECODING;
|
||||
extern const Info<bool> GFX_ENABLE_PIXEL_LIGHTING;
|
||||
extern const Info<bool> GFX_FAST_DEPTH_CALC;
|
||||
extern const Info<u32> GFX_MSAA;
|
||||
extern const Info<bool> GFX_SSAA;
|
||||
extern const Info<int> GFX_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_CENTER;
|
||||
extern const Info<bool> GFX_ENABLE_WIREFRAME;
|
||||
extern const Info<bool> GFX_DISABLE_FOG;
|
||||
extern const Info<bool> GFX_BORDERLESS_FULLSCREEN;
|
||||
extern const Info<bool> GFX_ENABLE_VALIDATION_LAYER;
|
||||
extern const Info<bool> GFX_BACKEND_MULTITHREADING;
|
||||
extern const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL;
|
||||
extern const Info<bool> GFX_SHADER_CACHE;
|
||||
extern const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING;
|
||||
extern const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE;
|
||||
extern const Info<int> GFX_SHADER_COMPILER_THREADS;
|
||||
extern const Info<int> GFX_SHADER_PRECOMPILER_THREADS;
|
||||
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_CPU_CULL;
|
||||
extern const Info<bool> GFX_WIDESCREEN_HACK;
|
||||
extern const Info<AspectMode> GFX_ASPECT_RATIO;
|
||||
extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_WIDTH;
|
||||
extern const Info<int> GFX_CUSTOM_ASPECT_RATIO_HEIGHT;
|
||||
extern const Info<AspectMode> GFX_SUGGESTED_ASPECT_RATIO;
|
||||
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_STANDARD_RATIO;
|
||||
extern const Info<float> GFX_WIDESCREEN_HEURISTIC_WIDESCREEN_RATIO;
|
||||
extern const Info<bool> GFX_CROP;
|
||||
extern const Info<int> GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES;
|
||||
extern const Info<bool> GFX_SHOW_FPS;
|
||||
extern const Info<bool> GFX_SHOW_FTIMES;
|
||||
extern const Info<bool> GFX_SHOW_VPS;
|
||||
extern const Info<bool> GFX_SHOW_VTIMES;
|
||||
extern const Info<bool> GFX_SHOW_GRAPHS;
|
||||
extern const Info<bool> GFX_SHOW_SPEED;
|
||||
extern const Info<bool> GFX_SHOW_SPEED_COLORS;
|
||||
extern const Info<int> GFX_PERF_SAMP_WINDOW;
|
||||
extern const Info<bool> GFX_SHOW_NETPLAY_PING;
|
||||
extern const Info<bool> GFX_SHOW_NETPLAY_MESSAGES;
|
||||
extern const Info<bool> GFX_LOG_RENDER_TIME_TO_FILE;
|
||||
extern const Info<bool> GFX_OVERLAY_STATS;
|
||||
extern const Info<bool> GFX_OVERLAY_PROJ_STATS;
|
||||
extern const Info<bool> GFX_OVERLAY_SCISSOR_STATS;
|
||||
extern const Info<bool> GFX_DUMP_TEXTURES;
|
||||
extern const Info<bool> GFX_DUMP_MIP_TEXTURES;
|
||||
extern const Info<bool> GFX_DUMP_BASE_TEXTURES;
|
||||
extern const Info<int> GFX_TEXTURE_PNG_COMPRESSION_LEVEL;
|
||||
extern const Info<bool> GFX_HIRES_TEXTURES;
|
||||
extern const Info<bool> GFX_CACHE_HIRES_TEXTURES;
|
||||
extern const Info<bool> GFX_DUMP_EFB_TARGET;
|
||||
extern const Info<bool> GFX_DUMP_XFB_TARGET;
|
||||
extern const Info<bool> GFX_DUMP_FRAMES_AS_IMAGES;
|
||||
extern const Info<bool> GFX_USE_FFV1;
|
||||
extern const Info<std::string> GFX_DUMP_FORMAT;
|
||||
extern const Info<std::string> GFX_DUMP_CODEC;
|
||||
extern const Info<std::string> GFX_DUMP_PIXEL_FORMAT;
|
||||
extern const Info<std::string> GFX_DUMP_ENCODER;
|
||||
extern const Info<std::string> GFX_DUMP_PATH;
|
||||
extern const Info<int> GFX_BITRATE_KBPS;
|
||||
extern const Info<FrameDumpResolutionType> GFX_FRAME_DUMPS_RESOLUTION_TYPE;
|
||||
extern const Info<int> GFX_PNG_COMPRESSION_LEVEL;
|
||||
extern const Info<bool> GFX_ENABLE_GPU_TEXTURE_DECODING;
|
||||
extern const Info<bool> GFX_ENABLE_PIXEL_LIGHTING;
|
||||
extern const Info<bool> GFX_FAST_DEPTH_CALC;
|
||||
extern const Info<u32> GFX_MSAA;
|
||||
extern const Info<bool> GFX_SSAA;
|
||||
extern const Info<int> GFX_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_CENTER;
|
||||
extern const Info<bool> GFX_ENABLE_WIREFRAME;
|
||||
extern const Info<bool> GFX_DISABLE_FOG;
|
||||
extern const Info<bool> GFX_BORDERLESS_FULLSCREEN;
|
||||
extern const Info<bool> GFX_ENABLE_VALIDATION_LAYER;
|
||||
extern const Info<bool> GFX_BACKEND_MULTITHREADING;
|
||||
extern const Info<int> GFX_COMMAND_BUFFER_EXECUTE_INTERVAL;
|
||||
extern const Info<bool> GFX_SHADER_CACHE;
|
||||
extern const Info<bool> GFX_WAIT_FOR_SHADERS_BEFORE_STARTING;
|
||||
extern const Info<ShaderCompilationMode> GFX_SHADER_COMPILATION_MODE;
|
||||
extern const Info<int> GFX_SHADER_COMPILER_THREADS;
|
||||
extern const Info<int> GFX_SHADER_PRECOMPILER_THREADS;
|
||||
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_CPU_CULL;
|
||||
|
||||
extern const Info<TriState> GFX_MTL_MANUALLY_UPLOAD_BUFFERS;
|
||||
extern const Info<TriState> GFX_MTL_USE_PRESENT_DRAWABLE;
|
||||
extern const Info<TriState> GFX_MTL_MANUALLY_UPLOAD_BUFFERS;
|
||||
extern const Info<TriState> GFX_MTL_USE_PRESENT_DRAWABLE;
|
||||
|
||||
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_TEX_FETCHES;
|
||||
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_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<int> GFX_ENHANCE_MAX_ANISOTROPY; // NOTE - this is x in (1 << x)
|
||||
extern const Info<OutputResamplingMode> GFX_ENHANCE_OUTPUT_RESAMPLING;
|
||||
extern const Info<std::string> GFX_ENHANCE_POST_SHADER;
|
||||
extern const Info<bool> GFX_ENHANCE_FORCE_TRUE_COLOR;
|
||||
extern const Info<bool> GFX_ENHANCE_DISABLE_COPY_FILTER;
|
||||
extern const Info<bool> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION;
|
||||
extern const Info<float> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD;
|
||||
extern const Info<bool> GFX_ENHANCE_HDR_OUTPUT;
|
||||
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<OutputResamplingMode> GFX_ENHANCE_OUTPUT_RESAMPLING;
|
||||
extern const Info<std::string> GFX_ENHANCE_POST_SHADER;
|
||||
extern const Info<bool> GFX_ENHANCE_FORCE_TRUE_COLOR;
|
||||
extern const Info<bool> GFX_ENHANCE_DISABLE_COPY_FILTER;
|
||||
extern const Info<bool> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION;
|
||||
extern const Info<float> GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION_THRESHOLD;
|
||||
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_MAX = 2.8f;
|
||||
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_DISPLAY_GAMMA_MIN = 2.2f;
|
||||
static constexpr float GFX_CC_DISPLAY_GAMMA_MAX = 2.4f;
|
||||
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_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_MIN = 80.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<ColorCorrectionRegion> GFX_CC_GAME_COLOR_SPACE;
|
||||
extern const Info<bool> GFX_CC_CORRECT_GAMMA;
|
||||
extern const Info<float> GFX_CC_GAME_GAMMA;
|
||||
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_HDR_PAPER_WHITE_NITS;
|
||||
extern const Info<bool> GFX_CC_CORRECT_COLOR_SPACE;
|
||||
extern const Info<ColorCorrectionRegion> GFX_CC_GAME_COLOR_SPACE;
|
||||
extern const Info<bool> GFX_CC_CORRECT_GAMMA;
|
||||
extern const Info<float> GFX_CC_GAME_GAMMA;
|
||||
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_HDR_PAPER_WHITE_NITS;
|
||||
|
||||
// Graphics.Stereoscopy
|
||||
// Graphics.Stereoscopy
|
||||
|
||||
extern const Info<StereoMode> GFX_STEREO_MODE;
|
||||
extern const Info<int> GFX_STEREO_DEPTH;
|
||||
extern const Info<int> GFX_STEREO_CONVERGENCE_PERCENTAGE;
|
||||
extern const Info<bool> GFX_STEREO_SWAP_EYES;
|
||||
extern const Info<int> GFX_STEREO_CONVERGENCE;
|
||||
extern const Info<bool> GFX_STEREO_EFB_MONO_DEPTH;
|
||||
extern const Info<int> GFX_STEREO_DEPTH_PERCENTAGE;
|
||||
extern const Info<StereoMode> GFX_STEREO_MODE;
|
||||
extern const Info<int> GFX_STEREO_DEPTH;
|
||||
extern const Info<int> GFX_STEREO_CONVERGENCE_PERCENTAGE;
|
||||
extern const Info<bool> GFX_STEREO_SWAP_EYES;
|
||||
extern const Info<int> GFX_STEREO_CONVERGENCE;
|
||||
extern const Info<bool> GFX_STEREO_EFB_MONO_DEPTH;
|
||||
extern const Info<int> GFX_STEREO_DEPTH_PERCENTAGE;
|
||||
|
||||
// Stereoscopy pseudo-limits for consistent behavior between enhancements tab and hotkeys.
|
||||
static constexpr int GFX_STEREO_DEPTH_MAXIMUM = 100;
|
||||
static constexpr int GFX_STEREO_CONVERGENCE_MAXIMUM = 200;
|
||||
// Stereoscopy pseudo-limits for consistent behavior between enhancements tab and hotkeys.
|
||||
static constexpr int GFX_STEREO_DEPTH_MAXIMUM = 100;
|
||||
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_DEFER_INVALIDATION;
|
||||
extern const Info<int> GFX_HACK_EFB_ACCESS_TILE_SIZE;
|
||||
extern const Info<bool> GFX_HACK_BBOX_ENABLE;
|
||||
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_XFB_COPY_TO_RAM;
|
||||
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_IMMEDIATE_XFB;
|
||||
extern const Info<bool> GFX_HACK_SKIP_DUPLICATE_XFBS;
|
||||
extern const Info<bool> GFX_HACK_EARLY_XFB_OUTPUT;
|
||||
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_VERTEX_ROUNDING;
|
||||
extern const Info<bool> GFX_HACK_VI_SKIP;
|
||||
extern const Info<u32> GFX_HACK_MISSING_COLOR_VALUE;
|
||||
extern const Info<bool> GFX_HACK_FAST_TEXTURE_SAMPLING;
|
||||
extern const Info<bool> GFX_HACK_EFB_ACCESS_ENABLE;
|
||||
extern const Info<bool> GFX_HACK_EFB_DEFER_INVALIDATION;
|
||||
extern const Info<int> GFX_HACK_EFB_ACCESS_TILE_SIZE;
|
||||
extern const Info<bool> GFX_HACK_BBOX_ENABLE;
|
||||
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_XFB_COPY_TO_RAM;
|
||||
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_IMMEDIATE_XFB;
|
||||
extern const Info<bool> GFX_HACK_SKIP_DUPLICATE_XFBS;
|
||||
extern const Info<bool> GFX_HACK_EARLY_XFB_OUTPUT;
|
||||
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_VERTEX_ROUNDING;
|
||||
extern const Info<bool> GFX_HACK_VI_SKIP;
|
||||
extern const Info<u32> GFX_HACK_MISSING_COLOR_VALUE;
|
||||
extern const Info<bool> GFX_HACK_FAST_TEXTURE_SAMPLING;
|
||||
#ifdef __APPLE__
|
||||
extern const Info<bool> GFX_HACK_NO_MIPMAPPING;
|
||||
extern const Info<bool> GFX_HACK_NO_MIPMAPPING;
|
||||
#endif
|
||||
|
||||
// Graphics.Hacks Scaled EFB bloom fixes
|
||||
extern const Info<int> GFX_BLOOM_FIX_WIDTH;
|
||||
extern const Info<bool> GFX_BLOOM_FIX_ALT;
|
||||
extern const Info<bool> GFX_BLOOM_FIX_BLUR;
|
||||
extern const Info<bool> GFX_BLOOM_FIX_ENABLED;
|
||||
// Graphics.Hacks Scaled EFB bloom fixes
|
||||
extern const Info<int> GFX_BLOOM_FIX_STRENGTH;
|
||||
extern const Info<int> GFX_BLOOM_FIX_BLUR_RADIUS;
|
||||
extern const Info<int> GFX_BLOOM_FIX_WIDTH;
|
||||
extern const Info<bool> GFX_BLOOM_FIX_ALT;
|
||||
extern const Info<bool> GFX_BLOOM_FIX_BLUR;
|
||||
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
|
||||
|
|
|
@ -187,11 +187,12 @@ void AdvancedWidget::CreateWidgets()
|
|||
misc_layout->addWidget(m_borderless_fullscreen, 2, 1);
|
||||
#endif
|
||||
|
||||
// Scaled EFB bloom Fixes
|
||||
// Scaled EFB Bloom Fixes
|
||||
auto* efb_box = new QGroupBox(tr("Bloom Fixes"));
|
||||
auto* efb_layout = new QVBoxLayout();
|
||||
auto* efb_layout_width_integer = new QHBoxLayout();
|
||||
auto* efb_layout_top = new QHBoxLayout();
|
||||
auto* efb_layout_bottom = new QHBoxLayout();
|
||||
efb_box->setLayout(efb_layout);
|
||||
|
||||
m_bloom_fix_check = new ConfigBool(tr("Enabled"), Config::GFX_BLOOM_FIX_ENABLED);
|
||||
|
@ -199,9 +200,21 @@ void AdvancedWidget::CreateWidgets()
|
|||
m_bloom_blur_check = new ConfigBool(tr("Use Shader"), Config::GFX_BLOOM_FIX_BLUR);
|
||||
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);
|
||||
// Change stepping by a factor of 5. (20 = 100).
|
||||
m_bloom_strength_slider = new ConfigSlider(0, 25, Config::GFX_BLOOM_FIX_STRENGTH, 20);
|
||||
m_bloom_blur_radius_slider = new ConfigSlider(0, 10, Config::GFX_BLOOM_FIX_BLUR_RADIUS, 4);
|
||||
auto* bloom_strength_label = new QLabel(tr("Stremgth"));
|
||||
auto* blur_radius_label = new QLabel(tr("Radius"));
|
||||
m_bloom_strength_val_label = new QLabel();
|
||||
m_bloom_strength_val_label->setFixedWidth(32);
|
||||
m_bloom_blur_radius_val_label = new QLabel();
|
||||
m_bloom_blur_radius_val_label->setFixedWidth(24);
|
||||
|
||||
UpdateBloomControls();
|
||||
|
||||
m_bloom_blur_radius_slider->setTickPosition(QSlider::TicksBelow);
|
||||
m_bloom_strength_slider->setTickPosition(QSlider::TicksBelow);
|
||||
|
||||
QFontMetrics fm(font());
|
||||
m_bloom_width_integer->setFixedWidth(fm.lineSpacing() * 4);
|
||||
|
||||
|
@ -212,8 +225,15 @@ void AdvancedWidget::CreateWidgets()
|
|||
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_slider);
|
||||
efb_layout_bottom->addWidget(blur_radius_label);
|
||||
efb_layout_bottom->addWidget(m_bloom_blur_radius_val_label);
|
||||
efb_layout_bottom->addWidget(m_bloom_blur_radius_slider);
|
||||
efb_layout_bottom->addWidget(bloom_strength_label);
|
||||
efb_layout_bottom->addWidget(m_bloom_strength_val_label);
|
||||
efb_layout_bottom->addWidget(m_bloom_strength_slider);
|
||||
efb_layout->addLayout(efb_layout_top);
|
||||
efb_layout->addLayout(efb_layout_width_integer);
|
||||
efb_layout->addLayout(efb_layout_bottom);
|
||||
|
||||
// Experimental.
|
||||
auto* experimental_box = new QGroupBox(tr("Experimental"));
|
||||
|
@ -247,6 +267,14 @@ void AdvancedWidget::ConnectWidgets()
|
|||
connect(m_dump_use_ffv1, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
||||
connect(m_enable_prog_scan, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
||||
connect(m_bloom_fix_check, &QCheckBox::toggled, this, &AdvancedWidget::UpdateBloomControls);
|
||||
connect(m_bloom_blur_check, &QCheckBox::toggled, [=](bool checked) {
|
||||
m_bloom_strength_slider->setEnabled(checked);
|
||||
m_bloom_blur_radius_slider->setEnabled(checked);
|
||||
});
|
||||
connect(m_bloom_strength_slider, &ConfigSlider::valueChanged, this,
|
||||
&AdvancedWidget::UpdateSliderLabels);
|
||||
connect(m_bloom_blur_radius_slider, &ConfigSlider::valueChanged, this,
|
||||
&AdvancedWidget::UpdateSliderLabels);
|
||||
connect(m_dump_textures, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
||||
connect(m_enable_graphics_mods, &QCheckBox::toggled, this, &AdvancedWidget::SaveSettings);
|
||||
}
|
||||
|
@ -291,15 +319,31 @@ void AdvancedWidget::OnEmulationStateChanged(bool running)
|
|||
// is correctly set elsewhere, but signals are blocked at that time, and don't trigger the
|
||||
// connected slot.
|
||||
UpdateBloomControls();
|
||||
UpdateSliderLabels();
|
||||
}
|
||||
|
||||
void AdvancedWidget::UpdateBloomControls()
|
||||
{
|
||||
const bool checked = m_bloom_fix_check->isChecked();
|
||||
const bool blur_checked = m_bloom_blur_check->isChecked();
|
||||
m_bloom_alt_check->setEnabled(checked);
|
||||
m_bloom_blur_check->setEnabled(checked);
|
||||
m_bloom_width_integer->setEnabled(checked);
|
||||
m_bloom_width_slider->setEnabled(checked);
|
||||
m_bloom_blur_radius_slider->setEnabled(checked && blur_checked);
|
||||
m_bloom_strength_slider->setEnabled(checked && blur_checked);
|
||||
}
|
||||
|
||||
void AdvancedWidget::UpdateSliderLabels()
|
||||
{
|
||||
int strength = m_bloom_strength_slider->value();
|
||||
int radius = m_bloom_blur_radius_slider->value();
|
||||
|
||||
m_bloom_strength_val_label->setText(QStringLiteral("%1%").arg(strength * 5));
|
||||
|
||||
if (radius == 0)
|
||||
m_bloom_blur_radius_val_label->setText(tr("off"));
|
||||
else
|
||||
m_bloom_blur_radius_val_label->setText(QStringLiteral("%1").arg(radius));
|
||||
}
|
||||
|
||||
void AdvancedWidget::AddDescriptions()
|
||||
|
@ -483,9 +527,9 @@ void AdvancedWidget::AddDescriptions()
|
|||
"<br><br><dolphin_emphasis>If unsure, leave this "
|
||||
"unchecked.</dolphin_emphasis>");
|
||||
static const char TR_SCALED_EFB_EXCLUDE_BLUR_DESCRIPTION[] =
|
||||
QT_TR_NOOP("Fixes bloom by blurring the texture rather than downscaling it. Provides higher "
|
||||
"quality results in most games.");
|
||||
|
||||
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 "
|
||||
"shader's radius and overall bloom strength. Typically not used with Downscale.");
|
||||
#ifdef _WIN32
|
||||
static const char TR_BORDERLESS_FULLSCREEN_DESCRIPTION[] = QT_TR_NOOP(
|
||||
"Implements fullscreen mode with a borderless window spanning the whole screen instead of "
|
||||
|
|
|
@ -12,6 +12,7 @@ class ConfigSlider;
|
|||
class GraphicsWindow;
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
class QLabel;
|
||||
class QSpinBox;
|
||||
class ToolTipCheckBox;
|
||||
|
||||
|
@ -31,6 +32,7 @@ private:
|
|||
void OnBackendChanged();
|
||||
void OnEmulationStateChanged(bool running);
|
||||
void UpdateBloomControls();
|
||||
void UpdateSliderLabels();
|
||||
|
||||
// Debugging
|
||||
ConfigBool* m_enable_wireframe;
|
||||
|
@ -79,10 +81,14 @@ private:
|
|||
ConfigBool* m_defer_efb_access_invalidation;
|
||||
ConfigBool* m_manual_texture_sampling;
|
||||
|
||||
// Scaled EFB bloom fixes
|
||||
// EFB Bloom Fixes
|
||||
QLabel* m_bloom_strength_val_label;
|
||||
QLabel* m_bloom_blur_radius_val_label;
|
||||
ConfigBool* m_bloom_fix_check;
|
||||
ConfigBool* m_bloom_alt_check;
|
||||
ConfigBool* m_bloom_blur_check;
|
||||
ConfigSlider* m_bloom_width_slider;
|
||||
ConfigInteger* m_bloom_width_integer;
|
||||
ConfigSlider* m_bloom_width_slider;
|
||||
ConfigSlider* m_bloom_strength_slider;
|
||||
ConfigSlider* m_bloom_blur_radius_slider;
|
||||
};
|
||||
|
|
|
@ -396,8 +396,9 @@ void TextureCacheBase::BlurCopy(RcTcacheEntry& existing_entry)
|
|||
uniforms.pass = 0;
|
||||
uniforms.width = new_config.width;
|
||||
uniforms.height = new_config.height;
|
||||
uniforms.blur_radius = new_config.width / existing_entry->native_width;
|
||||
uniforms.blur_strength = 1.0;
|
||||
uniforms.blur_radius = g_ActiveConfig.iEFBExcludeBlurRadius;
|
||||
// Scaled by factor of 5. (20 = 100).
|
||||
uniforms.blur_strength = static_cast<float>(g_ActiveConfig.iEFBExcludeBloomStrength) * 5 / 100;
|
||||
|
||||
g_vertex_manager->UploadUtilityUniforms(&uniforms, sizeof(uniforms));
|
||||
|
||||
|
|
|
@ -137,6 +137,8 @@ void VideoConfig::Refresh()
|
|||
bSSAA = Config::Get(Config::GFX_SSAA);
|
||||
iEFBScale = Config::Get(Config::GFX_EFB_SCALE);
|
||||
iEFBExcludeWidth = Config::Get(Config::GFX_BLOOM_FIX_WIDTH);
|
||||
iEFBExcludeBloomStrength = Config::Get(Config::GFX_BLOOM_FIX_STRENGTH);
|
||||
iEFBExcludeBlurRadius = Config::Get(Config::GFX_BLOOM_FIX_BLUR_RADIUS);
|
||||
bEFBExcludeAlt = Config::Get(Config::GFX_BLOOM_FIX_ALT);
|
||||
bEFBBlur = Config::Get(Config::GFX_BLOOM_FIX_BLUR);
|
||||
bEFBExcludeEnabled = Config::Get(Config::GFX_BLOOM_FIX_ENABLED);
|
||||
|
|
|
@ -239,6 +239,8 @@ struct VideoConfig final
|
|||
bool bNoMipmapping = false; // Used by macOS fifoci to work around an M1 bug
|
||||
#endif
|
||||
u32 iEFBExcludeWidth = 0;
|
||||
u32 iEFBExcludeBloomStrength = 20;
|
||||
u32 iEFBExcludeBlurRadius = 4;
|
||||
bool bEFBExcludeAlt = false;
|
||||
bool bEFBBlur = false;
|
||||
bool bEFBExcludeEnabled = false;
|
||||
|
|
Loading…
Reference in New Issue