PostProcessing: Don't try other types after first failure

This commit is contained in:
Stenzek 2024-11-05 13:26:32 +10:00
parent 2cd3f209e2
commit f889136227
No known key found for this signature in database
1 changed files with 29 additions and 10 deletions

View File

@ -703,6 +703,9 @@ std::unique_ptr<PostProcessing::Shader> PostProcessing::TryLoadingShader(const s
{ {
std::string filename; std::string filename;
std::optional<std::string> resource_str; std::optional<std::string> resource_str;
Error local_error;
if (!error)
error = &local_error;
// Try reshade first. // Try reshade first.
filename = Path::Combine( filename = Path::Combine(
@ -711,16 +714,25 @@ std::unique_ptr<PostProcessing::Shader> PostProcessing::TryLoadingShader(const s
if (FileSystem::FileExists(filename.c_str())) if (FileSystem::FileExists(filename.c_str()))
{ {
std::unique_ptr<ReShadeFXShader> shader = std::make_unique<ReShadeFXShader>(); std::unique_ptr<ReShadeFXShader> shader = std::make_unique<ReShadeFXShader>();
if (shader->LoadFromFile(std::string(shader_name), filename.c_str(), only_config, error)) if (!shader->LoadFromFile(shader_name, filename.c_str(), only_config, error))
return shader; {
ERROR_LOG("Failed to load shader '{}': {}", shader_name, error->GetDescription());
shader.reset();
}
return shader;
} }
filename = Path::Combine(EmuFolders::Shaders, fmt::format("{}.glsl", shader_name)); filename = Path::Combine(EmuFolders::Shaders, fmt::format("{}.glsl", shader_name));
if (FileSystem::FileExists(filename.c_str())) if (FileSystem::FileExists(filename.c_str()))
{ {
std::unique_ptr<GLSLShader> shader = std::make_unique<GLSLShader>(); std::unique_ptr<GLSLShader> shader = std::make_unique<GLSLShader>();
if (shader->LoadFromFile(std::string(shader_name), filename.c_str(), error)) if (!shader->LoadFromFile(shader_name, filename.c_str(), error))
return shader; {
ERROR_LOG("Failed to load shader '{}': {}", shader_name, error->GetDescription());
shader.reset();
}
return shader;
} }
filename = filename =
@ -729,11 +741,13 @@ std::unique_ptr<PostProcessing::Shader> PostProcessing::TryLoadingShader(const s
if (resource_str.has_value()) if (resource_str.has_value())
{ {
std::unique_ptr<ReShadeFXShader> shader = std::make_unique<ReShadeFXShader>(); std::unique_ptr<ReShadeFXShader> shader = std::make_unique<ReShadeFXShader>();
if (shader->LoadFromString(std::string(shader_name), std::move(filename), std::move(resource_str.value()), if (!shader->LoadFromString(shader_name, std::move(filename), std::move(resource_str.value()), only_config, error))
only_config, error))
{ {
return shader; ERROR_LOG("Failed to load shader '{}': {}", shader_name, error->GetDescription());
shader.reset();
} }
return shader;
} }
filename = fmt::format("shaders" FS_OSPATH_SEPARATOR_STR "{}.glsl", shader_name); filename = fmt::format("shaders" FS_OSPATH_SEPARATOR_STR "{}.glsl", shader_name);
@ -741,11 +755,16 @@ std::unique_ptr<PostProcessing::Shader> PostProcessing::TryLoadingShader(const s
if (resource_str.has_value()) if (resource_str.has_value())
{ {
std::unique_ptr<GLSLShader> shader = std::make_unique<GLSLShader>(); std::unique_ptr<GLSLShader> shader = std::make_unique<GLSLShader>();
if (shader->LoadFromString(std::string(shader_name), std::move(resource_str.value()), error)) if (!shader->LoadFromString(shader_name, std::move(resource_str.value()), error))
return shader; {
ERROR_LOG("Failed to load shader '{}': {}", shader_name, error->GetDescription());
shader.reset();
}
return shader;
} }
ERROR_LOG("Failed to load shader '{}'", shader_name); Error::SetStringFmt(error, "Failed to locate shader '{}'", shader_name);
return {}; return {};
} }