diff --git a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp
index d84a8b0174..c3f1bca409 100644
--- a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp
+++ b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.cpp
@@ -30,8 +30,7 @@
#include "VideoCommon/VideoCommon.h"
#include "VideoCommon/VideoConfig.h"
-EnhancementsWidget::EnhancementsWidget(GraphicsWindow* parent)
- : GraphicsWidget(parent), m_block_save(false)
+EnhancementsWidget::EnhancementsWidget(GraphicsWindow* parent) : m_block_save(false)
{
CreateWidgets();
LoadSettings();
@@ -74,11 +73,11 @@ void EnhancementsWidget::CreateWidgets()
m_ir_combo = new GraphicsChoice(resolution_options, Config::GFX_EFB_SCALE);
m_ir_combo->setMaxVisibleItems(visible_resolution_option_count);
- m_aa_combo = new QComboBox();
+ m_aa_combo = new ToolTipComboBox();
m_af_combo = new GraphicsChoice({tr("1x"), tr("2x"), tr("4x"), tr("8x"), tr("16x")},
Config::GFX_ENHANCE_MAX_ANISOTROPY);
- m_pp_effect = new QComboBox();
+ m_pp_effect = new ToolTipComboBox();
m_configure_pp_effect = new QPushButton(tr("Configure"));
m_scaled_efb_copy = new GraphicsBool(tr("Scaled EFB Copy"), Config::GFX_HACK_COPY_EFB_SCALED);
m_per_pixel_lighting =
@@ -290,97 +289,130 @@ void EnhancementsWidget::SaveSettings()
void EnhancementsWidget::AddDescriptions()
{
static const char TR_INTERNAL_RESOLUTION_DESCRIPTION[] =
- QT_TR_NOOP("Controls the rendering resolution.\n\nA high resolution greatly improves "
+ QT_TR_NOOP("Controls the rendering resolution.
A high resolution greatly improves "
"visual quality, but also greatly increases GPU load and can cause issues in "
"certain games. Generally speaking, the lower the internal resolution, the "
- "better performance will be.\n\nIf unsure, select Native.");
-
+ "better performance will be.
If unsure, "
+ "select Native.");
static const char TR_ANTIALIAS_DESCRIPTION[] = QT_TR_NOOP(
"Reduces the amount of aliasing caused by rasterizing 3D graphics, resulting "
"in smoother edges on objects. Increases GPU load and sometimes causes graphical "
- "issues.\n\nSSAA is significantly more demanding than MSAA, but provides top quality "
+ "issues.
SSAA is significantly more demanding than MSAA, but provides top quality "
"geometry anti-aliasing and also applies anti-aliasing to lighting, shader "
- "effects, and textures.\n\nIf unsure, select None.");
-
+ "effects, and textures.
If unsure, select "
+ "None.");
static const char TR_ANISOTROPIC_FILTERING_DESCRIPTION[] = QT_TR_NOOP(
"Enables anisotropic filtering, which enhances the visual quality of textures that "
- "are at oblique viewing angles.\n\nMight cause issues in a small "
- "number of games.\n\nIf unsure, select 1x.");
-
- static const char TR_POSTPROCESSING_DESCRIPTION[] = QT_TR_NOOP(
- "Applies a post-processing effect after rendering a frame.\n\nIf unsure, select (off).");
-
+ "are at oblique viewing angles.
Might cause issues in a small "
+ "number of games.
If unsure, select 1x.");
+ static const char TR_POSTPROCESSING_DESCRIPTION[] =
+ QT_TR_NOOP("Applies a post-processing effect after rendering a frame.
If unsure, select (off).");
static const char TR_SCALED_EFB_COPY_DESCRIPTION[] =
QT_TR_NOOP("Greatly increases the quality of textures generated using render-to-texture "
- "effects.\n\nSlightly increases GPU load and causes relatively few graphical "
+ "effects.
Slightly increases GPU load and causes relatively few graphical "
"issues. Raising the internal resolution will improve the effect of this setting. "
- "\n\nIf unsure, leave this checked.");
+ "
If unsure, leave this checked.");
static const char TR_PER_PIXEL_LIGHTING_DESCRIPTION[] = QT_TR_NOOP(
"Calculates lighting of 3D objects per-pixel rather than per-vertex, smoothing out the "
- "appearance of lit polygons and making individual triangles less noticeable.\n\nRarely "
- "causes slowdowns or graphical issues.\n\nIf unsure, leave this unchecked.");
+ "appearance of lit polygons and making individual triangles less noticeable.
Rarely "
+ "causes slowdowns or graphical issues.
If unsure, leave "
+ "this unchecked.");
static const char TR_WIDESCREEN_HACK_DESCRIPTION[] = QT_TR_NOOP(
"Forces the game to output graphics for any aspect ratio. Use with \"Aspect Ratio\" set to "
- "\"Force 16:9\" to force 4:3-only games to run at 16:9.\n\nRarely produces good results and "
+ "\"Force 16:9\" to force 4:3-only games to run at 16:9.
Rarely produces good "
+ "results and "
"often partially breaks graphics and game UIs. Unnecessary (and detrimental) if using any "
- "AR/Gecko-code widescreen patches.\n\nIf unsure, leave this unchecked.");
+ "AR/Gecko-code widescreen patches.
If unsure, leave "
+ "this unchecked.");
static const char TR_REMOVE_FOG_DESCRIPTION[] =
QT_TR_NOOP("Makes distant objects more visible by removing fog, thus increasing the overall "
- "detail.\n\nDisabling fog will break some games which rely on proper fog "
- "emulation.\n\nIf unsure, leave this unchecked.");
+ "detail.
Disabling fog will break some games which rely on proper fog "
+ "emulation.
If unsure, leave this "
+ "unchecked.");
static const char TR_3D_MODE_DESCRIPTION[] = QT_TR_NOOP(
"Selects the stereoscopic 3D mode. Stereoscopy allows a better feeling "
"of depth if the necessary hardware is present. Heavily decreases "
- "emulation speed and sometimes causes issues.\n\nSide-by-Side and Top-and-Bottom are "
- "used by most 3D TVs.\nAnaglyph is used for Red-Cyan colored glasses.\nHDMI 3D is "
- "used when the monitor supports 3D display resolutions.\nPassive is another type of 3D "
- "used by some TVs.\n\nIf unsure, select Off.");
+ "emulation speed and sometimes causes issues.
Side-by-Side and Top-and-Bottom are "
+ "used by most 3D TVs.
Anaglyph is used for Red-Cyan colored glasses.
HDMI 3D is "
+ "used when the monitor supports 3D display resolutions.
Passive is another type of 3D "
+ "used by some TVs.
If unsure, select Off.");
static const char TR_3D_DEPTH_DESCRIPTION[] = QT_TR_NOOP(
- "Controls the separation distance between the virtual cameras. \n\nA higher "
+ "Controls the separation distance between the virtual cameras.
A higher "
"value creates a stronger feeling of depth while a lower value is more comfortable.");
static const char TR_3D_CONVERGENCE_DESCRIPTION[] = QT_TR_NOOP(
"Controls the distance of the convergence plane. This is the distance at which "
- "virtual objects will appear to be in front of the screen.\n\nA higher value creates "
+ "virtual objects will appear to be in front of the screen.
A higher value creates "
"stronger out-of-screen effects while a lower value is more comfortable.");
- static const char TR_3D_SWAP_EYES_DESCRIPTION[] =
- QT_TR_NOOP("Swaps the left and right eye. Most useful in side-by-side stereoscopy "
- "mode.\n\nIf unsure, leave this unchecked.");
- static const char TR_FORCE_24BIT_DESCRIPTION[] =
- QT_TR_NOOP("Forces the game to render the RGB color channels in 24-bit, thereby increasing "
- "quality by reducing color banding.\n\nHas no impact on performance and causes "
- "few graphical issues.\n\nIf unsure, leave this checked.");
+ static const char TR_3D_SWAP_EYES_DESCRIPTION[] = QT_TR_NOOP(
+ "Swaps the left and right eye. Most useful in side-by-side stereoscopy "
+ "mode.
If unsure, leave this unchecked.");
+ static const char TR_FORCE_24BIT_DESCRIPTION[] = QT_TR_NOOP(
+ "Forces the game to render the RGB color channels in 24-bit, thereby increasing "
+ "quality by reducing color banding.
Has no impact on performance and causes "
+ "few graphical issues.
If unsure, leave this "
+ "checked.");
static const char TR_FORCE_TEXTURE_FILTERING_DESCRIPTION[] =
QT_TR_NOOP("Filters all textures, including any that the game explicitly set as "
- "unfiltered.\n\nMay improve quality of certain textures in some games, but "
- "will cause issues in others.\n\nIf unsure, leave this unchecked.");
- static const char TR_DISABLE_COPY_FILTER_DESCRIPTION[] =
- QT_TR_NOOP("Disables the blending of adjacent rows when copying the EFB. This is known in "
- "some games as \"deflickering\" or \"smoothing\". \n\nDisabling the filter has no "
- "effect on performance, but may result in a sharper image. Causes few "
- "graphical issues.\n\nIf unsure, leave this checked.");
+ "unfiltered.
May improve quality of certain textures in some games, but "
+ "will cause issues in others.
If unsure, leave this "
+ "unchecked.");
+ static const char TR_DISABLE_COPY_FILTER_DESCRIPTION[] = QT_TR_NOOP(
+ "Disables the blending of adjacent rows when copying the EFB. This is known in "
+ "some games as \"deflickering\" or \"smoothing\".
Disabling the filter has no "
+ "effect on performance, but may result in a sharper image. Causes few "
+ "graphical issues.
If unsure, leave this "
+ "checked.");
static const char TR_ARBITRARY_MIPMAP_DETECTION_DESCRIPTION[] = QT_TR_NOOP(
"Enables detection of arbitrary mipmaps, which some games use for special distance-based "
- "effects.\n\nMay have false positives that result in blurry textures at increased internal "
+ "effects.
May have false positives that result in blurry textures at increased "
+ "internal "
"resolution, such as in games that use very low resolution mipmaps. Disabling this can also "
"reduce stutter in games that frequently load new textures. This feature is not compatible "
- "with GPU Texture Decoding.\n\nIf unsure, leave this checked.");
+ "with GPU Texture Decoding.
If unsure, leave this "
+ "checked.");
- AddDescription(m_ir_combo, TR_INTERNAL_RESOLUTION_DESCRIPTION);
- AddDescription(m_aa_combo, TR_ANTIALIAS_DESCRIPTION);
- AddDescription(m_af_combo, TR_ANISOTROPIC_FILTERING_DESCRIPTION);
- AddDescription(m_pp_effect, TR_POSTPROCESSING_DESCRIPTION);
- AddDescription(m_scaled_efb_copy, TR_SCALED_EFB_COPY_DESCRIPTION);
- AddDescription(m_per_pixel_lighting, TR_PER_PIXEL_LIGHTING_DESCRIPTION);
- AddDescription(m_widescreen_hack, TR_WIDESCREEN_HACK_DESCRIPTION);
- AddDescription(m_disable_fog, TR_REMOVE_FOG_DESCRIPTION);
- AddDescription(m_force_24bit_color, TR_FORCE_24BIT_DESCRIPTION);
- AddDescription(m_force_texture_filtering, TR_FORCE_TEXTURE_FILTERING_DESCRIPTION);
- AddDescription(m_disable_copy_filter, TR_DISABLE_COPY_FILTER_DESCRIPTION);
- AddDescription(m_arbitrary_mipmap_detection, TR_ARBITRARY_MIPMAP_DETECTION_DESCRIPTION);
- AddDescription(m_3d_mode, TR_3D_MODE_DESCRIPTION);
- AddDescription(m_3d_depth, TR_3D_DEPTH_DESCRIPTION);
- AddDescription(m_3d_convergence, TR_3D_CONVERGENCE_DESCRIPTION);
- AddDescription(m_3d_swap_eyes, TR_3D_SWAP_EYES_DESCRIPTION);
+ m_ir_combo->SetTitle(tr("Internal Resolution"));
+ m_ir_combo->SetDescription(QString::fromStdString(TR_INTERNAL_RESOLUTION_DESCRIPTION));
+
+ m_aa_combo->SetTitle(tr("Anti-Aliasing"));
+ m_aa_combo->SetDescription(QString::fromStdString(TR_ANTIALIAS_DESCRIPTION));
+
+ m_af_combo->SetTitle(tr("Anisotropic Filtering"));
+ m_af_combo->SetDescription(QString::fromStdString(TR_ANISOTROPIC_FILTERING_DESCRIPTION));
+
+ m_pp_effect->SetTitle(tr("Post-Processing Effect"));
+ m_pp_effect->SetDescription(QString::fromStdString(TR_POSTPROCESSING_DESCRIPTION));
+
+ m_scaled_efb_copy->SetDescription(QString::fromStdString(TR_SCALED_EFB_COPY_DESCRIPTION));
+
+ m_per_pixel_lighting->SetDescription(QString::fromStdString(TR_PER_PIXEL_LIGHTING_DESCRIPTION));
+
+ m_widescreen_hack->SetDescription(QString::fromStdString(TR_WIDESCREEN_HACK_DESCRIPTION));
+
+ m_disable_fog->SetDescription(QString::fromStdString(TR_REMOVE_FOG_DESCRIPTION));
+
+ m_force_24bit_color->SetDescription(QString::fromStdString(TR_FORCE_24BIT_DESCRIPTION));
+
+ m_force_texture_filtering->SetDescription(
+ QString::fromStdString(TR_FORCE_TEXTURE_FILTERING_DESCRIPTION));
+
+ m_disable_copy_filter->SetDescription(QString::fromStdString(TR_DISABLE_COPY_FILTER_DESCRIPTION));
+
+ m_arbitrary_mipmap_detection->SetDescription(
+ QString::fromStdString(TR_ARBITRARY_MIPMAP_DETECTION_DESCRIPTION));
+
+ m_3d_mode->SetTitle(tr("Stereoscopic 3D Mode"));
+ m_3d_mode->SetDescription(QString::fromStdString(TR_3D_MODE_DESCRIPTION));
+
+ m_3d_depth->SetTitle(tr("Depth"));
+ m_3d_depth->SetDescription(QString::fromStdString(TR_3D_DEPTH_DESCRIPTION));
+
+ m_3d_convergence->SetTitle(tr("Convergence"));
+ m_3d_convergence->SetDescription(QString::fromStdString(TR_3D_CONVERGENCE_DESCRIPTION));
+
+ m_3d_swap_eyes->SetDescription(QString::fromStdString(TR_3D_SWAP_EYES_DESCRIPTION));
}
void EnhancementsWidget::ConfigurePostProcessingShader()
diff --git a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h
index b32296ab4e..e8aa9241a4 100644
--- a/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h
+++ b/Source/Core/DolphinQt/Config/Graphics/EnhancementsWidget.h
@@ -6,11 +6,15 @@
#include "DolphinQt/Config/Graphics/GraphicsWidget.h"
+class GraphicsBool;
+class GraphicsChoice;
+class GraphicsSlider;
class GraphicsWindow;
class QCheckBox;
class QComboBox;
class QPushButton;
class QSlider;
+class ToolTipComboBox;
class EnhancementsWidget final : public GraphicsWidget
{
@@ -29,25 +33,25 @@ private:
void LoadPPShaders();
// Enhancements
- QComboBox* m_ir_combo;
- QComboBox* m_aa_combo;
- QComboBox* m_af_combo;
- QComboBox* m_pp_effect;
+ GraphicsChoice* m_ir_combo;
+ ToolTipComboBox* m_aa_combo;
+ GraphicsChoice* m_af_combo;
+ ToolTipComboBox* m_pp_effect;
QPushButton* m_configure_pp_effect;
- QCheckBox* m_scaled_efb_copy;
- QCheckBox* m_per_pixel_lighting;
- QCheckBox* m_force_texture_filtering;
- QCheckBox* m_widescreen_hack;
- QCheckBox* m_disable_fog;
- QCheckBox* m_force_24bit_color;
- QCheckBox* m_disable_copy_filter;
- QCheckBox* m_arbitrary_mipmap_detection;
+ GraphicsBool* m_scaled_efb_copy;
+ GraphicsBool* m_per_pixel_lighting;
+ GraphicsBool* m_force_texture_filtering;
+ GraphicsBool* m_widescreen_hack;
+ GraphicsBool* m_disable_fog;
+ GraphicsBool* m_force_24bit_color;
+ GraphicsBool* m_disable_copy_filter;
+ GraphicsBool* m_arbitrary_mipmap_detection;
// Stereoscopy
- QComboBox* m_3d_mode;
- QSlider* m_3d_depth;
- QSlider* m_3d_convergence;
- QCheckBox* m_3d_swap_eyes;
+ GraphicsChoice* m_3d_mode;
+ GraphicsSlider* m_3d_depth;
+ GraphicsSlider* m_3d_convergence;
+ GraphicsBool* m_3d_swap_eyes;
int m_msaa_modes;
bool m_block_save;