9 #ifndef shadowMapImple_H_
10 #define shadowMapImple_H_
15 #include <osg/Material>
16 #include <osg/MatrixTransform>
17 #include <osg/LightSource>
18 #include <osgUtil/CullVisitor>
20 #include <osg/Texture2D>
22 namespace makOsgShadowFX
38 virtual void cull(osgUtil::CullVisitor& cv);
40 virtual osg::Texture2D*
shadowTexture()
const {
return myShadowMap.get();}
42 virtual void setShadowScene(osg::Group* scene) {
if(scene) myShadowScene=scene;}
43 virtual osg::Group*
shadowScene() {
return myShadowScene.get();}
45 virtual void traverse(osg::NodeVisitor& nv);
47 virtual osg::Camera*
shadowCamera()
const {
return myShadowCamera.get();}
49 virtual osg::TexGen*
texureGen()
const {
return myTexGen.get();}
53 virtual void setPolygonOffset(
const osg::Vec2& polyOffset);
59 virtual void setTextureSize(
const osg::Vec2s& textureSize);
65 virtual void setLight(osg::Light* light);
66 virtual void setLight(osg::LightSource* ls);
75 virtual const osg::Light* selectLight( osg::Vec4 &viewLightPos,
76 osg::Vec3 &viewLightDir );
78 virtual void setupShadowReceivingScene();
80 virtual void aimShadowCastingCamera(
const osg::Light *light,
81 const osg::Vec4 &worldLightPos,
const osg::Vec3 &worldLightDir,
82 const osg::Vec3 &worldLightUp = osg::Vec3(0,1,0) );
84 virtual void generateShadowMap();
86 virtual void updateTexGen();