Remove unused Rembrandt stuff

This commit is contained in:
Fernando García Liñán
2021-01-01 10:34:52 +01:00
parent 5a2c348b12
commit e606609a00
8 changed files with 24 additions and 176 deletions

View File

@@ -1044,7 +1044,6 @@ struct UniformBuilder :public PassAttributeBuilder
return;
SGConstPropertyNode_ptr nameProp = prop->getChild("name");
SGConstPropertyNode_ptr typeProp = prop->getChild("type");
SGConstPropertyNode_ptr positionedProp = prop->getChild("positioned");
SGConstPropertyNode_ptr valProp = prop->getChild("value");
string name;
Uniform::Type uniformType = Uniform::FLOAT;
@@ -1105,11 +1104,6 @@ struct UniformBuilder :public PassAttributeBuilder
// REVIEW: Memory Leak - 144,400 bytes in 38 blocks are indirectly lost
// Leak occurs within OSG, likely caused by passing a raw pointer
pass->addUniform(uniform.get());
if (positionedProp && positionedProp->getBoolValue() && uniformType == Uniform::FLOAT_VEC4) {
osg::Vec4 offset;
uniform->get(offset);
pass->addPositionedUniform( name, offset );
}
}
};

View File

@@ -56,16 +56,16 @@ class EffectBuilder : public SGReferenced
{
public:
virtual ~EffectBuilder() {}
virtual T* build(Effect* effect, Pass* pass, const SGPropertyNode*,
virtual T* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options) = 0;
static T* buildFromType(Effect* effect, Pass* pass, const std::string& type,
static T* buildFromType(Effect* effect, const std::string& type,
const SGPropertyNode*props,
const SGReaderWriterOptions* options)
{
BuilderMap& builderMap = getMap();
typename BuilderMap::iterator iter = builderMap.find(type);
if (iter != builderMap.end())
return iter->second->build(effect, pass, props, options);
return iter->second->build(effect, props, options);
else
return 0;
}

View File

@@ -19,9 +19,6 @@
#endif
#include <osg/StateSet>
#include <osg/Texture2D>
#include <osg/io_utils>
#include "EffectCullVisitor.hxx"
@@ -29,8 +26,6 @@
#include "Effect.hxx"
#include "Technique.hxx"
#include <simgear/scene/util/RenderConstants.hxx>
namespace simgear
{
@@ -104,19 +99,4 @@ void EffectCullVisitor::reset()
osgUtil::CullVisitor::reset();
}
void EffectCullVisitor::clearBufferList()
{
_bufferList.clear();
}
void EffectCullVisitor::addBuffer(std::string b, osg::Texture2D* tex)
{
_bufferList.insert(std::make_pair(b,tex));
}
osg::Texture2D* EffectCullVisitor::getBuffer(std::string b)
{
return _bufferList[b];
}
}

View File

@@ -19,14 +19,11 @@
#include <osgUtil/CullVisitor>
#include <map>
#include <simgear/scene/model/SGLight.hxx>
namespace osg
{
class Geode;
class Texture2D;
}
namespace simgear
@@ -44,14 +41,9 @@ public:
virtual void apply(osg::Geode& node);
virtual void reset();
void clearBufferList();
void addBuffer(std::string b, osg::Texture2D* tex);
osg::Texture2D* getBuffer(std::string b);
SGLightList getLightList() const { return _lightList; }
private:
std::map<std::string,osg::ref_ptr<osg::Texture2D> > _bufferList;
SGLightList _lightList;
bool _collectLights;
std::string _effScheme;

View File

@@ -26,23 +26,10 @@ namespace simgear
class Pass : public osg::StateSet
{
public:
typedef std::list<std::pair<int,std::string> > BufferUnitList;
typedef std::map<std::string,osg::Vec4> PositionedUniformMap;
META_Object(simgear,Pass);
Pass() {}
Pass(const Pass& rhs,
const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
void setBufferUnit( int unit, std::string buffer ) { _bufferUnitList.push_back( std::make_pair(unit,buffer) ); }
const BufferUnitList& getBufferUnitList() const { return _bufferUnitList; }
void addPositionedUniform( const std::string& name, const osg::Vec4& offset ) { _positionedUniforms[name] = offset; }
const PositionedUniformMap& getPositionedUniformMap() const { return _positionedUniforms; }
private:
BufferUnitList _bufferUnitList;
PositionedUniformMap _positionedUniforms;
};
}

View File

@@ -5,7 +5,6 @@
#include "Technique.hxx"
#include "Pass.hxx"
#include "EffectCullVisitor.hxx"
#include <iterator>
#include <vector>
@@ -14,8 +13,6 @@
#include <osg/GLExtensions>
#include <osg/GL2Extensions>
#include <osg/Math>
#include <osg/Texture2D>
#include <osg/CopyOp>
#include <osgUtil/CullVisitor>
#include <osgDB/Registry>
@@ -168,36 +165,9 @@ Technique::processDrawables(const EffectGeode::DrawablesIterator& begin,
if( isNaN(depth[i]) )
depth[i] = FLT_MAX;
}
EffectCullVisitor* ecv = dynamic_cast<EffectCullVisitor*>( cv );
EffectGeode::DrawablesIterator drawablesEnd = itr;
for (auto& pass : passes) {
osg::ref_ptr<osg::StateSet> ss = pass;
if (ecv && ( ! pass->getBufferUnitList().empty() || ! pass->getPositionedUniformMap().empty() ) ) {
ss = static_cast<osg::StateSet*>(
pass->clone( osg::CopyOp( ( ! pass->getBufferUnitList().empty() ?
osg::CopyOp::DEEP_COPY_TEXTURES :
osg::CopyOp::SHALLOW_COPY ) |
( ! pass->getPositionedUniformMap().empty() ?
osg::CopyOp::DEEP_COPY_UNIFORMS :
osg::CopyOp::SHALLOW_COPY ) )
)
);
for (Pass::BufferUnitList::const_iterator ii = pass->getBufferUnitList().begin();
ii != pass->getBufferUnitList().end();
++ii) {
osg::Texture2D* tex = ecv->getBuffer(ii->second);
if (tex != 0)
ss->setTextureAttributeAndModes( ii->first, tex );
}
for (Pass::PositionedUniformMap::const_iterator ii = pass->getPositionedUniformMap().begin();
ii != pass->getPositionedUniformMap().end();
++ii) {
osg::RefMatrix* mv = cv->getModelViewMatrix();
osg::Vec4 v = ii->second * *mv;
ss->getUniform(ii->first)->set( v );
}
}
cv->pushStateSet(ss);
cv->pushStateSet(pass.get());
int i = 0;
for (itr = begin; itr != drawablesEnd; ++itr, ++i) {
if (depth[i] != FLT_MAX)

View File

@@ -64,12 +64,12 @@ TexEnvCombine* buildTexEnvCombine(Effect* effect,
TexGen* buildTexGen(Effect* Effect, const SGPropertyNode* tgenProp);
// Hack to force inclusion of TextureBuilder.cxx in library
osg::Texture* TextureBuilder::buildFromType(Effect* effect, Pass* pass, const string& type,
osg::Texture* TextureBuilder::buildFromType(Effect* effect, const string& type,
const SGPropertyNode*props,
const SGReaderWriterOptions*
options)
{
return EffectBuilder<Texture>::buildFromType(effect, pass, type, props, options);
return EffectBuilder<Texture>::buildFromType(effect, type, props, options);
}
typedef std::tuple<string, Texture::FilterMode, Texture::FilterMode,
@@ -136,7 +136,7 @@ void TextureUnitBuilder::buildAttribute(Effect* effect, Pass* pass,
type = pType->getStringValue();
Texture* texture = 0;
try {
texture = TextureBuilder::buildFromType(effect, pass, type, prop,
texture = TextureBuilder::buildFromType(effect, type, prop,
options);
}
catch (BuilderException& e) {
@@ -312,7 +312,7 @@ class TexBuilder : public TextureBuilder
{
public:
TexBuilder(const string& texType) : _type(texType) {}
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
protected:
typedef map<TexTuple, observer_ptr<T> > TexMap;
@@ -321,7 +321,7 @@ protected:
};
template<typename T>
Texture* TexBuilder<T>::build(Effect* effect, Pass* pass, const SGPropertyNode* props,
Texture* TexBuilder<T>::build(Effect* effect, const SGPropertyNode* props,
const SGReaderWriterOptions* options)
{
TexTuple attrs = makeTexTuple(effect, props, options, _type);
@@ -356,11 +356,11 @@ TextureBuilder::Registrar install2D("2d", new TexBuilder<Texture2D>("2d"));
class WhiteTextureBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
};
Texture* WhiteTextureBuilder::build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* WhiteTextureBuilder::build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options)
{
return StateAttributeFactory::instance()->getWhiteTexture();
@@ -374,11 +374,11 @@ TextureBuilder::Registrar installWhite("white", new WhiteTextureBuilder);
class TransparentTextureBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
};
Texture* TransparentTextureBuilder::build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* TransparentTextureBuilder::build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options)
{
return StateAttributeFactory::instance()->getTransparentTexture();
@@ -393,14 +393,14 @@ TextureBuilder::Registrar installTransparent("transparent",
class NoiseBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
protected:
typedef map<int, ref_ptr<Texture3D> > NoiseMap;
NoiseMap _noises;
};
Texture* NoiseBuilder::build(Effect* effect, Pass* pass, const SGPropertyNode* props,
Texture* NoiseBuilder::build(Effect* effect, const SGPropertyNode* props,
const SGReaderWriterOptions* options)
{
int texSize = 64;
@@ -420,7 +420,7 @@ TextureBuilder::Registrar installNoise("noise", new NoiseBuilder);
class LightSpriteBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
protected:
Mutex lightMutex;
@@ -429,7 +429,7 @@ protected:
osg::Image* getPointSpriteImage(int logResolution);
};
Texture* LightSpriteBuilder::build(Effect* effect, Pass* pass, const SGPropertyNode* props,
Texture* LightSpriteBuilder::build(Effect* effect, const SGPropertyNode* props,
const SGReaderWriterOptions* options)
{
ScopedLock<Mutex> lock(lightMutex);
@@ -547,7 +547,7 @@ CubeMapTuple makeCubeMapTuple(Effect* effect, const SGPropertyNode* props)
class CubeMapBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
protected:
typedef map<CubeMapTuple, observer_ptr<TextureCubeMap> > CubeMap;
@@ -570,7 +570,7 @@ void copySubImage(const osg::Image* srcImage, int src_s, int src_t, int width, i
}
Texture* CubeMapBuilder::build(Effect* effect, Pass* pass, const SGPropertyNode* props,
Texture* CubeMapBuilder::build(Effect* effect, const SGPropertyNode* props,
const SGReaderWriterOptions* options)
{
// First check that there is a <images> tag
@@ -763,14 +763,14 @@ Tex2DArraySignature makeTex2DArraySignature(Effect *effect,
class Texture2DArrayBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
protected:
typedef map<Tex2DArraySignature, observer_ptr<Texture2DArray>> TexMap;
TexMap texMap;
};
Texture* Texture2DArrayBuilder::build(Effect* effect, Pass* pass,
Texture* Texture2DArrayBuilder::build(Effect* effect,
const SGPropertyNode* props,
const SGReaderWriterOptions* options)
{
@@ -823,14 +823,14 @@ TextureBuilder::Registrar install2DArray("2d-array", new Texture2DArrayBuilder);
class Texture3DBuilder : public TextureBuilder
{
public:
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
Texture* build(Effect* effect, const SGPropertyNode*,
const SGReaderWriterOptions* options);
protected:
typedef map<TexTuple, observer_ptr<Texture3D> > TexMap;
TexMap texMap;
};
Texture* Texture3DBuilder::build(Effect* effect, Pass* pass,
Texture* Texture3DBuilder::build(Effect* effect,
const SGPropertyNode* props,
const SGReaderWriterOptions* options)
{
@@ -1131,79 +1131,4 @@ bool makeTextureParameters(SGPropertyNode* paramRoot, const StateSet* ss)
return true;
}
class GBufferBuilder : public TextureBuilder
{
public:
GBufferBuilder() {}
Texture* build(Effect* effect, Pass* pass, const SGPropertyNode*,
const SGReaderWriterOptions* options);
private:
string buffer;
};
class BufferNameChangeListener : public SGPropertyChangeListener,
public DeferredPropertyListener {
public:
BufferNameChangeListener(Pass* p, int u, const std::string& pn) : pass(p), unit(u)
{
propName = new std::string(pn);
}
~BufferNameChangeListener()
{
delete propName;
propName = 0;
}
void valueChanged(SGPropertyNode* node)
{
const char* buffer = node->getStringValue();
pass->setBufferUnit(unit, buffer);
}
void activate(SGPropertyNode* propRoot)
{
SGPropertyNode* listenProp = makeNode(propRoot, *propName);
delete propName;
propName = 0;
if (listenProp)
listenProp->addChangeListener(this, true);
}
private:
ref_ptr<Pass> pass;
int unit;
std::string* propName;
};
Texture* GBufferBuilder::build(Effect* effect, Pass* pass, const SGPropertyNode* prop,
const SGReaderWriterOptions* options)
{
int unit = 0;
const SGPropertyNode* pUnit = prop->getChild("unit");
if (pUnit) {
unit = pUnit->getValue<int>();
} else {
SG_LOG(SG_INPUT, SG_ALERT, "no texture unit");
}
const SGPropertyNode* nameProp = getEffectPropertyChild(effect, prop,
"name");
if (!nameProp)
return 0;
if (nameProp->nChildren() == 0) {
buffer = nameProp->getStringValue();
pass->setBufferUnit( unit, buffer );
} else {
std::string propName = getGlobalProperty(nameProp, options);
BufferNameChangeListener* listener = new BufferNameChangeListener(pass, unit, propName);
effect->addDeferredPropertyListener(listener);
}
// Return white for now. Would be overridden in Technique::ProcessDrawable
return StateAttributeFactory::instance()->getWhiteTexture();
}
namespace
{
TextureBuilder::Registrar installBuffer("buffer", new GBufferBuilder);
}
}

View File

@@ -27,7 +27,7 @@ class TextureBuilder : public EffectBuilder<osg::Texture>
{
public:
// Hack to force inclusion of TextureBuilder.cxx in library
static osg::Texture* buildFromType(Effect* effect, Pass* pass, const std::string& type,
static osg::Texture* buildFromType(Effect* effect, const std::string& type,
const SGPropertyNode*props,
const SGReaderWriterOptions* options);
};