From 7a8eeb3c92dcf5f81ba3c2f2f6c72812c3077128 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 18 Jul 2002 09:55:30 +0000 Subject: [PATCH] Converted the osg::Material::set/getShininess option to use the standard OpenGL range of 0.0 to 128.0 instead of the previous normalised shiniess range. This brings it inline with the way the rest of the OSG uses a 1 to 1 mapping to OpenGL. Converted the various loaders to use the new range, which is almost all cases was simply removing the /128.0f which was required before! --- include/osg/Material | 6 +++--- src/osg/Material.cpp | 8 ++++---- src/osgPlugins/dw/ReaderWriterDW.cpp | 2 +- src/osgPlugins/flt/flt2osg.cpp | 2 +- src/osgPlugins/obj/ReaderWriterOBJ.cpp | 2 +- src/osgPlugins/pfb/ConvertFromPerformer.cpp | 10 +++------- src/osgPlugins/txp/TrPageArchive.cpp | 2 +- src/osgPlugins/txp/TrPageParser.cpp | 2 +- 8 files changed, 15 insertions(+), 19 deletions(-) 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);