diff --git a/components/bgsm/file.cpp b/components/bgsm/file.cpp index f330d8a84e..6b763321be 100644 --- a/components/bgsm/file.cpp +++ b/components/bgsm/file.cpp @@ -38,9 +38,7 @@ namespace Bgsm } stream.read(mGrayscaleToPaletteColor); if (mVersion >= 6) - { stream.read(mMaskWrites); - } } void BGSMFile::read(BGSMStream& stream) @@ -59,9 +57,7 @@ namespace Bgsm stream.read(mLightingMap); stream.read(mFlowMap); if (mVersion >= 17) - { stream.read(mDistanceFieldAlphaMap); - } } else { @@ -98,9 +94,7 @@ namespace Bgsm stream.read(mWetnessControlSpecPowerScale); stream.read(mWetnessControlSpecMinvar); if (mVersion < 10) - { stream.read(mWetnessControlEnvMapScale); - } stream.read(mWetnessControlFresnelPower); stream.read(mWetnessControlMetalness); if (mVersion >= 3) @@ -116,9 +110,7 @@ namespace Bgsm stream.read(mAnisoLighting); stream.read(mEmitEnabled); if (mEmitEnabled) - { stream.read(mEmittanceColor); - } stream.read(mEmittanceMult); stream.read(mModelSpaceNormals); stream.read(mExternalEmittance); @@ -181,14 +173,14 @@ namespace Bgsm stream.read(mEnvMap); stream.read(mNormalMap); stream.read(mEnvMapMask); + if (mVersion >= 11) + { + stream.read(mSpecularMap); + stream.read(mLightingMap); + stream.read(mGlowMap); + } if (mVersion >= 10) { - if (mVersion >= 11) - { - stream.read(mSpecularMap); - stream.read(mLightingMap); - stream.read(mGlowMap); - } stream.read(mEnvMapEnabled); stream.read(mEnvMapMaskScale); } @@ -205,20 +197,12 @@ namespace Bgsm stream.read(mEnvmapMinLOD); stream.read(mSoftDepth); if (mVersion >= 11) - { stream.read(mEmittanceColor); - if (mVersion >= 15) - { - stream.read(mAdaptiveEmissiveExposureParams); - if (mVersion >= 16) - { - stream.read(mGlowMapEnabled); - if (mVersion >= 20) - { - stream.read(mEffectPbrSpecular); - } - } - } - } + if (mVersion >= 15) + stream.read(mAdaptiveEmissiveExposureParams); + if (mVersion >= 16) + stream.read(mGlowMapEnabled); + if (mVersion >= 20) + stream.read(mEffectPbrSpecular); } } diff --git a/components/bgsm/file.hpp b/components/bgsm/file.hpp index 3524297e2d..d3fb189256 100644 --- a/components/bgsm/file.hpp +++ b/components/bgsm/file.hpp @@ -50,7 +50,7 @@ namespace Bgsm MaterialFile() = default; virtual void read(BGSMStream& stream); - virtual ~MaterialFile() {} + virtual ~MaterialFile() = default; }; struct BGSMFile : MaterialFile diff --git a/components/bgsm/reader.cpp b/components/bgsm/reader.cpp index 47c052fb81..facdee9fb2 100644 --- a/components/bgsm/reader.cpp +++ b/components/bgsm/reader.cpp @@ -31,5 +31,4 @@ namespace Bgsm mFile->read(stream); } - } diff --git a/components/bgsm/stream.cpp b/components/bgsm/stream.cpp index 2c11066709..c4fa9c1d8c 100644 --- a/components/bgsm/stream.cpp +++ b/components/bgsm/stream.cpp @@ -2,7 +2,6 @@ namespace Bgsm { - template <> void BGSMStream::read(osg::Vec2f& vec) { @@ -37,5 +36,4 @@ namespace Bgsm if (end != std::string::npos) str.erase(end); } - } diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index f661e1e8c6..05a8378c11 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -2151,18 +2151,19 @@ namespace NifOsg handleTextureControllers(texprop, composite, stateset, animflags); } - Bgsm::MaterialFilePtr getShaderMaterial(std::string_view path) const + static Bgsm::MaterialFilePtr getShaderMaterial( + std::string_view path, Resource::BgsmFileManager* materialManager) { - if (!mMaterialManager) + if (!materialManager) return nullptr; if (!Misc::StringUtils::ciEndsWith(path, ".bgem") && !Misc::StringUtils::ciEndsWith(path, ".bgsm")) return nullptr; - std::string normalizedPath = Misc::ResourceHelpers::correctMaterialPath(path, mMaterialManager->getVFS()); + std::string normalizedPath = Misc::ResourceHelpers::correctMaterialPath(path, materialManager->getVFS()); try { - return mMaterialManager->get(VFS::Path::Normalized(normalizedPath)); + return materialManager->get(VFS::Path::Normalized(normalizedPath)); } catch (std::exception& e) { @@ -2528,7 +2529,7 @@ namespace NifOsg node->setUserValue("shaderRequired", shaderRequired); osg::StateSet* stateset = node->getOrCreateStateSet(); clearBoundTextures(stateset, boundTextures); - if (Bgsm::MaterialFilePtr material = getShaderMaterial(texprop->mName)) + if (Bgsm::MaterialFilePtr material = getShaderMaterial(texprop->mName, mMaterialManager)) { handleShaderMaterialNodeProperties(material, stateset, boundTextures); break; @@ -2557,7 +2558,7 @@ namespace NifOsg node->setUserValue("shaderRequired", shaderRequired); osg::StateSet* stateset = node->getOrCreateStateSet(); clearBoundTextures(stateset, boundTextures); - if (Bgsm::MaterialFilePtr material = getShaderMaterial(texprop->mName)) + if (Bgsm::MaterialFilePtr material = getShaderMaterial(texprop->mName, mMaterialManager)) { handleShaderMaterialNodeProperties(material, stateset, boundTextures); break; @@ -2776,15 +2777,14 @@ namespace NifOsg case Nif::RC_BSLightingShaderProperty: { auto shaderprop = static_cast(property); - if (Bgsm::MaterialFilePtr shaderMat = getShaderMaterial(shaderprop->mName)) + if (Bgsm::MaterialFilePtr shaderMat = getShaderMaterial(shaderprop->mName, mMaterialManager)) { handleShaderMaterialDrawableProperties(shaderMat, mat, *node, hasSortAlpha); if (shaderMat->mShaderType == Bgsm::ShaderType::Lighting) { auto bgsm = static_cast(shaderMat.get()); - specEnabled - = false; // bgsm->mSpecularEnabled; disabled until it can be implemented properly - specStrength = bgsm->mSpecularMult; + specEnabled = false; // bgsm->mSpecularEnabled; TODO: PBR specular lighting + specStrength = 1.f; // bgsm->mSpecularMult; emissiveMult = bgsm->mEmittanceMult; } break; @@ -2803,7 +2803,7 @@ namespace NifOsg case Nif::RC_BSEffectShaderProperty: { auto shaderprop = static_cast(property); - if (Bgsm::MaterialFilePtr shaderMat = getShaderMaterial(shaderprop->mName)) + if (Bgsm::MaterialFilePtr shaderMat = getShaderMaterial(shaderprop->mName, mMaterialManager)) { handleShaderMaterialDrawableProperties(shaderMat, mat, *node, hasSortAlpha); break; diff --git a/components/resource/bgsmfilemanager.cpp b/components/resource/bgsmfilemanager.cpp index 5155db17ce..7f749e9453 100644 --- a/components/resource/bgsmfilemanager.cpp +++ b/components/resource/bgsmfilemanager.cpp @@ -1,7 +1,5 @@ #include "bgsmfilemanager.hpp" -#include - #include #include @@ -36,8 +34,6 @@ namespace Resource { } - BgsmFileManager::~BgsmFileManager() = default; - Bgsm::MaterialFilePtr BgsmFileManager::get(VFS::Path::NormalizedView name) { osg::ref_ptr obj = mCache->getRefFromObjectCache(name); diff --git a/components/resource/bgsmfilemanager.hpp b/components/resource/bgsmfilemanager.hpp index b7c0d07c5a..3c77c2c665 100644 --- a/components/resource/bgsmfilemanager.hpp +++ b/components/resource/bgsmfilemanager.hpp @@ -14,7 +14,7 @@ namespace Resource { public: BgsmFileManager(const VFS::Manager* vfs, double expiryDelay); - ~BgsmFileManager(); + ~BgsmFileManager() = default; /// Retrieve a material file from the cache or load it from the VFS if not cached yet. Bgsm::MaterialFilePtr get(VFS::Path::NormalizedView name);