Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/client/StarClientApplication.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-23 23:01:25 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-23 23:01:25 +1000
commit6832c10ed5482530b4a423a78700b279fc73212a (patch)
treeb26c485a105659936b5378379a773365a6da5bf8 /source/client/StarClientApplication.cpp
parent4328119e1c1f8578a92977a943a793b2ac9032e0 (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.cpp19
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());