diff --git a/include/osg/Material b/include/osg/Material index d96bbfa7a..b364ef5cd 100644 --- a/include/osg/Material +++ b/include/osg/Material @@ -120,7 +120,7 @@ class SG_EXPORT Material : public StateAttribute /** Get the whether emission values are equal for front and back faces.*/ inline const bool getEmissionFrontAndBack() const { return _emissionFrontAndBack; } - /** Set shininess of specified face(s) of the material, valid shininess range is 0.0 to 1.0.*/ + /** Set shininess of specified face(s) of the material, valid shininess range is 0.0 to 128.0.*/ void setShininess( const Face face, float shininess ); /** Get the shininess value for specified face.*/ const float getShininess(const Face face) const; @@ -158,8 +158,8 @@ class SG_EXPORT Material : public StateAttribute Vec4 _emissionBack; // r, g, b, w bool _shininessFrontAndBack; - float _shininessFront; // values 0 - 1.0 - float _shininessBack; // values 0 - 1.0 + float _shininessFront; // values 0 - 128.0 + float _shininessBack; // values 0 - 128.0 }; diff --git a/src/osg/Material.cpp b/src/osg/Material.cpp index 7731810eb..46d525e61 100644 --- a/src/osg/Material.cpp +++ b/src/osg/Material.cpp @@ -227,7 +227,7 @@ const Vec4& Material::getEmission(const Face face) const void Material::setShininess( const Face face, float shininess ) { - clampBetweenRange(shininess,0.0f,1.0f,"Material::setShininess()"); + clampBetweenRange(shininess,0.0f,128.0f,"Material::setShininess()"); switch(face) { @@ -389,12 +389,12 @@ void Material::apply(State&) const if (_shininessFrontAndBack) { - glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, _shininessFront* 128.0f ); + glMaterialf( GL_FRONT_AND_BACK, GL_SHININESS, _shininessFront ); } else { - glMaterialf( GL_FRONT, GL_SHININESS, _shininessFront* 128.0f ); - glMaterialf( GL_BACK, GL_SHININESS, _shininessBack* 128.0f ); + glMaterialf( GL_FRONT, GL_SHININESS, _shininessFront ); + glMaterialf( GL_BACK, GL_SHININESS, _shininessBack ); } } diff --git a/src/osgPlugins/dw/ReaderWriterDW.cpp b/src/osgPlugins/dw/ReaderWriterDW.cpp index 5fc0dc909..76dcc29be 100644 --- a/src/osgPlugins/dw/ReaderWriterDW.cpp +++ b/src/osgPlugins/dw/ReaderWriterDW.cpp @@ -962,7 +962,7 @@ class ReaderWriterDW : public osgDB::ReaderWriter matpalet[nmat].setspecular(spec); } else if (strncmp(buff, "SmoothnessExponent:",19)==0) { float spec=atof(buff+19); - matpalet[nmat].setspecexp(spec/100.0f); // convert to 0-1 from percent + matpalet[nmat].setspecexp(spec*128.0f/100.0f); // convert to 0-128 range from percent } else if (strncmp(buff, "TextureWidthAndHeight:",22)==0) { char *ct=strchr(buff+22,','); float repx=atof(buff+23), repy=atof(ct+1); diff --git a/src/osgPlugins/flt/flt2osg.cpp b/src/osgPlugins/flt/flt2osg.cpp index 85b53b428..718e11ce7 100644 --- a/src/osgPlugins/flt/flt2osg.cpp +++ b/src/osgPlugins/flt/flt2osg.cpp @@ -919,7 +919,7 @@ void ConvertFromFLT::visitFace(GeoSetBuilder* pBuilder, FaceRecord* rec) osgMaterial->setSpecular(osg::Material::FRONT_AND_BACK, specular); osgMaterial->setEmission(osg::Material::FRONT_AND_BACK, emissiv); osgMaterial->setAlpha(osg::Material::FRONT_AND_BACK, alpha); - osgMaterial->setShininess(osg::Material::FRONT_AND_BACK, pSMaterial->sfShininess/128.0f); + osgMaterial->setShininess(osg::Material::FRONT_AND_BACK, pSMaterial->sfShininess); osgStateSet->setAttribute(osgMaterial); if (alpha < 1.0f) bBlend = true; diff --git a/src/osgPlugins/obj/ReaderWriterOBJ.cpp b/src/osgPlugins/obj/ReaderWriterOBJ.cpp index 0815b8c8c..b5053ec51 100644 --- a/src/osgPlugins/obj/ReaderWriterOBJ.cpp +++ b/src/osgPlugins/obj/ReaderWriterOBJ.cpp @@ -117,7 +117,7 @@ osgDB::ReaderWriter::ReadResult ReaderWriterOBJ::readNode(const std::string& fil osg::Vec4(omtl->emmissive[0], omtl->emmissive[1], omtl->emmissive[2], omtl->emmissive[3])); // note, osg shininess scales between 0.0 and 1.0. - mtl->setShininess(osg::Material::FRONT_AND_BACK, omtl->shininess/128.0f); + mtl->setShininess(osg::Material::FRONT_AND_BACK, omtl->shininess); stateset->setAttribute(mtl); diff --git a/src/osgPlugins/pfb/ConvertFromPerformer.cpp b/src/osgPlugins/pfb/ConvertFromPerformer.cpp index aa112a123..4306a4d75 100644 --- a/src/osgPlugins/pfb/ConvertFromPerformer.cpp +++ b/src/osgPlugins/pfb/ConvertFromPerformer.cpp @@ -1013,8 +1013,7 @@ osg::Material* ConvertFromPerformer::visitMaterial(osg::StateSet* osgStateSet,pf case(PFMTL_CMODE_OFF): osgMaterial->setColorMode(osg::Material::OFF); break; } - float s = material->getShininess()/128.0f; - osgMaterial->setShininess(osg::Material::FRONT_AND_BACK,s); + osgMaterial->setShininess(osg::Material::FRONT_AND_BACK,material->getShininess()); float a = material->getAlpha(); float r,g,b; @@ -1046,13 +1045,11 @@ osg::Material* ConvertFromPerformer::visitMaterial(osg::StateSet* osgStateSet,pf case(PFMTL_CMODE_OFF): osgMaterial->setColorMode(osg::Material::OFF); break; } - float s; float a; float r,g,b; // front material - s = front_mat->getShininess(); - osgMaterial->setShininess(osg::Material::FRONT,s); + osgMaterial->setShininess(osg::Material::FRONT,front_mat->getShininess()); a = front_mat->getAlpha(); @@ -1069,8 +1066,7 @@ osg::Material* ConvertFromPerformer::visitMaterial(osg::StateSet* osgStateSet,pf osgMaterial->setSpecular(osg::Material::FRONT,osg::Vec4(r,g,b,a)); // back material - s = back_mat->getShininess(); - osgMaterial->setShininess(osg::Material::BACK,s); + osgMaterial->setShininess(osg::Material::BACK,back_mat->getShininess()); a = back_mat->getAlpha(); diff --git a/src/osgPlugins/txp/TrPageArchive.cpp b/src/osgPlugins/txp/TrPageArchive.cpp index 1bf558861..b6c3da6ab 100644 --- a/src/osgPlugins/txp/TrPageArchive.cpp +++ b/src/osgPlugins/txp/TrPageArchive.cpp @@ -198,7 +198,7 @@ void TrPageArchive::LoadMaterials() float64 shinines; mat->GetShininess(shinines); - osg_material->setShininess(Material::FRONT_AND_BACK , (float)shinines/128.0); + osg_material->setShininess(Material::FRONT_AND_BACK , (float)shinines); osg_material->setAlpha(Material::FRONT_AND_BACK ,(float)alpha); osg_state_set->setAttributeAndModes(osg_material, StateAttribute::ON); diff --git a/src/osgPlugins/txp/TrPageParser.cpp b/src/osgPlugins/txp/TrPageParser.cpp index 92d21979d..0003940cc 100644 --- a/src/osgPlugins/txp/TrPageParser.cpp +++ b/src/osgPlugins/txp/TrPageParser.cpp @@ -726,7 +726,7 @@ void TrPageParser::LoadLocalMaterials() float64 shinines; mat->GetShininess(shinines); - osg_material->setShininess(Material::FRONT_AND_BACK , (float)shinines/128.0); + osg_material->setShininess(Material::FRONT_AND_BACK , (float)shinines); osg_material->setAlpha(Material::FRONT_AND_BACK ,(float)alpha); osg_state_set->setAttributeAndModes(osg_material, StateAttribute::ON);