forked from speed-dreams/speed-dreams-code
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:
parent
3f373c3dc1
commit
d119767485
3 changed files with 23 additions and 20 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Reference in a new issue