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;