diff --git a/apps/opencs/model/world/data.cpp b/apps/opencs/model/world/data.cpp index b9208b44b6..bc630806a1 100644 --- a/apps/opencs/model/world/data.cpp +++ b/apps/opencs/model/world/data.cpp @@ -11,6 +11,8 @@ #include #include +#include +#include #include #include @@ -75,6 +77,14 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, bool fsStrict, const Files::Pat mResourcesManager.setVFS(mVFS.get()); mResourceSystem.reset(new Resource::ResourceSystem(mVFS.get())); + Shader::ShaderManager::DefineMap defines = mResourceSystem->getSceneManager()->getShaderManager().getGlobalDefines(); + Shader::ShaderManager::DefineMap shadowDefines = SceneUtil::ShadowManager::getShadowsDisabledDefines(); + defines["forcePPL"] = "0"; + defines["clamp"] = "1"; + for (const auto& define : shadowDefines) + defines[define.first] = define.second; + mResourceSystem->getSceneManager()->getShaderManager().setGlobalDefines(defines); + mResourceSystem->getSceneManager()->setShaderPath((resDir / "shaders").string()); int index = 0; diff --git a/components/sceneutil/shadow.hpp b/components/sceneutil/shadow.hpp index 24deff2531..928de4543a 100644 --- a/components/sceneutil/shadow.hpp +++ b/components/sceneutil/shadow.hpp @@ -15,6 +15,8 @@ namespace SceneUtil public: static void disableShadowsForStateSet(osg::ref_ptr stateSet); + static Shader::ShaderManager::DefineMap getShadowsDisabledDefines(); + ShadowManager(osg::ref_ptr sceneRoot, osg::ref_ptr rootNode, unsigned int outdoorShadowCastingMask, unsigned int indoorShadowCastingMask, Shader::ShaderManager &shaderManager); virtual ~ShadowManager() = default; @@ -23,8 +25,6 @@ namespace SceneUtil virtual Shader::ShaderManager::DefineMap getShadowDefines(); - virtual Shader::ShaderManager::DefineMap getShadowsDisabledDefines(); - virtual void enableIndoorMode(); virtual void enableOutdoorMode();