update SDRender

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

Former-commit-id: d3a5579b5869c48bfcb641df10fdcf9368f6bb85
Former-commit-id: 0ea2bd6807b5e4731d06b3a5930b0f53f7dd0a44
This commit is contained in:
torcs-ng 2013-05-25 19:47:18 +00:00
parent 3f373c3dc1
commit d119767485
3 changed files with 23 additions and 20 deletions

View file

@ -137,8 +137,7 @@ public :
}
};
osg::ref_ptr<osg::Node>
SDCar::loadCar(tCarElt *car)
osg::Node *SDCar::loadCar(tCarElt *car)
{
this->car = car;
static const int nMaxTexPathSize = 4096;
@ -303,6 +302,8 @@ SDCar::loadCar(tCarElt *car)
this->car_branch = transform1.get();
this->car_branch->addChild(wheels.initWheels(car,handle));
/*this->car_branch->getOrCreateStateSet()->setMode
( GL_DEPTH_TEST, osg::StateAttribute::PROTECTED|osg::StateAttribute::ON );*/
this->car_root = new osg::Group;
@ -325,8 +326,7 @@ osg::ref_ptr<osg::Node> SDCar::initOcclusionQuad(tCarElt *car){
char buf[512];
std::string TmpPath = GetDataDir();
// GfOut("\n################## LOADING SHADOW ###############################\n");
// GfOut("\n################## LOADING SHADOW ###############################\n");
std::string shadowTextureName = GfParmGetStr(car->_carHandle, SECT_GROBJECTS, PRM_SHADOW_TEXTURE, "");
@ -354,14 +354,10 @@ osg::ref_ptr<osg::Node> SDCar::initOcclusionQuad(tCarElt *car){
texcoords->push_back(tex);
vtx._v[1] = car->_dimension_y * MULT / 2.0;
vertices->push_back(vtx);
vertices->push_back(vtx);
tex._v[1] = 1.0;
texcoords->push_back(tex);
}
// vertices->push_back( osg::Vec3(0.0f, 10.0f, 0.0f) );
// vertices->push_back( osg::Vec3(10.0f, 0.0f, 0.0f) );
// vertices->push_back( osg::Vec3(10.0f, 0.0f, 10.0f) );
//vertices->push_back( osg::Vec3(10.0f, 0.0f, 10.0f) );
osg::ref_ptr<osg::Vec3Array> normals = new osg::Vec3Array;
normals->push_back( osg::Vec3(0.0f,0.0f, 1.0f) );
@ -391,17 +387,16 @@ osg::ref_ptr<osg::Node> SDCar::initOcclusionQuad(tCarElt *car){
root->addDrawable( quad.get() );
osg::StateSet* stateset = root->getOrCreateStateSet();
//stateset->setMode( GL_DEPTH_TEST, osg::StateAttribute::OFF );
stateset->setTextureAttributeAndModes(0, texture.get() );
stateset->setAttributeAndModes( blendFunc );
stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN );
shadowVertices = vertices;
// GfOut("\n################## LOADED SHADOW ###############################\n");
// GfOut("\n################## LOADED SHADOW ###############################\n");
return root;
return root.get();
}
void SDCar::updateCar()
@ -421,7 +416,6 @@ void SDCar::updateCar()
this->car_branch->setMatrix(mat);
//ugly computation,
if (SHADOW_TECHNIQUE == 0)
{
@ -439,7 +433,6 @@ void SDCar::updateCar()
void SDCar::updateShadingParameters(osg::Matrixf modelview){
shader->update(modelview);
}
@ -475,7 +468,6 @@ void SDCars::loadCars(tSituation * pSituation)
return;;
}
void SDCars::updateCars()
{
std::vector<SDCar *>::iterator it;

View file

@ -38,12 +38,12 @@ class SDCar
SDCarShader * shader;
osg::ref_ptr<osg::Vec3Array> shadowVertices;
osg::ref_ptr<osg::Geometry> quad;
// osg::ref_ptr<osg::MatrixTransform> wheels[4];
// osg::ref_ptr<osg::MatrixTransform> initWheel(int wheelIndec, const char *wheel_mod_name);
//osg::ref_ptr<osg::MatrixTransform> wheels[4];
//osg::ref_ptr<osg::MatrixTransform> initWheel(int wheelIndec, const char *wheel_mod_name);
osg::ref_ptr<osg::Node> initOcclusionQuad(tCarElt *car);
public :
osg::ref_ptr<osg::Node> loadCar(tCarElt *car);
osg::Node *loadCar(tCarElt *car);
void updateCar();
void updateShadingParameters(osg::Matrixf modelview);
};

View file

@ -37,7 +37,7 @@
#include <osgShadow/ParallelSplitShadowMap>
#include <osgShadow/LightSpacePerspectiveShadowMap>
#include <osgShadow/StandardShadowMap>
//#include <osgShadow/ViewDependentShadowMap>
#include <osgShadow/ViewDependentShadowMap>
#include "OsgMain.h"
#include "OsgRender.h"
@ -451,6 +451,17 @@ void SDRender::ShadowedScene()
settings->setCastsShadowTraversalMask(castShadowMask);
shadowRoot->setShadowTechnique((vdsm.get()));
}
else if (SHADOW_TECHNIQUE == 2)
{
osg::ref_ptr<osgShadow::ViewDependentShadowMap> vdsm = new osgShadow::ViewDependentShadowMap;
//vdsm->setLight(sunLight.get());
//vdsm->setTextureSize(osg::Vec2s(4096, 4096));
shadowRoot = new osgShadow::ShadowedScene;
osgShadow::ShadowSettings* settings = shadowRoot->getShadowSettings();
settings->setReceivesShadowTraversalMask(rcvShadowMask);
settings->setCastsShadowTraversalMask(castShadowMask);
shadowRoot->setShadowTechnique((vdsm.get()));
}
shadowRoot->addChild(m_scene.get());
shadowRoot->addChild(m_CarRoot.get());