From 897ee702d18cc40fd27a10453c2a1b4d82c3c1a3 Mon Sep 17 00:00:00 2001 From: "glassmancody.info" Date: Sun, 29 Jan 2023 11:14:08 -0800 Subject: [PATCH] move water normal to vfs --- apps/openmw/engine.cpp | 2 +- apps/openmw/mwrender/renderingmanager.cpp | 8 ++--- apps/openmw/mwrender/renderingmanager.hpp | 4 +-- apps/openmw/mwrender/water.cpp | 34 ++---------------- apps/openmw/mwrender/water.hpp | 4 +-- apps/openmw/mwworld/worldimp.cpp | 5 ++- apps/openmw/mwworld/worldimp.hpp | 2 +- files/data/CMakeLists.txt | 1 + .../textures/omw}/water_nm.png | Bin files/shaders/CMakeLists.txt | 1 - 10 files changed, 14 insertions(+), 47 deletions(-) rename files/{shaders => data/textures/omw}/water_nm.png (100%) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index bafba8c6a5..eeb2d8ae0d 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -768,7 +768,7 @@ void OMW::Engine::prepareEngine() // Create the world mWorld = std::make_unique(mViewer, rootNode, mResourceSystem.get(), mWorkQueue.get(), *mUnrefQueue, mFileCollections, mContentFiles, mGroundcoverFiles, mEncoder.get(), mActivationDistanceOverride, mCellName, - mStartupScript, mResDir, mCfgMgr.getUserDataPath()); + mStartupScript, mCfgMgr.getUserDataPath()); mWorld->setupPlayer(); mWorld->setRandomSeed(mRandomSeed); mEnvironment.setWorld(*mWorld); diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index ad55dd5c04..096fbe7a62 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -337,8 +337,8 @@ namespace MWRender RenderingManager::RenderingManager(osgViewer::Viewer* viewer, osg::ref_ptr rootNode, Resource::ResourceSystem* resourceSystem, SceneUtil::WorkQueue* workQueue, - const std::filesystem::path& resourcePath, DetourNavigator::Navigator& navigator, - const MWWorld::GroundcoverStore& groundcoverStore, SceneUtil::UnrefQueue& unrefQueue) + DetourNavigator::Navigator& navigator, const MWWorld::GroundcoverStore& groundcoverStore, + SceneUtil::UnrefQueue& unrefQueue) : mSkyBlending(Settings::Manager::getBool("sky blending", "Fog")) , mViewer(viewer) , mRootNode(rootNode) @@ -551,8 +551,8 @@ namespace MWRender resourceSystem->getSceneManager()->setSupportsNormalsRT(mPostProcessor->getSupportsNormalsRT()); // water goes after terrain for correct waterculling order - mWater = std::make_unique(sceneRoot->getParent(0), sceneRoot, mResourceSystem, - mViewer->getIncrementalCompileOperation(), resourcePath); + mWater = std::make_unique( + sceneRoot->getParent(0), sceneRoot, mResourceSystem, mViewer->getIncrementalCompileOperation()); mCamera = std::make_unique(mViewer->getCamera()); diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index ff1d96adcc..1313f7b9c9 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -108,8 +108,8 @@ namespace MWRender public: RenderingManager(osgViewer::Viewer* viewer, osg::ref_ptr rootNode, Resource::ResourceSystem* resourceSystem, SceneUtil::WorkQueue* workQueue, - const std::filesystem::path& resourcePath, DetourNavigator::Navigator& navigator, - const MWWorld::GroundcoverStore& groundcoverStore, SceneUtil::UnrefQueue& unrefQueue); + DetourNavigator::Navigator& navigator, const MWWorld::GroundcoverStore& groundcoverStore, + SceneUtil::UnrefQueue& unrefQueue); ~RenderingManager(); osgUtil::IncrementalCompileOperation* getIncrementalCompileOperation(); diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 513b0eb261..ee0a8973f6 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -1,7 +1,5 @@ #include "water.hpp" -#include - #include #include #include @@ -12,15 +10,9 @@ #include #include -#include - -#include - #include #include -#include - #include #include #include @@ -235,26 +227,6 @@ namespace MWRender float mRainIntensity; }; - osg::ref_ptr readPngImage(const std::filesystem::path& file) - { - std::ifstream inStream; - inStream.open(file, std::ios_base::in | std::ios_base::binary); - if (inStream.fail()) - Log(Debug::Error) << "Error: Failed to open " << file; - osgDB::ReaderWriter* reader = osgDB::Registry::instance()->getReaderWriterForExtension("png"); - if (!reader) - { - Log(Debug::Error) << "Error: Failed to read " << file << ", no png readerwriter found"; - return osg::ref_ptr(); - } - osgDB::ReaderWriter::ReadResult result = reader->readImage(inStream); - if (!result.success()) - Log(Debug::Error) << "Error: Failed to read " << file << ": " << result.message() << " code " - << result.status(); - - return result.getImage(); - } - class Refraction : public SceneUtil::RTTNode { public: @@ -453,12 +425,11 @@ namespace MWRender }; Water::Water(osg::Group* parent, osg::Group* sceneRoot, Resource::ResourceSystem* resourceSystem, - osgUtil::IncrementalCompileOperation* ico, const std::filesystem::path& resourcePath) + osgUtil::IncrementalCompileOperation* ico) : mRainIntensityUpdater(nullptr) , mParent(parent) , mSceneRoot(sceneRoot) , mResourceSystem(resourceSystem) - , mResourcePath(resourcePath) , mEnabled(true) , mToggled(true) , mTop(0) @@ -709,8 +680,7 @@ namespace MWRender osg::ref_ptr program = shaderMgr.getProgram(vertexShader, fragmentShader); osg::ref_ptr normalMap( - new osg::Texture2D(readPngImage(mResourcePath / "shaders" / "water_nm.png"))); - + new osg::Texture2D(mResourceSystem->getImageManager()->getImage("textures/omw/water_nm.png"))); if (normalMap->getImage()) normalMap->getImage()->flipVertical(); normalMap->setWrap(osg::Texture::WRAP_S, osg::Texture::REPEAT); diff --git a/apps/openmw/mwrender/water.hpp b/apps/openmw/mwrender/water.hpp index cfd311300d..2c5f416428 100644 --- a/apps/openmw/mwrender/water.hpp +++ b/apps/openmw/mwrender/water.hpp @@ -65,8 +65,6 @@ namespace MWRender osg::ref_ptr mRefraction; osg::ref_ptr mReflection; - const std::filesystem::path mResourcePath; - bool mEnabled; bool mToggled; float mTop; @@ -89,7 +87,7 @@ namespace MWRender public: Water(osg::Group* parent, osg::Group* sceneRoot, Resource::ResourceSystem* resourceSystem, - osgUtil::IncrementalCompileOperation* ico, const std::filesystem::path& resourcePath); + osgUtil::IncrementalCompileOperation* ico); ~Water(); void setCullCallback(osg::Callback* callback); diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 0e415739d9..a158848d48 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -157,8 +157,7 @@ namespace MWWorld SceneUtil::WorkQueue* workQueue, SceneUtil::UnrefQueue& unrefQueue, const Files::Collections& fileCollections, const std::vector& contentFiles, const std::vector& groundcoverFiles, ToUTF8::Utf8Encoder* encoder, int activationDistanceOverride, const std::string& startCell, - const std::string& startupScript, const std::filesystem::path& resourcePath, - const std::filesystem::path& userDataPath) + const std::string& startupScript, const std::filesystem::path& userDataPath) : mResourceSystem(resourceSystem) , mLocalScripts(mStore) , mWorldModel(mStore, mReaders) @@ -215,7 +214,7 @@ namespace MWWorld } mRendering = std::make_unique( - viewer, rootNode, resourceSystem, workQueue, resourcePath, *mNavigator, mGroundcoverStore, unrefQueue); + viewer, rootNode, resourceSystem, workQueue, *mNavigator, mGroundcoverStore, unrefQueue); mProjectileManager = std::make_unique( mRendering->getLightRoot()->asGroup(), resourceSystem, mRendering.get(), mPhysics.get()); mRendering->preloadCommonAssets(); diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index df2ee69fbf..773206a3fb 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -201,7 +201,7 @@ namespace MWWorld const Files::Collections& fileCollections, const std::vector& contentFiles, const std::vector& groundcoverFiles, ToUTF8::Utf8Encoder* encoder, int activationDistanceOverride, const std::string& startCell, const std::string& startupScript, - const std::filesystem::path& resourcePath, const std::filesystem::path& userDataPath); + const std::filesystem::path& userDataPath); virtual ~World(); diff --git a/files/data/CMakeLists.txt b/files/data/CMakeLists.txt index d95e2297dc..0eff040883 100644 --- a/files/data/CMakeLists.txt +++ b/files/data/CMakeLists.txt @@ -9,6 +9,7 @@ set(BUILTIN_DATA_FILES textures/omw_menu_scroll_right.dds textures/omw_menu_scroll_center_h.dds textures/omw_menu_scroll_center_v.dds + textures/omw/water_nm.png fonts/DejaVuFontLicense.txt fonts/DejaVuLGCSansMono.ttf diff --git a/files/shaders/water_nm.png b/files/data/textures/omw/water_nm.png similarity index 100% rename from files/shaders/water_nm.png rename to files/data/textures/omw/water_nm.png diff --git a/files/shaders/CMakeLists.txt b/files/shaders/CMakeLists.txt index 9215f78da0..7423a74aa6 100644 --- a/files/shaders/CMakeLists.txt +++ b/files/shaders/CMakeLists.txt @@ -11,7 +11,6 @@ set(SHADER_FILES groundcover_fragment.glsl water_vertex.glsl water_fragment.glsl - water_nm.png alpha.glsl depth.glsl objects_vertex.glsl