Osg: correcting car shader and parameters sended to it.

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5466 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: e37469a20ec88dc2325d0069c2979296a4115fbf
Former-commit-id: dadd54d8fc8339e03c797427f6150a2789e7f669
This commit is contained in:
rvlander 2013-05-21 15:11:37 +00:00
parent 80538129e7
commit aa7ebec367
2 changed files with 21 additions and 10 deletions

View file

@ -83,7 +83,7 @@ public :
stateset->addUniform(shininess);
}
void update(osg::Vec3f c, osg::Matrixf modelview){
void update(osg::Vec3f c, osg::Matrixf view){
SDRender * ren = (SDRender *)getRender();
@ -98,11 +98,16 @@ public :
//SDScreens * scr= (SDScreens *)getScreens();
//osg::Vec3 c = scr->getActiveView()->getCameras()->getSelectedCamera()->getCameraPosition();
// osg::Matrix modelview = scr->getActiveView()->getOsgCam()->getViewMatrix();
//Wil have to check space coordinates !
osg::Vec4f v = osg::Vec4f(c.x(),c.y(),c.z(),1.0f);
osg::Vec4f pv = v*modelview;
osg::Vec4f pv = v*view;
osg::Vec4f lv = osg::Vec4(sun_pos.x(),sun_pos.y(),sun_pos.z(),0.0f);
lv =lv*modelview;
/*
lv = lv*view;
/*
GfOut("View Point : %f %f %f\n",pv.x(),pv.y(),pv.z());
GfOut("Light Vector : %f %f %f\n",lv.x(),lv.y(),lv.z());
*/
@ -114,6 +119,8 @@ public :
this->lightVector->set(osg::Vec3f(lv.x(),lv.y(),lv.z()));
this->lightPower->set(sun_color);
this->ambientColor->set(scene_color);
//this->mvmatrix->set(mvm);
// this->normalmatrix->set(m);
//osg::StateSet* stateset = pCar->getOrCreateStateSet();
//stateset->setAttributeAndModes( program.get() );
@ -136,7 +143,7 @@ SDCar::loadCar(tCarElt *car)
char buf[nMaxTexPathSize];
int index;
void *handle;
//const char *param;
//const char *param;,car_branch->getMatrix()
int lg =0;
char path[256];
@ -319,6 +326,8 @@ void SDCar::updateCar()
}
void SDCar::updateShadingParameters(osg::Vec3f eye,osg::Matrixf modelview){
shader->update(eye,modelview);
}

View file

@ -362,7 +362,7 @@ void SDRender::Init(tTrack *track)
sceneGroup->addChild(m_scene);
//sceneGroup->addChild(scenery->getScene());
//m_CarRoot->addChild(cars->getCarsNode());
m_CarRoot->setNodeMask(castShadowMask);
//m_CarRoot->setNodeMask(castShadowMask);
sceneGroup->addChild(m_CarRoot.get());
stateSet = new osg::StateSet;
stateSet = m_scene->getOrCreateStateSet();
@ -433,7 +433,7 @@ void SDRender::Init(tTrack *track)
void SDRender::ShadowedScene()
{
/*osg::ref_ptr<osgShadow::ShadowMap> vdsm = new osgShadow::ShadowMap;
osg::ref_ptr<osgShadow::ShadowMap> vdsm = new osgShadow::ShadowMap;
vdsm->setLight(sunLight.get());
vdsm->setTextureSize(osg::Vec2s(2048, 2048));
vdsm->setTextureUnit(3);
@ -444,21 +444,23 @@ void SDRender::ShadowedScene()
shadowRoot->setCastsShadowTraversalMask(castShadowMask);
shadowRoot->addChild(m_scene.get());
shadowRoot->addChild(m_CarRoot.get());
shadowRoot->addChild(sunLight.get());
m_RealRoot->addChild(shadowRoot.get());*/
m_RealRoot->addChild(shadowRoot.get());
}
void SDRender::addCars(osg::Node* cars)
{
//m_CarRoot = new osg::Group;
m_CarRoot->addChild(cars);
//m_CarRoot->setNodeMask(castShadowMask);
m_CarRoot->setNodeMask(castShadowMask);
osgUtil::Optimizer optimizer;
optimizer.optimize(m_CarRoot.get());
optimizer.optimize(m_scene.get());
//ShadowedScene();
ShadowedScene();
}
void SDRender::UpdateLight( void )