Revert "Disable LOD when rendering to the shadow map."
This reverts commit b95fb48a16
.
This commit is contained in:
parent
2fed46e222
commit
95a9d7a229
@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
#include <osg/StateSet>
|
#include <osg/StateSet>
|
||||||
#include <osg/Texture2D>
|
#include <osg/Texture2D>
|
||||||
#include <osg/LOD>
|
|
||||||
|
|
||||||
#include "EffectCullVisitor.hxx"
|
#include "EffectCullVisitor.hxx"
|
||||||
|
|
||||||
@ -35,23 +34,14 @@ namespace simgear
|
|||||||
|
|
||||||
using osgUtil::CullVisitor;
|
using osgUtil::CullVisitor;
|
||||||
|
|
||||||
EffectCullVisitor::EffectCullVisitor() :
|
EffectCullVisitor::EffectCullVisitor(bool collectLights) :
|
||||||
_ignoreLOD(false),
|
|
||||||
_collectLights(false)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
EffectCullVisitor::EffectCullVisitor(bool ignoreLOD, bool collectLights) :
|
|
||||||
_ignoreLOD(ignoreLOD),
|
|
||||||
_collectLights(collectLights)
|
_collectLights(collectLights)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
EffectCullVisitor::EffectCullVisitor(const EffectCullVisitor& rhs) :
|
EffectCullVisitor::EffectCullVisitor(const EffectCullVisitor& rhs) :
|
||||||
osg::Referenced(rhs),
|
osg::Referenced(rhs),
|
||||||
CullVisitor(rhs),
|
CullVisitor(rhs)
|
||||||
_ignoreLOD(rhs._ignoreLOD),
|
|
||||||
_collectLights(rhs._collectLights)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,30 +50,6 @@ CullVisitor* EffectCullVisitor::clone() const
|
|||||||
return new EffectCullVisitor(*this);
|
return new EffectCullVisitor(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectCullVisitor::apply(osg::LOD& node)
|
|
||||||
{
|
|
||||||
if (_ignoreLOD) {
|
|
||||||
if (isCulled(node)) return;
|
|
||||||
|
|
||||||
// push the culling mode.
|
|
||||||
pushCurrentMask();
|
|
||||||
|
|
||||||
// push the node's state.
|
|
||||||
osg::StateSet* node_state = node.getStateSet();
|
|
||||||
if (node_state) pushStateSet(node_state);
|
|
||||||
|
|
||||||
if (_traversalMode==TRAVERSE_PARENTS) node.osg::Group::ascend(*this);
|
|
||||||
else if (_traversalMode!=TRAVERSE_NONE) node.osg::Group::traverse(*this);
|
|
||||||
// pop the node's state off the render graph stack.
|
|
||||||
if (node_state) popStateSet();
|
|
||||||
|
|
||||||
// pop the culling mode.
|
|
||||||
popCurrentMask();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
CullVisitor::apply(node);
|
|
||||||
}
|
|
||||||
|
|
||||||
void EffectCullVisitor::apply(osg::Geode& node)
|
void EffectCullVisitor::apply(osg::Geode& node)
|
||||||
{
|
{
|
||||||
if (isCulled(node))
|
if (isCulled(node))
|
||||||
|
@ -33,12 +33,10 @@ class EffectGeode;
|
|||||||
class EffectCullVisitor : public osgUtil::CullVisitor
|
class EffectCullVisitor : public osgUtil::CullVisitor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EffectCullVisitor();
|
EffectCullVisitor(bool collectLights = false);
|
||||||
EffectCullVisitor(bool ignoreLOD, bool collectLights = false);
|
|
||||||
EffectCullVisitor(const EffectCullVisitor&);
|
EffectCullVisitor(const EffectCullVisitor&);
|
||||||
virtual osgUtil::CullVisitor* clone() const;
|
virtual osgUtil::CullVisitor* clone() const;
|
||||||
using osgUtil::CullVisitor::apply;
|
using osgUtil::CullVisitor::apply;
|
||||||
virtual void apply(osg::LOD& node);
|
|
||||||
virtual void apply(osg::Geode& node);
|
virtual void apply(osg::Geode& node);
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
|
|
||||||
@ -49,7 +47,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
std::map<int,osg::ref_ptr<osg::Texture2D> > _bufferList;
|
std::map<int,osg::ref_ptr<osg::Texture2D> > _bufferList;
|
||||||
std::vector<osg::ref_ptr<EffectGeode> > _lightList;
|
std::vector<osg::ref_ptr<EffectGeode> > _lightList;
|
||||||
bool _ignoreLOD;
|
|
||||||
bool _collectLights;
|
bool _collectLights;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user