From e201e359a91369b084d67ad9485ec2ad4457c8fe Mon Sep 17 00:00:00 2001 From: AnyOldName3 Date: Wed, 8 Nov 2017 01:44:49 +0000 Subject: [PATCH] Move Shadow to Components --- apps/openmw/CMakeLists.txt | 1 - apps/openmw/mwrender/localmap.cpp | 4 ++-- apps/openmw/mwrender/renderingmanager.cpp | 8 ++++---- apps/openmw/mwrender/sky.cpp | 4 ++-- components/CMakeLists.txt | 2 +- {apps/openmw/mwrender => components/sceneutil}/shadow.cpp | 2 +- {apps/openmw/mwrender => components/sceneutil}/shadow.hpp | 8 ++++---- components/shader/shadermanager.cpp | 4 ++-- 8 files changed, 16 insertions(+), 17 deletions(-) rename {apps/openmw/mwrender => components/sceneutil}/shadow.cpp (99%) rename {apps/openmw/mwrender => components/sceneutil}/shadow.hpp (82%) diff --git a/apps/openmw/CMakeLists.txt b/apps/openmw/CMakeLists.txt index 97744d4dd0..47a30f9a01 100644 --- a/apps/openmw/CMakeLists.txt +++ b/apps/openmw/CMakeLists.txt @@ -24,7 +24,6 @@ add_openmw_dir (mwrender creatureanimation effectmanager util renderinginterface pathgrid rendermode weaponanimation bulletdebugdraw globalmap characterpreview camera localmap water terrainstorage ripplesimulation renderbin actoranimation landmanager - shadow ) add_openmw_dir (mwinput diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 4b60a7cf22..c7f90bc5f3 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "../mwbase/environment.hpp" @@ -23,7 +24,6 @@ #include "../mwworld/cellstore.hpp" #include "vismask.hpp" -#include "shadow.hpp" namespace { @@ -206,7 +206,7 @@ osg::ref_ptr LocalMap::createOrthographicCamera(float x, float y, f fakeShadowMapImage->allocateImage(1, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT); *(float*)fakeShadowMapImage->data() = -std::numeric_limits::infinity(); // this has been tried both positive and negative osg::ref_ptr fakeShadowMapTexture = new osg::Texture2D(fakeShadowMapImage); - for (int i = MWShadow::baseShadowTextureUnit; i < MWShadow::baseShadowTextureUnit + MWShadow::numberOfShadowMapsPerLight; ++i) + for (int i = SceneUtil::MWShadow::baseShadowTextureUnit; i < SceneUtil::MWShadow::baseShadowTextureUnit + SceneUtil::MWShadow::numberOfShadowMapsPerLight; ++i) stateset->setTextureAttributeAndModes(i, fakeShadowMapTexture, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE | osg::StateAttribute::PROTECTED); camera->addChild(lightSource); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 176d179f47..1b34e433dd 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -52,7 +53,6 @@ #include "water.hpp" #include "terrainstorage.hpp" #include "util.hpp" -#include "shadow.hpp" namespace MWRender { @@ -210,9 +210,9 @@ namespace MWRender settings->setReceivesShadowTraversalMask(~0u); //settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::PERSPECTIVE_SHADOW_MAP); - settings->setBaseShadowTextureUnit(MWShadow::baseShadowTextureUnit); + settings->setBaseShadowTextureUnit(SceneUtil::MWShadow::baseShadowTextureUnit); //settings->setMinimumShadowMapNearFarRatio(0); - settings->setNumShadowMapsPerLight(MWShadow::numberOfShadowMapsPerLight); + settings->setNumShadowMapsPerLight(SceneUtil::MWShadow::numberOfShadowMapsPerLight); //settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::ORTHOGRAPHIC_SHADOW_MAP); //settings->setMultipleShadowMapHint(osgShadow::ShadowSettings::PARALLEL_SPLIT); // ignored //settings->setComputeNearFarModeOverride(osg::CullSettings::COMPUTE_NEAR_FAR_USING_PRIMITIVES); @@ -224,7 +224,7 @@ namespace MWRender int mapres = 2048; settings->setTextureSize(osg::Vec2s(mapres,mapres)); - MWShadow* tech = new MWShadow(); + SceneUtil::MWShadow* tech = new SceneUtil::MWShadow(); shadowedScene->setShadowTechnique(tech); /*tech->setMaxFarPlane(0); diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 8eec3f30b2..331782c7bd 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -42,13 +42,13 @@ #include #include #include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" #include "vismask.hpp" #include "renderbin.hpp" -#include "shadow.hpp" namespace { @@ -1124,7 +1124,7 @@ SkyManager::SkyManager(osg::Group* parentNode, Resource::SceneManager* sceneMana // Assign empty program to specify we don't want shaders // The shaders generated by the SceneManager can't handle everything we need skyroot->getOrCreateStateSet()->setAttributeAndModes(new osg::Program(), osg::StateAttribute::OVERRIDE|osg::StateAttribute::PROTECTED|osg::StateAttribute::ON); - for (int i = MWShadow::baseShadowTextureUnit; i < MWShadow::baseShadowTextureUnit + MWShadow::numberOfShadowMapsPerLight; ++i) + for (int i = SceneUtil::MWShadow::baseShadowTextureUnit; i < SceneUtil::MWShadow::baseShadowTextureUnit + SceneUtil::MWShadow::numberOfShadowMapsPerLight; ++i) skyroot->getOrCreateStateSet()->setTextureMode(i, GL_TEXTURE_2D, osg::StateAttribute::PROTECTED | osg::StateAttribute::OFF); skyroot->setNodeMask(Mask_Sky); diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index a0b426a163..f6af33b25f 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -56,7 +56,7 @@ add_component_dir (shader add_component_dir (sceneutil clone attach visitor util statesetupdater controller skeleton riggeometry morphgeometry lightcontroller - lightmanager lightutil positionattitudetransform workqueue unrefqueue pathgridutil waterutil writescene serialize optimizer + lightmanager lightutil positionattitudetransform workqueue unrefqueue pathgridutil waterutil writescene serialize optimizer shadow ) add_component_dir (nif diff --git a/apps/openmw/mwrender/shadow.cpp b/components/sceneutil/shadow.cpp similarity index 99% rename from apps/openmw/mwrender/shadow.cpp rename to components/sceneutil/shadow.cpp index 9a4e2688af..e8b267dadb 100644 --- a/apps/openmw/mwrender/shadow.cpp +++ b/components/sceneutil/shadow.cpp @@ -7,7 +7,7 @@ #include #include -namespace MWRender +namespace SceneUtil { using namespace osgShadow; diff --git a/apps/openmw/mwrender/shadow.hpp b/components/sceneutil/shadow.hpp similarity index 82% rename from apps/openmw/mwrender/shadow.hpp rename to components/sceneutil/shadow.hpp index 445a7b0f55..8d8278deb2 100644 --- a/apps/openmw/mwrender/shadow.hpp +++ b/components/sceneutil/shadow.hpp @@ -1,9 +1,9 @@ -#ifndef OPENMW_MWRENDER_SHADOW_H -#define OPENMW_MWRENDER_SHADOW_H +#ifndef COMPONENTS_SCENEUTIL_SHADOW_H +#define COMPONENTS_SCENEUTIL_SHADOW_H #include -namespace MWRender +namespace SceneUtil { class MWShadow : public osgShadow::ViewDependentShadowMap { @@ -27,4 +27,4 @@ namespace MWRender }; } -#endif //OPENMW_MWRENDER_SHADOW_H +#endif //COMPONENTS_SCENEUTIL_SHADOW_H diff --git a/components/shader/shadermanager.cpp b/components/shader/shadermanager.cpp index 3b4373387c..a0b1aca83c 100644 --- a/components/shader/shadermanager.cpp +++ b/components/shader/shadermanager.cpp @@ -11,7 +11,7 @@ #include #include -#include "apps/openmw/mwrender/shadow.hpp" +#include "components/sceneutil/shadow.hpp" namespace Shader { @@ -108,7 +108,7 @@ namespace Shader // set up shadows in the shader // get these values from settings manager bool shadows = true & !disableShadows; - int numShadowMaps = MWRender::MWShadow::numberOfShadowMapsPerLight; + int numShadowMaps = SceneUtil::MWShadow::numberOfShadowMapsPerLight; DefineMap definesWithShadows; if (shadows) {