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

summaryrefslogtreecommitdiff
path: root/source/client/StarClientApplication.cpp
diff options
context:
space:
mode:
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());