summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Matías Locatti2022-11-19 21:04:04 -0300
committerGravatar Morph2022-11-24 04:22:13 -0500
commitf209e976f4887f399250c558ac725bc5723eec38 (patch)
tree78d1ed79f0bfadaa968a8f0e0fb21465441428b5
parentMerge pull request #9299 from lioncash/cast (diff)
downloadyuzu-f209e976f4887f399250c558ac725bc5723eec38.tar.gz
yuzu-f209e976f4887f399250c558ac725bc5723eec38.tar.xz
yuzu-f209e976f4887f399250c558ac725bc5723eec38.zip
FSR Sharpening Slider part 1 - only a global slider
Diffstat (limited to '')
-rw-r--r--src/common/settings.cpp1
-rw-r--r--src/common/settings.h1
-rw-r--r--src/video_core/renderer_vulkan/vk_fsr.cpp6
-rw-r--r--src/yuzu/configuration/config.cpp5
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp12
-rw-r--r--src/yuzu/configuration/configure_graphics.h2
-rw-r--r--src/yuzu/configuration/configure_graphics.ui105
-rw-r--r--src/yuzu_cmd/config.cpp1
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
68void ConfigureGraphics::UpdateDeviceSelection(int device) { 71void 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
165void 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
160void ConfigureGraphics::ApplyConfiguration() { 170void 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);