diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-23 23:01:25 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-23 23:01:25 +1000 |
commit | 6832c10ed5482530b4a423a78700b279fc73212a (patch) | |
tree | b26c485a105659936b5378379a773365a6da5bf8 /source/client/StarClientApplication.cpp | |
parent | 4328119e1c1f8578a92977a943a793b2ac9032e0 (diff) |
Split shaders into their own files
some unrelated directives thing too
Diffstat (limited to 'source/client/StarClientApplication.cpp')
-rw-r--r-- | source/client/StarClientApplication.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/source/client/StarClientApplication.cpp b/source/client/StarClientApplication.cpp index 4a156bd..b53a9c1 100644 --- a/source/client/StarClientApplication.cpp +++ b/source/client/StarClientApplication.cpp @@ -196,10 +196,25 @@ void ClientApplication::applicationInit(ApplicationControllerPtr appController) void ClientApplication::renderInit(RendererPtr renderer) { Application::renderInit(renderer); + auto assets = m_root->assets(); String rendererConfig = strf("/rendering/%s.config", renderer->rendererId()); - if (m_root->assets()->assetExists(rendererConfig)) - renderer->setEffectConfig(m_root->assets()->json(rendererConfig)); + if (assets->assetExists(rendererConfig)) { + StringMap<String> shaders; + auto config = assets->json(rendererConfig); + auto shaderConfig = config.getObject("effectShaders"); + for (auto& entry : shaderConfig) { + if (entry.second.isType(Json::Type::String)) { + String shader = entry.second.toString(); + if (!shader.hasChar('\n')) { + auto shaderBytes = assets->bytes(AssetPath::relativeTo(rendererConfig, shader)); + shader = std::string(shaderBytes->ptr(), shaderBytes->size()); + } + shaders[entry.first] = shader; + } + } + renderer->setEffectConfig(config, shaders); + } else Logger::warn("No rendering config found for renderer with id '%s'", renderer->rendererId()); |