Revision: 8540
http://playerstage.svn.sourceforge.net/playerstage/?rev=8540&view=rev
Author: natepak
Date: 2010-01-30 21:39:24 +0000 (Sat, 30 Jan 2010)
Log Message:
-----------
Added more lighting options
Modified Paths:
--------------
code/gazebo/trunk/server/rendering/RTShaderSystem.cc
Modified: code/gazebo/trunk/server/rendering/RTShaderSystem.cc
===================================================================
--- code/gazebo/trunk/server/rendering/RTShaderSystem.cc 2010-01-30
16:30:21 UTC (rev 8539)
+++ code/gazebo/trunk/server/rendering/RTShaderSystem.cc 2010-01-30
21:39:24 UTC (rev 8540)
@@ -40,6 +40,7 @@
#if OGRE_VERSION_MAJOR == 1 && OGRE_VERSION_MINOR >= 7
World::Instance()->ConnectPerPixelLightingSignal(
boost::bind(&RTShaderSystem::SetPerPixelLighting, this, _1) );
this->curLightingModel = RTShaderSystem::SSLM_PerPixelLighting;
+ //this->curLightingModel = RTShaderSystem::SSLM_NormalMapLightingObjectSpace;
#endif
}
@@ -225,17 +226,6 @@
Ogre::Pass* curPass = curMaterial->getTechnique(0)->getPass(0);
- /*if (mSpecularEnable)
- {
- curPass->setSpecular(ColourValue::White);
- curPass->setShininess(32.0);
- }
- else
- {
- curPass->setSpecular(ColourValue::Black);
- curPass->setShininess(0.0);
- }*/
-
// Grab the first pass render state.
// NOTE: For more complicated samples iterate over the passes and build
// each one of them as desired.
@@ -260,14 +250,37 @@
renderState->addSubRenderState(perPixelLightModel);
}
- }
+ else if (this->curLightingModel == SSLM_NormalMapLightingObjectSpace)
+ {
+ Ogre::RTShader::SubRenderState* subRenderState =
this->shaderGenerator->createSubRenderState(Ogre::RTShader::NormalMapLighting::Type);
+ Ogre::RTShader::NormalMapLighting* normalMapSubRS =
static_cast<Ogre::RTShader::NormalMapLighting*>(subRenderState);
+ Ogre::UserObjectBindings* rtssBindings =
Ogre::any_cast<Ogre::UserObjectBindings*>(curPass->getUserObjectBindings().getUserAny(Ogre::RTShader::ShaderGenerator::BINDING_OBJECT_KEY));
+
+
normalMapSubRS->setNormalMapSpace(Ogre::RTShader::NormalMapLighting::NMS_OBJECT);
+
rtssBindings->setUserAny(Ogre::RTShader::NormalMapLighting::NormalMapTextureNameKey,
Ogre::Any(Ogre::String("skin.tga")));
+ renderState->addSubRenderState(normalMapSubRS);
+ }
+
+ else if (this->curLightingModel == SSLM_NormalMapLightingTangentSpace)
+ {
+ Ogre::RTShader::SubRenderState* subRenderState =
this->shaderGenerator->createSubRenderState(Ogre::RTShader::NormalMapLighting::Type);
+ Ogre::RTShader::NormalMapLighting* normalMapSubRS =
static_cast<Ogre::RTShader::NormalMapLighting*>(subRenderState);
+ Ogre::UserObjectBindings* rtssBindings =
Ogre::any_cast<Ogre::UserObjectBindings*>(curPass->getUserObjectBindings().getUserAny(Ogre::RTShader::ShaderGenerator::BINDING_OBJECT_KEY));
+
+
normalMapSubRS->setNormalMapSpace(Ogre::RTShader::NormalMapLighting::NMS_TANGENT);
+
rtssBindings->setUserAny(Ogre::RTShader::NormalMapLighting::NormalMapTextureNameKey,
Ogre::Any(Ogre::String("skin.tga")));
+
+ renderState->addSubRenderState(normalMapSubRS);
+ }
+#endif
+ }
+
// Invalidate this material in order to re-generate its shaders.
this->shaderGenerator->invalidateMaterial(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME,
curMaterialName);
}
-#endif
#endif
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit