diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index d4e55f9888..5b3596188c 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -99,6 +99,7 @@ void LogSettings() {
log_path("DataStorage_LoadDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::LoadDir));
log_path("DataStorage_NANDDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::NANDDir));
log_path("DataStorage_SDMCDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::SDMCDir));
+ log_path("DataStorage_ShaderDir", Common::FS::GetYuzuPath(Common::FS::YuzuPath::ShaderDir));
log_setting("Debugging_ProgramArgs", values.program_args.GetValue());
log_setting("Debugging_GDBStub", values.use_gdbstub.GetValue());
log_setting("Input_EnableMotion", values.motion_enabled.GetValue());
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 195d3556c9..d4e5e1bb06 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -576,6 +576,13 @@ void Config::ReadDataStorageValues() {
QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::SDMCDir)))
.toString()
.toStdString());
+ FS::SetYuzuPath(
+ FS::YuzuPath::ShaderDir,
+ qt_config
+ ->value(QStringLiteral("shader_directory"),
+ QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::ShaderDir)))
+ .toString()
+ .toStdString());
FS::SetYuzuPath(
FS::YuzuPath::LoadDir,
qt_config
@@ -1255,6 +1262,9 @@ void Config::SaveDataStorageValues() {
WriteSetting(QStringLiteral("sdmc_directory"),
QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::SDMCDir)),
QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::SDMCDir)));
+ WriteSetting(QStringLiteral("shader_directory"),
+ QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::ShaderDir)),
+ QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::ShaderDir)));
WriteSetting(QStringLiteral("load_directory"),
QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::LoadDir)),
QString::fromStdString(FS::GetYuzuPathString(FS::YuzuPath::LoadDir)));
diff --git a/src/yuzu/configuration/configure_filesystem.cpp b/src/yuzu/configuration/configure_filesystem.cpp
index ad19517546..5c105f91e5 100644
--- a/src/yuzu/configuration/configure_filesystem.cpp
+++ b/src/yuzu/configuration/configure_filesystem.cpp
@@ -19,6 +19,8 @@ ConfigureFilesystem::ConfigureFilesystem(QWidget* parent)
[this] { SetDirectory(DirectoryTarget::NAND, ui->nand_directory_edit); });
connect(ui->sdmc_directory_button, &QToolButton::pressed, this,
[this] { SetDirectory(DirectoryTarget::SD, ui->sdmc_directory_edit); });
+ connect(ui->shader_directory_button, &QToolButton::pressed, this,
+ [this] { SetDirectory(DirectoryTarget::Shader, ui->shader_directory_edit); });
connect(ui->gamecard_path_button, &QToolButton::pressed, this,
[this] { SetDirectory(DirectoryTarget::Gamecard, ui->gamecard_path_edit); });
connect(ui->dump_path_button, &QToolButton::pressed, this,
@@ -50,6 +52,8 @@ void ConfigureFilesystem::SetConfiguration() {
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::NANDDir)));
ui->sdmc_directory_edit->setText(
QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::SDMCDir)));
+ ui->shader_directory_edit->setText(
+ QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ShaderDir)));
ui->gamecard_path_edit->setText(
QString::fromStdString(Settings::values.gamecard_path.GetValue()));
ui->dump_path_edit->setText(
@@ -72,6 +76,8 @@ void ConfigureFilesystem::ApplyConfiguration() {
ui->nand_directory_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::SDMCDir,
ui->sdmc_directory_edit->text().toStdString());
+ Common::FS::SetYuzuPath(Common::FS::YuzuPath::ShaderDir,
+ ui->shader_directory_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::DumpDir,
ui->dump_path_edit->text().toStdString());
Common::FS::SetYuzuPath(Common::FS::YuzuPath::LoadDir,
@@ -95,6 +101,9 @@ void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit)
case DirectoryTarget::SD:
caption = tr("Select Emulated SD Directory...");
break;
+ case DirectoryTarget::Shader:
+ caption = tr("Select Shader Directory...");
+ break;
case DirectoryTarget::Gamecard:
caption = tr("Select Gamecard Path...");
break;
diff --git a/src/yuzu/configuration/configure_filesystem.h b/src/yuzu/configuration/configure_filesystem.h
index 31d2f1d56d..c976498d95 100644
--- a/src/yuzu/configuration/configure_filesystem.h
+++ b/src/yuzu/configuration/configure_filesystem.h
@@ -30,6 +30,7 @@ private:
enum class DirectoryTarget {
NAND,
SD,
+ Shader,
Gamecard,
Dump,
Load,
diff --git a/src/yuzu/configuration/configure_filesystem.ui b/src/yuzu/configuration/configure_filesystem.ui
index 2f6030b5c4..e8f388dfdf 100644
--- a/src/yuzu/configuration/configure_filesystem.ui
+++ b/src/yuzu/configuration/configure_filesystem.ui
@@ -25,40 +25,6 @@
Storage Directories
- -
-
-
- NAND
-
-
-
- -
-
-
- ...
-
-
-
- -
-
-
- -
-
-
- -
-
-
- SD Card
-
-
-
- -
-
-
- ...
-
-
-
-
@@ -75,6 +41,57 @@
+ -
+
+
+ NAND
+
+
+
+ -
+
+
+ SD Card
+
+
+
+ -
+
+
+ -
+
+
+ ...
+
+
+
+ -
+
+
+ ...
+
+
+
+ -
+
+
+ -
+
+
+ Shaders
+
+
+
+ -
+
+
+ -
+
+
+ ...
+
+
+