From aa7ebec367a0222691c54a1dc4e130ca061e00c4 Mon Sep 17 00:00:00 2001 From: rvlander Date: Tue, 21 May 2013 15:11:37 +0000 Subject: [PATCH] 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 --- src/modules/graphic/osggraph/OsgCar.cpp | 19 ++++++++++++++----- src/modules/graphic/osggraph/OsgRender.cpp | 12 +++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/modules/graphic/osggraph/OsgCar.cpp b/src/modules/graphic/osggraph/OsgCar.cpp index a324e9066..94dbe4591 100644 --- a/src/modules/graphic/osggraph/OsgCar.cpp +++ b/src/modules/graphic/osggraph/OsgCar.cpp @@ -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); } diff --git a/src/modules/graphic/osggraph/OsgRender.cpp b/src/modules/graphic/osggraph/OsgRender.cpp index e3c7d266e..a4bccc962 100644 --- a/src/modules/graphic/osggraph/OsgRender.cpp +++ b/src/modules/graphic/osggraph/OsgRender.cpp @@ -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 vdsm = new osgShadow::ShadowMap; + osg::ref_ptr 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 )