Add shaderMode option and remove useUbershader option

This commit is contained in:
offtkp 2024-07-31 01:44:55 +03:00
parent 91ebff1b5f
commit 1b779cafa1
8 changed files with 68 additions and 19 deletions

View file

@ -1,6 +1,7 @@
#include "renderer.hpp"
#include <algorithm>
#include <optional>
#include <unordered_map>
Renderer::Renderer(GPU& gpu, const std::array<u32, regNum>& internalRegs, const std::array<u32, extRegNum>& externalRegs)
@ -36,4 +37,30 @@ const char* Renderer::typeToString(RendererType rendererType) {
case RendererType::Software: return "software";
default: return "Invalid";
}
}
std::optional<ShaderMode> Renderer::shaderModeFromString(std::string inString) {
// Transform to lower-case to make the setting case-insensitive
std::transform(inString.begin(), inString.end(), inString.begin(), [](unsigned char c) { return std::tolower(c); });
static const std::unordered_map<std::string, ShaderMode> map = {
{"specialized", ShaderMode::Specialized}, {"special", ShaderMode::Specialized},
{"ubershader", ShaderMode::Ubershader}, {"uber", ShaderMode::Ubershader},
{"hybrid", ShaderMode::Hybrid}, {"threaded", ShaderMode::Hybrid}, {"i hate opengl context creation", ShaderMode::Hybrid},
};
if (auto search = map.find(inString); search != map.end()) {
return search->second;
}
return std::nullopt;
}
const char* Renderer::shaderModeToString(ShaderMode shaderMode) {
switch (shaderMode) {
case ShaderMode::Specialized: return "specialized";
case ShaderMode::Ubershader: return "ubershader";
case ShaderMode::Hybrid: return "hybrid";
default: return "Invalid";
}
}