diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.cpp | 1 | ||||
| -rw-r--r-- | src/common/settings.h | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_fsr.cpp | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 5 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 12 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 105 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 1 |
8 files changed, 132 insertions, 1 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 8173462cb..926268ffc 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -48,6 +48,7 @@ void LogSettings() { | |||
| 48 | log_setting("CPU_Accuracy", values.cpu_accuracy.GetValue()); | 48 | log_setting("CPU_Accuracy", values.cpu_accuracy.GetValue()); |
| 49 | log_setting("Renderer_UseResolutionScaling", values.resolution_setup.GetValue()); | 49 | log_setting("Renderer_UseResolutionScaling", values.resolution_setup.GetValue()); |
| 50 | log_setting("Renderer_ScalingFilter", values.scaling_filter.GetValue()); | 50 | log_setting("Renderer_ScalingFilter", values.scaling_filter.GetValue()); |
| 51 | log_setting("Renderer_FSRSlider", values.fsr_sharpening_slider.GetValue()); | ||
| 51 | log_setting("Renderer_AntiAliasing", values.anti_aliasing.GetValue()); | 52 | log_setting("Renderer_AntiAliasing", values.anti_aliasing.GetValue()); |
| 52 | log_setting("Renderer_UseSpeedLimit", values.use_speed_limit.GetValue()); | 53 | log_setting("Renderer_UseSpeedLimit", values.use_speed_limit.GetValue()); |
| 53 | log_setting("Renderer_SpeedLimit", values.speed_limit.GetValue()); | 54 | log_setting("Renderer_SpeedLimit", values.speed_limit.GetValue()); |
diff --git a/src/common/settings.h b/src/common/settings.h index 0eb98939c..31d195548 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -421,6 +421,7 @@ struct Values { | |||
| 421 | ResolutionScalingInfo resolution_info{}; | 421 | ResolutionScalingInfo resolution_info{}; |
| 422 | SwitchableSetting<ResolutionSetup> resolution_setup{ResolutionSetup::Res1X, "resolution_setup"}; | 422 | SwitchableSetting<ResolutionSetup> resolution_setup{ResolutionSetup::Res1X, "resolution_setup"}; |
| 423 | SwitchableSetting<ScalingFilter> scaling_filter{ScalingFilter::Bilinear, "scaling_filter"}; | 423 | SwitchableSetting<ScalingFilter> scaling_filter{ScalingFilter::Bilinear, "scaling_filter"}; |
| 424 | SwitchableSetting<int, true> fsr_sharpening_slider{25, 0, 200, "fsr_sharpening_slider"}; | ||
| 424 | SwitchableSetting<AntiAliasing> anti_aliasing{AntiAliasing::None, "anti_aliasing"}; | 425 | SwitchableSetting<AntiAliasing> anti_aliasing{AntiAliasing::None, "anti_aliasing"}; |
| 425 | // *nix platforms may have issues with the borderless windowed fullscreen mode. | 426 | // *nix platforms may have issues with the borderless windowed fullscreen mode. |
| 426 | // Default to exclusive fullscreen on these platforms for now. | 427 | // Default to exclusive fullscreen on these platforms for now. |
diff --git a/src/video_core/renderer_vulkan/vk_fsr.cpp b/src/video_core/renderer_vulkan/vk_fsr.cpp index dd450169e..33daa8c1c 100644 --- a/src/video_core/renderer_vulkan/vk_fsr.cpp +++ b/src/video_core/renderer_vulkan/vk_fsr.cpp | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include "common/bit_cast.h" | 5 | #include "common/bit_cast.h" |
| 6 | #include "common/common_types.h" | 6 | #include "common/common_types.h" |
| 7 | #include "common/div_ceil.h" | 7 | #include "common/div_ceil.h" |
| 8 | #include "common/settings.h" | ||
| 8 | 9 | ||
| 9 | #include "video_core/host_shaders/vulkan_fidelityfx_fsr_easu_fp16_comp_spv.h" | 10 | #include "video_core/host_shaders/vulkan_fidelityfx_fsr_easu_fp16_comp_spv.h" |
| 10 | #include "video_core/host_shaders/vulkan_fidelityfx_fsr_easu_fp32_comp_spv.h" | 11 | #include "video_core/host_shaders/vulkan_fidelityfx_fsr_easu_fp32_comp_spv.h" |
| @@ -227,7 +228,10 @@ VkImageView FSR::Draw(Scheduler& scheduler, size_t image_index, VkImageView imag | |||
| 227 | 228 | ||
| 228 | cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_COMPUTE, *rcas_pipeline); | 229 | cmdbuf.BindPipeline(VK_PIPELINE_BIND_POINT_COMPUTE, *rcas_pipeline); |
| 229 | 230 | ||
| 230 | FsrRcasCon(push_constants.data(), 0.25f); | 231 | const float sharpening = |
| 232 | static_cast<float>(Settings::values.fsr_sharpening_slider.GetValue()) / 100.0f; | ||
| 233 | |||
| 234 | FsrRcasCon(push_constants.data(), sharpening); | ||
| 231 | cmdbuf.PushConstants(*pipeline_layout, VK_SHADER_STAGE_COMPUTE_BIT, push_constants); | 235 | cmdbuf.PushConstants(*pipeline_layout, VK_SHADER_STAGE_COMPUTE_BIT, push_constants); |
| 232 | 236 | ||
| 233 | { | 237 | { |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 343f3b8e5..0c93df428 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -672,6 +672,7 @@ void Config::ReadRendererValues() { | |||
| 672 | ReadGlobalSetting(Settings::values.aspect_ratio); | 672 | ReadGlobalSetting(Settings::values.aspect_ratio); |
| 673 | ReadGlobalSetting(Settings::values.resolution_setup); | 673 | ReadGlobalSetting(Settings::values.resolution_setup); |
| 674 | ReadGlobalSetting(Settings::values.scaling_filter); | 674 | ReadGlobalSetting(Settings::values.scaling_filter); |
| 675 | ReadGlobalSetting(Settings::values.fsr_sharpening_slider); | ||
| 675 | ReadGlobalSetting(Settings::values.anti_aliasing); | 676 | ReadGlobalSetting(Settings::values.anti_aliasing); |
| 676 | ReadGlobalSetting(Settings::values.max_anisotropy); | 677 | ReadGlobalSetting(Settings::values.max_anisotropy); |
| 677 | ReadGlobalSetting(Settings::values.use_speed_limit); | 678 | ReadGlobalSetting(Settings::values.use_speed_limit); |
| @@ -1282,6 +1283,10 @@ void Config::SaveRendererValues() { | |||
| 1282 | static_cast<u32>(Settings::values.scaling_filter.GetValue(global)), | 1283 | static_cast<u32>(Settings::values.scaling_filter.GetValue(global)), |
| 1283 | static_cast<u32>(Settings::values.scaling_filter.GetDefault()), | 1284 | static_cast<u32>(Settings::values.scaling_filter.GetDefault()), |
| 1284 | Settings::values.scaling_filter.UsingGlobal()); | 1285 | Settings::values.scaling_filter.UsingGlobal()); |
| 1286 | WriteSetting(QString::fromStdString(Settings::values.fsr_sharpening_slider.GetLabel()), | ||
| 1287 | static_cast<u32>(Settings::values.fsr_sharpening_slider.GetValue(global)), | ||
| 1288 | static_cast<u32>(Settings::values.fsr_sharpening_slider.GetDefault()), | ||
| 1289 | Settings::values.fsr_sharpening_slider.UsingGlobal()); | ||
| 1285 | WriteSetting(QString::fromStdString(Settings::values.anti_aliasing.GetLabel()), | 1290 | WriteSetting(QString::fromStdString(Settings::values.anti_aliasing.GetLabel()), |
| 1286 | static_cast<u32>(Settings::values.anti_aliasing.GetValue(global)), | 1291 | static_cast<u32>(Settings::values.anti_aliasing.GetValue(global)), |
| 1287 | static_cast<u32>(Settings::values.anti_aliasing.GetDefault()), | 1292 | static_cast<u32>(Settings::values.anti_aliasing.GetDefault()), |
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index bd69d04a6..3a40872ab 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp | |||
| @@ -63,6 +63,9 @@ ConfigureGraphics::ConfigureGraphics(const Core::System& system_, QWidget* paren | |||
| 63 | ui->api_widget->isEnabled()); | 63 | ui->api_widget->isEnabled()); |
| 64 | ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); | 64 | ui->bg_label->setVisible(Settings::IsConfiguringGlobal()); |
| 65 | ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); | 65 | ui->bg_combobox->setVisible(!Settings::IsConfiguringGlobal()); |
| 66 | |||
| 67 | connect(ui->fsr_sharpening_slider, &QSlider::valueChanged, this, | ||
| 68 | &ConfigureGraphics::SetFSRIndicatorText); | ||
| 66 | } | 69 | } |
| 67 | 70 | ||
| 68 | void ConfigureGraphics::UpdateDeviceSelection(int device) { | 71 | void ConfigureGraphics::UpdateDeviceSelection(int device) { |
| @@ -110,6 +113,7 @@ void ConfigureGraphics::SetConfiguration() { | |||
| 110 | static_cast<int>(Settings::values.resolution_setup.GetValue())); | 113 | static_cast<int>(Settings::values.resolution_setup.GetValue())); |
| 111 | ui->scaling_filter_combobox->setCurrentIndex( | 114 | ui->scaling_filter_combobox->setCurrentIndex( |
| 112 | static_cast<int>(Settings::values.scaling_filter.GetValue())); | 115 | static_cast<int>(Settings::values.scaling_filter.GetValue())); |
| 116 | ui->fsr_sharpening_slider->setValue(Settings::values.fsr_sharpening_slider.GetValue()); | ||
| 113 | ui->anti_aliasing_combobox->setCurrentIndex( | 117 | ui->anti_aliasing_combobox->setCurrentIndex( |
| 114 | static_cast<int>(Settings::values.anti_aliasing.GetValue())); | 118 | static_cast<int>(Settings::values.anti_aliasing.GetValue())); |
| 115 | } else { | 119 | } else { |
| @@ -155,6 +159,12 @@ void ConfigureGraphics::SetConfiguration() { | |||
| 155 | Settings::values.bg_green.GetValue(), | 159 | Settings::values.bg_green.GetValue(), |
| 156 | Settings::values.bg_blue.GetValue())); | 160 | Settings::values.bg_blue.GetValue())); |
| 157 | UpdateAPILayout(); | 161 | UpdateAPILayout(); |
| 162 | SetFSRIndicatorText(ui->fsr_sharpening_slider->sliderPosition()); | ||
| 163 | } | ||
| 164 | |||
| 165 | void ConfigureGraphics::SetFSRIndicatorText(int percentage) { | ||
| 166 | ui->fsr_sharpening_value->setText( | ||
| 167 | tr("%1%", "FSR sharpening percentage (e.g. 50%)").arg(100 - (percentage / 2))); | ||
| 158 | } | 168 | } |
| 159 | 169 | ||
| 160 | void ConfigureGraphics::ApplyConfiguration() { | 170 | void ConfigureGraphics::ApplyConfiguration() { |
| @@ -210,6 +220,7 @@ void ConfigureGraphics::ApplyConfiguration() { | |||
| 210 | if (Settings::values.anti_aliasing.UsingGlobal()) { | 220 | if (Settings::values.anti_aliasing.UsingGlobal()) { |
| 211 | Settings::values.anti_aliasing.SetValue(anti_aliasing); | 221 | Settings::values.anti_aliasing.SetValue(anti_aliasing); |
| 212 | } | 222 | } |
| 223 | Settings::values.fsr_sharpening_slider.SetValue(ui->fsr_sharpening_slider->value()); | ||
| 213 | } else { | 224 | } else { |
| 214 | if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { | 225 | if (ui->resolution_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { |
| 215 | Settings::values.resolution_setup.SetGlobal(true); | 226 | Settings::values.resolution_setup.SetGlobal(true); |
| @@ -380,6 +391,7 @@ void ConfigureGraphics::SetupPerGameUI() { | |||
| 380 | ui->aspect_ratio_combobox->setEnabled(Settings::values.aspect_ratio.UsingGlobal()); | 391 | ui->aspect_ratio_combobox->setEnabled(Settings::values.aspect_ratio.UsingGlobal()); |
| 381 | ui->resolution_combobox->setEnabled(Settings::values.resolution_setup.UsingGlobal()); | 392 | ui->resolution_combobox->setEnabled(Settings::values.resolution_setup.UsingGlobal()); |
| 382 | ui->scaling_filter_combobox->setEnabled(Settings::values.scaling_filter.UsingGlobal()); | 393 | ui->scaling_filter_combobox->setEnabled(Settings::values.scaling_filter.UsingGlobal()); |
| 394 | ui->fsr_sharpening_slider->setEnabled(Settings::values.fsr_sharpening_slider.UsingGlobal()); | ||
| 383 | ui->anti_aliasing_combobox->setEnabled(Settings::values.anti_aliasing.UsingGlobal()); | 395 | ui->anti_aliasing_combobox->setEnabled(Settings::values.anti_aliasing.UsingGlobal()); |
| 384 | ui->use_asynchronous_gpu_emulation->setEnabled( | 396 | ui->use_asynchronous_gpu_emulation->setEnabled( |
| 385 | Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); | 397 | Settings::values.use_asynchronous_gpu_emulation.UsingGlobal()); |
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h index 70034eb1b..d98d6624e 100644 --- a/src/yuzu/configuration/configure_graphics.h +++ b/src/yuzu/configuration/configure_graphics.h | |||
| @@ -42,6 +42,8 @@ private: | |||
| 42 | 42 | ||
| 43 | void RetrieveVulkanDevices(); | 43 | void RetrieveVulkanDevices(); |
| 44 | 44 | ||
| 45 | void SetFSRIndicatorText(int percentage); | ||
| 46 | |||
| 45 | void SetupPerGameUI(); | 47 | void SetupPerGameUI(); |
| 46 | 48 | ||
| 47 | Settings::RendererBackend GetCurrentGraphicsBackend() const; | 49 | Settings::RendererBackend GetCurrentGraphicsBackend() const; |
diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index fdbb33372..de8b2f44e 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui | |||
| @@ -152,6 +152,12 @@ | |||
| 152 | </item> | 152 | </item> |
| 153 | <item> | 153 | <item> |
| 154 | <widget class="QGroupBox" name="groupBox"> | 154 | <widget class="QGroupBox" name="groupBox"> |
| 155 | <property name="maximumSize"> | ||
| 156 | <size> | ||
| 157 | <width>16777215</width> | ||
| 158 | <height>16777215</height> | ||
| 159 | </size> | ||
| 160 | </property> | ||
| 155 | <property name="title"> | 161 | <property name="title"> |
| 156 | <string>Graphics Settings</string> | 162 | <string>Graphics Settings</string> |
| 157 | </property> | 163 | </property> |
| @@ -482,6 +488,105 @@ | |||
| 482 | </widget> | 488 | </widget> |
| 483 | </item> | 489 | </item> |
| 484 | <item> | 490 | <item> |
| 491 | <widget class="QWidget" name="fsr_sharpening_layout" native="true"> | ||
| 492 | <property name="enabled"> | ||
| 493 | <bool>true</bool> | ||
| 494 | </property> | ||
| 495 | <property name="sizePolicy"> | ||
| 496 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> | ||
| 497 | <horstretch>0</horstretch> | ||
| 498 | <verstretch>0</verstretch> | ||
| 499 | </sizepolicy> | ||
| 500 | </property> | ||
| 501 | <layout class="QHBoxLayout" name="horizontalLayout"> | ||
| 502 | <property name="spacing"> | ||
| 503 | <number>6</number> | ||
| 504 | </property> | ||
| 505 | <property name="sizeConstraint"> | ||
| 506 | <enum>QLayout::SetDefaultConstraint</enum> | ||
| 507 | </property> | ||
| 508 | <property name="leftMargin"> | ||
| 509 | <number>0</number> | ||
| 510 | </property> | ||
| 511 | <property name="topMargin"> | ||
| 512 | <number>0</number> | ||
| 513 | </property> | ||
| 514 | <property name="rightMargin"> | ||
| 515 | <number>0</number> | ||
| 516 | </property> | ||
| 517 | <property name="bottomMargin"> | ||
| 518 | <number>0</number> | ||
| 519 | </property> | ||
| 520 | <item alignment="Qt::AlignLeft"> | ||
| 521 | <widget class="QLabel" name="fsr_sharpening_label"> | ||
| 522 | <property name="sizePolicy"> | ||
| 523 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> | ||
| 524 | <horstretch>0</horstretch> | ||
| 525 | <verstretch>0</verstretch> | ||
| 526 | </sizepolicy> | ||
| 527 | </property> | ||
| 528 | <property name="text"> | ||
| 529 | <string>FSR Sharpening:</string> | ||
| 530 | </property> | ||
| 531 | </widget> | ||
| 532 | </item> | ||
| 533 | <item> | ||
| 534 | <widget class="QSlider" name="fsr_sharpening_slider"> | ||
| 535 | <property name="sizePolicy"> | ||
| 536 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> | ||
| 537 | <horstretch>0</horstretch> | ||
| 538 | <verstretch>0</verstretch> | ||
| 539 | </sizepolicy> | ||
| 540 | </property> | ||
| 541 | <property name="baseSize"> | ||
| 542 | <size> | ||
| 543 | <width>0</width> | ||
| 544 | <height>0</height> | ||
| 545 | </size> | ||
| 546 | </property> | ||
| 547 | <property name="maximum"> | ||
| 548 | <number>200</number> | ||
| 549 | </property> | ||
| 550 | <property name="sliderPosition"> | ||
| 551 | <number>25</number> | ||
| 552 | </property> | ||
| 553 | <property name="orientation"> | ||
| 554 | <enum>Qt::Horizontal</enum> | ||
| 555 | </property> | ||
| 556 | <property name="invertedAppearance"> | ||
| 557 | <bool>true</bool> | ||
| 558 | </property> | ||
| 559 | </widget> | ||
| 560 | </item> | ||
| 561 | <item> | ||
| 562 | <widget class="QLabel" name="fsr_sharpening_value"> | ||
| 563 | <property name="sizePolicy"> | ||
| 564 | <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> | ||
| 565 | <horstretch>0</horstretch> | ||
| 566 | <verstretch>0</verstretch> | ||
| 567 | </sizepolicy> | ||
| 568 | </property> | ||
| 569 | <property name="minimumSize"> | ||
| 570 | <size> | ||
| 571 | <width>32</width> | ||
| 572 | <height>0</height> | ||
| 573 | </size> | ||
| 574 | </property> | ||
| 575 | <property name="text"> | ||
| 576 | <string>100%</string> | ||
| 577 | </property> | ||
| 578 | <property name="alignment"> | ||
| 579 | <set>Qt::AlignCenter</set> | ||
| 580 | </property> | ||
| 581 | </widget> | ||
| 582 | </item> | ||
| 583 | </layout> | ||
| 584 | <zorder>fsr_sharpening_value</zorder> | ||
| 585 | <zorder>fsr_sharpening_label</zorder> | ||
| 586 | <zorder>fsr_sharpening_slider</zorder> | ||
| 587 | </widget> | ||
| 588 | </item> | ||
| 589 | <item> | ||
| 485 | <widget class="QWidget" name="bg_layout" native="true"> | 590 | <widget class="QWidget" name="bg_layout" native="true"> |
| 486 | <property name="sizePolicy"> | 591 | <property name="sizePolicy"> |
| 487 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> | 592 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> |
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 66dd0dc15..d6bea9aa8 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp | |||
| @@ -299,6 +299,7 @@ void Config::ReadValues() { | |||
| 299 | 299 | ||
| 300 | ReadSetting("Renderer", Settings::values.resolution_setup); | 300 | ReadSetting("Renderer", Settings::values.resolution_setup); |
| 301 | ReadSetting("Renderer", Settings::values.scaling_filter); | 301 | ReadSetting("Renderer", Settings::values.scaling_filter); |
| 302 | ReadSetting("Renderer", Settings::values.fsr_sharpening_slider); | ||
| 302 | ReadSetting("Renderer", Settings::values.anti_aliasing); | 303 | ReadSetting("Renderer", Settings::values.anti_aliasing); |
| 303 | ReadSetting("Renderer", Settings::values.fullscreen_mode); | 304 | ReadSetting("Renderer", Settings::values.fullscreen_mode); |
| 304 | ReadSetting("Renderer", Settings::values.aspect_ratio); | 305 | ReadSetting("Renderer", Settings::values.aspect_ratio); |