15 #include <osg/Texture>
16 #include <osg/Program>
18 #include <osg/Texture2D>
23 #include <boost/unordered_map.hpp>
41 virtual void operator()(osg::Node* node, osg::NodeVisitor* nv);
79 virtual void setFragmentShaderSource(
const char *source);
86 virtual void setVertexShaderSource(
const char *source);
93 virtual void setFragmentShaderFile(
const std::string& fileName);
100 virtual void setVertexShaderFile(
const std::string& fileName);
107 virtual void setInputTexture(
const DtChannel *channel, osg::Texture2D* texture);
110 virtual void update(
DtChannel *channel) = 0;
115 virtual osg::Texture2D* outputTexture();
120 virtual void setIsFinalEffect(
const DtChannel *channel,
bool final);
124 virtual osg::Camera* cameraForChannel(
const DtChannel *channel);
126 virtual void releaseGLObjects();
129 virtual bool hasEffect(std::string effect);
132 virtual bool effectEnabled(std::string effect);
135 virtual bool anyEffectEnabled();
141 virtual bool enableEffect(std::string effect);
142 virtual bool disableEffect(std::string effect);
146 virtual std::list<std::string> supportedEffects();
150 virtual bool handles2D()
const;
153 virtual const std::string& type()
const;
157 virtual void enablePostProcessor();
158 virtual void disablePostProcessor();
162 virtual bool postProcessorEnabled()
const;
167 typedef boost::unordered_map<std::string, bool>
EffectMap;
169 virtual bool effectItrEnabled(EffectMap::iterator &effect);
171 virtual void initialize();
176 virtual void addEffect(std::string effect);
179 virtual void setEnablePostProcessor(
bool enabled);
189 typedef std::map<const DtChannel*, osg::ref_ptr<osg::Camera> >
CameraMap;