diff --git a/components/nif/property.hpp b/components/nif/property.hpp index 2fb3aa64d1..a0800d2700 100644 --- a/components/nif/property.hpp +++ b/components/nif/property.hpp @@ -139,6 +139,7 @@ namespace Nif float envMapIntensity{ 0.f }; void read(NIFStream* nif) override; + bool specular() const { return flags1 & 1; } bool doubleSided() const { return (flags2 >> 4) & 1; } bool treeAnim() const { return (flags2 >> 29) & 1; } bool decal() const { return (flags1 >> 26) & 1; } diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index 715c83707d..015e90f702 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -2472,6 +2472,12 @@ namespace NifOsg } break; } + case Nif::RC_BSShaderPPLightingProperty: + { + auto shaderprop = static_cast(property); + specEnabled = shaderprop->specular(); + break; + } case Nif::RC_BSLightingShaderProperty: { auto shaderprop = static_cast(property); @@ -2481,6 +2487,7 @@ namespace NifOsg mat->setShininess(osg::Material::FRONT_AND_BACK, shaderprop->mGlossiness); emissiveMult = shaderprop->mEmissiveMult; specStrength = shaderprop->mSpecStrength; + specEnabled = shaderprop->specular(); if (shaderprop->decal()) { osg::StateSet* stateset = node->getOrCreateStateSet();