mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-11-27 04:54:18 +01:00
video_core: Option to apply anisotropic filtering for all mipmap modes
This commit is contained in:
parent
333f792e10
commit
0eacf547c0
@ -236,6 +236,7 @@ void RestoreGlobalState(bool is_powered_on) {
|
|||||||
values.bg_blue.SetGlobal(true);
|
values.bg_blue.SetGlobal(true);
|
||||||
values.enable_compute_pipelines.SetGlobal(true);
|
values.enable_compute_pipelines.SetGlobal(true);
|
||||||
values.use_video_framerate.SetGlobal(true);
|
values.use_video_framerate.SetGlobal(true);
|
||||||
|
values.use_aggressive_anisotropic_filtering.SetGlobal(true);
|
||||||
|
|
||||||
// System
|
// System
|
||||||
values.language_index.SetGlobal(true);
|
values.language_index.SetGlobal(true);
|
||||||
|
@ -483,6 +483,8 @@ struct Values {
|
|||||||
AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3,
|
AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3,
|
||||||
"astc_recompression"};
|
"astc_recompression"};
|
||||||
SwitchableSetting<bool> use_video_framerate{false, "use_video_framerate"};
|
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_red{0, "bg_red"};
|
||||||
SwitchableSetting<u8> bg_green{0, "bg_green"};
|
SwitchableSetting<u8> bg_green{0, "bg_green"};
|
||||||
|
@ -62,7 +62,8 @@ std::array<float, 4> TSCEntry::BorderColor() const noexcept {
|
|||||||
}
|
}
|
||||||
|
|
||||||
float TSCEntry::MaxAnisotropy() 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;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue();
|
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.use_vulkan_driver_pipeline_cache);
|
||||||
ReadGlobalSetting(Settings::values.enable_compute_pipelines);
|
ReadGlobalSetting(Settings::values.enable_compute_pipelines);
|
||||||
ReadGlobalSetting(Settings::values.use_video_framerate);
|
ReadGlobalSetting(Settings::values.use_video_framerate);
|
||||||
|
ReadGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering);
|
||||||
ReadGlobalSetting(Settings::values.bg_red);
|
ReadGlobalSetting(Settings::values.bg_red);
|
||||||
ReadGlobalSetting(Settings::values.bg_green);
|
ReadGlobalSetting(Settings::values.bg_green);
|
||||||
ReadGlobalSetting(Settings::values.bg_blue);
|
ReadGlobalSetting(Settings::values.bg_blue);
|
||||||
@ -1417,6 +1418,7 @@ void Config::SaveRendererValues() {
|
|||||||
WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
|
WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
|
||||||
WriteGlobalSetting(Settings::values.enable_compute_pipelines);
|
WriteGlobalSetting(Settings::values.enable_compute_pipelines);
|
||||||
WriteGlobalSetting(Settings::values.use_video_framerate);
|
WriteGlobalSetting(Settings::values.use_video_framerate);
|
||||||
|
WriteGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering);
|
||||||
WriteGlobalSetting(Settings::values.bg_red);
|
WriteGlobalSetting(Settings::values.bg_red);
|
||||||
WriteGlobalSetting(Settings::values.bg_green);
|
WriteGlobalSetting(Settings::values.bg_green);
|
||||||
WriteGlobalSetting(Settings::values.bg_blue);
|
WriteGlobalSetting(Settings::values.bg_blue);
|
||||||
|
@ -31,6 +31,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
|
|||||||
ui->use_asynchronous_shaders->setEnabled(runtime_lock);
|
ui->use_asynchronous_shaders->setEnabled(runtime_lock);
|
||||||
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
|
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
|
||||||
ui->enable_compute_pipelines_checkbox->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->async_present->setChecked(Settings::values.async_presentation.GetValue());
|
||||||
ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.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(
|
ui->enable_compute_pipelines_checkbox->setChecked(
|
||||||
Settings::values.enable_compute_pipelines.GetValue());
|
Settings::values.enable_compute_pipelines.GetValue());
|
||||||
ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.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()) {
|
if (Settings::IsConfiguringGlobal()) {
|
||||||
ui->gpu_accuracy->setCurrentIndex(
|
ui->gpu_accuracy->setCurrentIndex(
|
||||||
@ -94,6 +97,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
|
|||||||
enable_compute_pipelines);
|
enable_compute_pipelines);
|
||||||
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate,
|
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate,
|
||||||
ui->use_video_framerate_checkbox, 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) {
|
void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {
|
||||||
@ -130,6 +136,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
|
|||||||
Settings::values.enable_compute_pipelines.UsingGlobal());
|
Settings::values.enable_compute_pipelines.UsingGlobal());
|
||||||
ui->use_video_framerate_checkbox->setEnabled(
|
ui->use_video_framerate_checkbox->setEnabled(
|
||||||
Settings::values.use_video_framerate.UsingGlobal());
|
Settings::values.use_video_framerate.UsingGlobal());
|
||||||
|
ui->use_aggressive_anisotropic_filtering->setEnabled(
|
||||||
|
Settings::values.use_aggressive_anisotropic_filtering.UsingGlobal());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -157,6 +165,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
|
|||||||
ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox,
|
ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox,
|
||||||
Settings::values.use_video_framerate,
|
Settings::values.use_video_framerate,
|
||||||
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(
|
ConfigurationShared::SetColoredComboBox(
|
||||||
ui->gpu_accuracy, ui->label_gpu_accuracy,
|
ui->gpu_accuracy, ui->label_gpu_accuracy,
|
||||||
static_cast<int>(Settings::values.gpu_accuracy.GetValue(true)));
|
static_cast<int>(Settings::values.gpu_accuracy.GetValue(true)));
|
||||||
|
@ -48,6 +48,7 @@ private:
|
|||||||
ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache;
|
ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache;
|
||||||
ConfigurationShared::CheckState enable_compute_pipelines;
|
ConfigurationShared::CheckState enable_compute_pipelines;
|
||||||
ConfigurationShared::CheckState use_video_framerate;
|
ConfigurationShared::CheckState use_video_framerate;
|
||||||
|
ConfigurationShared::CheckState use_aggressive_anisotropic_filtering;
|
||||||
|
|
||||||
const Core::System& system;
|
const Core::System& system;
|
||||||
};
|
};
|
||||||
|
@ -260,6 +260,19 @@ Compute pipelines are always enabled on all other drivers.</string>
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</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>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -321,6 +321,7 @@ void Config::ReadValues() {
|
|||||||
ReadSetting("Renderer", Settings::values.astc_recompression);
|
ReadSetting("Renderer", Settings::values.astc_recompression);
|
||||||
ReadSetting("Renderer", Settings::values.use_fast_gpu_time);
|
ReadSetting("Renderer", Settings::values.use_fast_gpu_time);
|
||||||
ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache);
|
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_red);
|
||||||
ReadSetting("Renderer", Settings::values.bg_green);
|
ReadSetting("Renderer", Settings::values.bg_green);
|
||||||
|
@ -325,6 +325,10 @@ aspect_ratio =
|
|||||||
# 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x
|
# 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x
|
||||||
max_anisotropy =
|
max_anisotropy =
|
||||||
|
|
||||||
|
# Apply Anisotropic Filtering to all mipmap modes.
|
||||||
|
# 0 (default): Off, 1: On
|
||||||
|
use_aggressive_anisotropic_filtering =
|
||||||
|
|
||||||
# Whether to enable VSync or not.
|
# Whether to enable VSync or not.
|
||||||
# OpenGL: Values other than 0 enable VSync
|
# OpenGL: Values other than 0 enable VSync
|
||||||
# Vulkan: FIFO is selected if the requested mode is not supported by the driver.
|
# Vulkan: FIFO is selected if the requested mode is not supported by the driver.
|
||||||
|
Loading…
Reference in New Issue
Block a user