video_core: Option to apply anisotropic filtering for all mipmap modes
This commit is contained in:
		| @@ -236,6 +236,7 @@ void RestoreGlobalState(bool is_powered_on) { | ||||
|     values.bg_blue.SetGlobal(true); | ||||
|     values.enable_compute_pipelines.SetGlobal(true); | ||||
|     values.use_video_framerate.SetGlobal(true); | ||||
|     values.use_aggressive_anisotropic_filtering.SetGlobal(true); | ||||
|  | ||||
|     // System | ||||
|     values.language_index.SetGlobal(true); | ||||
|   | ||||
| @@ -483,6 +483,8 @@ struct Values { | ||||
|         AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3, | ||||
|         "astc_recompression"}; | ||||
|     SwitchableSetting<bool> use_video_framerate{false, "use_video_framerate"}; | ||||
|     SwitchableSetting<bool> use_aggressive_anisotropic_filtering{ | ||||
|         false, "use_aggressive_anisotropic_filtering"}; | ||||
|  | ||||
|     SwitchableSetting<u8> bg_red{0, "bg_red"}; | ||||
|     SwitchableSetting<u8> bg_green{0, "bg_green"}; | ||||
|   | ||||
| @@ -62,7 +62,8 @@ std::array<float, 4> TSCEntry::BorderColor() const noexcept { | ||||
| } | ||||
|  | ||||
| float TSCEntry::MaxAnisotropy() const noexcept { | ||||
|     if (max_anisotropy == 0 && mipmap_filter != TextureMipmapFilter::Linear) { | ||||
|     if (max_anisotropy == 0 && (mipmap_filter != TextureMipmapFilter::Linear && | ||||
|                                 !Settings::values.use_aggressive_anisotropic_filtering)) { | ||||
|         return 1.0f; | ||||
|     } | ||||
|     const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue(); | ||||
|   | ||||
| @@ -761,6 +761,7 @@ void Config::ReadRendererValues() { | ||||
|     ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); | ||||
|     ReadGlobalSetting(Settings::values.enable_compute_pipelines); | ||||
|     ReadGlobalSetting(Settings::values.use_video_framerate); | ||||
|     ReadGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering); | ||||
|     ReadGlobalSetting(Settings::values.bg_red); | ||||
|     ReadGlobalSetting(Settings::values.bg_green); | ||||
|     ReadGlobalSetting(Settings::values.bg_blue); | ||||
| @@ -1417,6 +1418,7 @@ void Config::SaveRendererValues() { | ||||
|     WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache); | ||||
|     WriteGlobalSetting(Settings::values.enable_compute_pipelines); | ||||
|     WriteGlobalSetting(Settings::values.use_video_framerate); | ||||
|     WriteGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering); | ||||
|     WriteGlobalSetting(Settings::values.bg_red); | ||||
|     WriteGlobalSetting(Settings::values.bg_green); | ||||
|     WriteGlobalSetting(Settings::values.bg_blue); | ||||
|   | ||||
| @@ -31,6 +31,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | ||||
|     ui->use_asynchronous_shaders->setEnabled(runtime_lock); | ||||
|     ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | ||||
|     ui->enable_compute_pipelines_checkbox->setEnabled(runtime_lock); | ||||
|     ui->use_aggressive_anisotropic_filtering->setEnabled(runtime_lock); | ||||
|  | ||||
|     ui->async_present->setChecked(Settings::values.async_presentation.GetValue()); | ||||
|     ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue()); | ||||
| @@ -43,6 +44,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | ||||
|     ui->enable_compute_pipelines_checkbox->setChecked( | ||||
|         Settings::values.enable_compute_pipelines.GetValue()); | ||||
|     ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.GetValue()); | ||||
|     ui->use_aggressive_anisotropic_filtering->setChecked( | ||||
|         Settings::values.use_aggressive_anisotropic_filtering.GetValue()); | ||||
|  | ||||
|     if (Settings::IsConfiguringGlobal()) { | ||||
|         ui->gpu_accuracy->setCurrentIndex( | ||||
| @@ -94,6 +97,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | ||||
|                                              enable_compute_pipelines); | ||||
|     ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate, | ||||
|                                              ui->use_video_framerate_checkbox, use_video_framerate); | ||||
|     ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_aggressive_anisotropic_filtering, | ||||
|                                              ui->use_aggressive_anisotropic_filtering, | ||||
|                                              use_aggressive_anisotropic_filtering); | ||||
| } | ||||
|  | ||||
| void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { | ||||
| @@ -130,6 +136,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | ||||
|             Settings::values.enable_compute_pipelines.UsingGlobal()); | ||||
|         ui->use_video_framerate_checkbox->setEnabled( | ||||
|             Settings::values.use_video_framerate.UsingGlobal()); | ||||
|         ui->use_aggressive_anisotropic_filtering->setEnabled( | ||||
|             Settings::values.use_aggressive_anisotropic_filtering.UsingGlobal()); | ||||
|  | ||||
|         return; | ||||
|     } | ||||
| @@ -157,6 +165,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | ||||
|     ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox, | ||||
|                                             Settings::values.use_video_framerate, | ||||
|                                             use_video_framerate); | ||||
|     ConfigurationShared::SetColoredTristate(ui->use_aggressive_anisotropic_filtering, | ||||
|                                             Settings::values.use_aggressive_anisotropic_filtering, | ||||
|                                             use_aggressive_anisotropic_filtering); | ||||
|     ConfigurationShared::SetColoredComboBox( | ||||
|         ui->gpu_accuracy, ui->label_gpu_accuracy, | ||||
|         static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); | ||||
|   | ||||
| @@ -48,6 +48,7 @@ private: | ||||
|     ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache; | ||||
|     ConfigurationShared::CheckState enable_compute_pipelines; | ||||
|     ConfigurationShared::CheckState use_video_framerate; | ||||
|     ConfigurationShared::CheckState use_aggressive_anisotropic_filtering; | ||||
|  | ||||
|     const Core::System& system; | ||||
| }; | ||||
|   | ||||
| @@ -260,6 +260,19 @@ Compute pipelines are always enabled on all other drivers.</string> | ||||
|           </layout> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="use_aggressive_anisotropic_filtering"> | ||||
|           <property name="toolTip"> | ||||
|            <string>Enable this option for a more aggressive approach to applying Anisotropic Filtering to textures. | ||||
| By toggling this, Anisotropic Filtering is added to textures with both nearest and linear mipmapping modes. | ||||
| This may result in improved visual quality for a wider range of textures, but can also introduce artifacts in | ||||
| some titles.</string> | ||||
|           </property> | ||||
|           <property name="text"> | ||||
|            <string>Apply Anisotropic Filtering for all mipmap modes</string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|        </layout> | ||||
|       </widget> | ||||
|      </item> | ||||
|   | ||||
| @@ -321,6 +321,7 @@ void Config::ReadValues() { | ||||
|     ReadSetting("Renderer", Settings::values.astc_recompression); | ||||
|     ReadSetting("Renderer", Settings::values.use_fast_gpu_time); | ||||
|     ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); | ||||
|     ReadSetting("Renderer", Settings::values.use_aggressive_anisotropic_filtering); | ||||
|  | ||||
|     ReadSetting("Renderer", Settings::values.bg_red); | ||||
|     ReadSetting("Renderer", Settings::values.bg_green); | ||||
|   | ||||
| @@ -325,6 +325,10 @@ aspect_ratio = | ||||
| # 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x | ||||
| max_anisotropy = | ||||
|  | ||||
| # Apply Anisotropic Filtering to all mipmap modes. | ||||
| # 0 (default): Off, 1: On | ||||
| use_aggressive_anisotropic_filtering = | ||||
|  | ||||
| # Whether to enable VSync or not. | ||||
| # OpenGL: Values other than 0 enable VSync | ||||
| # Vulkan: FIFO is selected if the requested mode is not supported by the driver. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Wollnashorn
					Wollnashorn