forked from teamnwah/openmw-tes3coop
Use white color if told to use nonexisting vertexcolors (Fixes #3833)
This commit is contained in:
parent
5d2fe5e887
commit
bc82c6a35d
1 changed files with 22 additions and 4 deletions
|
@ -1710,10 +1710,8 @@ namespace NifOsg
|
||||||
const Nif::NiVertexColorProperty* vertprop = static_cast<const Nif::NiVertexColorProperty*>(property);
|
const Nif::NiVertexColorProperty* vertprop = static_cast<const Nif::NiVertexColorProperty*>(property);
|
||||||
lightmode = vertprop->data.lightmode;
|
lightmode = vertprop->data.lightmode;
|
||||||
|
|
||||||
if (hasVertexColors)
|
switch (vertprop->data.vertmode)
|
||||||
{
|
{
|
||||||
switch (vertprop->data.vertmode)
|
|
||||||
{
|
|
||||||
case 0:
|
case 0:
|
||||||
mat->setColorMode(osg::Material::OFF);
|
mat->setColorMode(osg::Material::OFF);
|
||||||
break;
|
break;
|
||||||
|
@ -1726,7 +1724,6 @@ namespace NifOsg
|
||||||
else
|
else
|
||||||
mat->setColorMode(osg::Material::OFF);
|
mat->setColorMode(osg::Material::OFF);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1788,6 +1785,27 @@ namespace NifOsg
|
||||||
mat->setAmbient(osg::Material::FRONT_AND_BACK, osg::Vec4f());
|
mat->setAmbient(osg::Material::FRONT_AND_BACK, osg::Vec4f());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we're told to use vertex colors but there are none to use, use a default color instead.
|
||||||
|
if (!hasVertexColors)
|
||||||
|
{
|
||||||
|
switch (mat->getColorMode())
|
||||||
|
{
|
||||||
|
case osg::Material::AMBIENT:
|
||||||
|
mat->setAmbient(osg::Material::FRONT_AND_BACK, osg::Vec4f(1,1,1,1));
|
||||||
|
break;
|
||||||
|
case osg::Material::AMBIENT_AND_DIFFUSE:
|
||||||
|
mat->setAmbient(osg::Material::FRONT_AND_BACK, osg::Vec4f(1,1,1,1));
|
||||||
|
mat->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4f(1,1,1,1));
|
||||||
|
break;
|
||||||
|
case osg::Material::EMISSION:
|
||||||
|
mat->setEmission(osg::Material::FRONT_AND_BACK, osg::Vec4f(1,1,1,1));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mat->setColorMode(osg::Material::OFF);
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasMatCtrl && mat->getColorMode() == osg::Material::OFF
|
if (!hasMatCtrl && mat->getColorMode() == osg::Material::OFF
|
||||||
&& mat->getEmission(osg::Material::FRONT_AND_BACK) == osg::Vec4f(0,0,0,1)
|
&& mat->getEmission(osg::Material::FRONT_AND_BACK) == osg::Vec4f(0,0,0,1)
|
||||||
&& mat->getDiffuse(osg::Material::FRONT_AND_BACK) == osg::Vec4f(1,1,1,1)
|
&& mat->getDiffuse(osg::Material::FRONT_AND_BACK) == osg::Vec4f(1,1,1,1)
|
||||||
|
|
Loading…
Reference in a new issue