mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	video_core: add texture filtering (#5017)
video_core: add texture filtering
This commit is contained in:
		
							parent
							
								
									ad3c464e2d
								
							
						
					
					
						commit
						a7d3489dc9
					
				
					 33 changed files with 1337 additions and 70 deletions
				
			
		|  | @ -448,6 +448,13 @@ void Config::ReadRendererValues() { | |||
|     Settings::values.bg_green = ReadSetting(QStringLiteral("bg_green"), 0.0).toFloat(); | ||||
|     Settings::values.bg_blue = ReadSetting(QStringLiteral("bg_blue"), 0.0).toFloat(); | ||||
| 
 | ||||
|     Settings::values.texture_filter_name = | ||||
|         ReadSetting(QStringLiteral("texture_filter_name"), QStringLiteral("none")) | ||||
|             .toString() | ||||
|             .toStdString(); | ||||
|     Settings::values.texture_filter_factor = | ||||
|         ReadSetting(QStringLiteral("texture_filter_factor"), 1).toInt(); | ||||
| 
 | ||||
|     qt_config->endGroup(); | ||||
| } | ||||
| 
 | ||||
|  | @ -879,6 +886,12 @@ void Config::SaveRendererValues() { | |||
|     WriteSetting(QStringLiteral("bg_green"), (double)Settings::values.bg_green, 0.0); | ||||
|     WriteSetting(QStringLiteral("bg_blue"), (double)Settings::values.bg_blue, 0.0); | ||||
| 
 | ||||
|     WriteSetting(QStringLiteral("texture_filter_name"), | ||||
|                  QString::fromStdString(Settings::values.texture_filter_name), | ||||
|                  QStringLiteral("none")); | ||||
|     WriteSetting(QStringLiteral("texture_filter_factor"), Settings::values.texture_filter_factor, | ||||
|                  1); | ||||
| 
 | ||||
|     qt_config->endGroup(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,10 +8,18 @@ | |||
| #include "core/settings.h" | ||||
| #include "ui_configure_enhancements.h" | ||||
| #include "video_core/renderer_opengl/post_processing_opengl.h" | ||||
| #include "video_core/renderer_opengl/texture_filters/texture_filter_manager.h" | ||||
| 
 | ||||
| ConfigureEnhancements::ConfigureEnhancements(QWidget* parent) | ||||
|     : QWidget(parent), ui(new Ui::ConfigureEnhancements) { | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     for (const auto& filter : OpenGL::TextureFilterManager::TextureFilterMap()) | ||||
|         ui->texture_filter_combobox->addItem(QString::fromStdString(filter.first.data())); | ||||
| 
 | ||||
|     connect(ui->texture_filter_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, | ||||
|             &ConfigureEnhancements::updateTextureFilter); | ||||
| 
 | ||||
|     SetConfiguration(); | ||||
| 
 | ||||
|     ui->layoutBox->setEnabled(!Settings::values.custom_layout); | ||||
|  | @ -52,6 +60,15 @@ void ConfigureEnhancements::SetConfiguration() { | |||
|     ui->factor_3d->setValue(Settings::values.factor_3d); | ||||
|     updateShaders(Settings::values.render_3d); | ||||
|     ui->toggle_linear_filter->setChecked(Settings::values.filter_mode); | ||||
|     ui->texture_scale_spinbox->setValue(Settings::values.texture_filter_factor); | ||||
|     int tex_filter_idx = ui->texture_filter_combobox->findText( | ||||
|         QString::fromStdString(Settings::values.texture_filter_name)); | ||||
|     if (tex_filter_idx == -1) { | ||||
|         ui->texture_filter_combobox->setCurrentIndex(0); | ||||
|     } else { | ||||
|         ui->texture_filter_combobox->setCurrentIndex(tex_filter_idx); | ||||
|     } | ||||
|     updateTextureFilter(tex_filter_idx); | ||||
|     ui->layout_combobox->setCurrentIndex(static_cast<int>(Settings::values.layout_option)); | ||||
|     ui->swap_screen->setChecked(Settings::values.swap_screen); | ||||
|     ui->toggle_disk_shader_cache->setChecked(Settings::values.use_hw_shader && | ||||
|  | @ -88,6 +105,17 @@ void ConfigureEnhancements::updateShaders(Settings::StereoRenderOption stereo_op | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void ConfigureEnhancements::updateTextureFilter(int index) { | ||||
|     if (index == -1) | ||||
|         return; | ||||
|     ui->texture_filter_group->setEnabled(index != 0); | ||||
|     const auto& clamp = OpenGL::TextureFilterManager::TextureFilterMap() | ||||
|                             .at(ui->texture_filter_combobox->currentText().toStdString()) | ||||
|                             .clamp_scale; | ||||
|     ui->texture_scale_spinbox->setMinimum(clamp.min); | ||||
|     ui->texture_scale_spinbox->setMaximum(clamp.max); | ||||
| } | ||||
| 
 | ||||
| void ConfigureEnhancements::RetranslateUI() { | ||||
|     ui->retranslateUi(this); | ||||
| } | ||||
|  | @ -101,6 +129,8 @@ void ConfigureEnhancements::ApplyConfiguration() { | |||
|     Settings::values.pp_shader_name = | ||||
|         ui->shader_combobox->itemText(ui->shader_combobox->currentIndex()).toStdString(); | ||||
|     Settings::values.filter_mode = ui->toggle_linear_filter->isChecked(); | ||||
|     Settings::values.texture_filter_name = ui->texture_filter_combobox->currentText().toStdString(); | ||||
|     Settings::values.texture_filter_factor = ui->texture_scale_spinbox->value(); | ||||
|     Settings::values.layout_option = | ||||
|         static_cast<Settings::LayoutOption>(ui->layout_combobox->currentIndex()); | ||||
|     Settings::values.swap_screen = ui->swap_screen->isChecked(); | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ public: | |||
| 
 | ||||
| private: | ||||
|     void updateShaders(Settings::StereoRenderOption stereo_option); | ||||
|     void updateTextureFilter(int index); | ||||
| 
 | ||||
|     Ui::ConfigureEnhancements* ui; | ||||
|     QColor bg_color; | ||||
|  |  | |||
|  | @ -117,6 +117,56 @@ | |||
|         </item> | ||||
|        </layout> | ||||
|       </item> | ||||
|       <item> | ||||
|        <layout class="QHBoxLayout" name="horizontalLayout_3"> | ||||
|         <item> | ||||
|          <widget class="QLabel" name="label_5"> | ||||
|           <property name="text"> | ||||
|            <string>Texture Filter</string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QComboBox" name="texture_filter_combobox"/> | ||||
|         </item> | ||||
|        </layout> | ||||
|       </item> | ||||
|       <item> | ||||
|        <widget class="QWidget" name="texture_filter_group" native="true"> | ||||
|         <layout class="QVBoxLayout" name="verticalLayout_7"> | ||||
|          <property name="leftMargin"> | ||||
|           <number>16</number> | ||||
|          </property> | ||||
|          <property name="topMargin"> | ||||
|           <number>0</number> | ||||
|          </property> | ||||
|          <property name="rightMargin"> | ||||
|           <number>0</number> | ||||
|          </property> | ||||
|          <property name="bottomMargin"> | ||||
|           <number>0</number> | ||||
|          </property> | ||||
|          <item> | ||||
|           <layout class="QHBoxLayout" name="horizontalLayout_8"> | ||||
|            <item> | ||||
|             <widget class="QLabel" name="label_6"> | ||||
|              <property name="text"> | ||||
|               <string>Texture Scale Factor</string> | ||||
|              </property> | ||||
|             </widget> | ||||
|            </item> | ||||
|            <item> | ||||
|             <widget class="QSpinBox" name="texture_scale_spinbox"> | ||||
|              <property name="minimum"> | ||||
|               <number>1</number> | ||||
|              </property> | ||||
|             </widget> | ||||
|            </item> | ||||
|           </layout> | ||||
|          </item> | ||||
|         </layout> | ||||
|        </widget> | ||||
|       </item> | ||||
|      </layout> | ||||
|     </widget> | ||||
|    </item> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue