53 #include <osg/Drawable>
54 #include <osg/Program>
55 #include <osg/Texture>
56 #include <osg/Texture2D>
69 class DtRenderTexture;
155 virtual osg::Object*
clone(
const osg::CopyOp& copyop)
const {
return new DtHdrDrawable(*
this,copyop); }
158 virtual void drawImplementation(osg::RenderInfo& renderInfo)
const;
162 virtual void setInputTexture(osg::Texture2D* inputTex);
165 virtual void setEnabled(
bool enabled );
166 virtual bool enabled();
169 virtual DtHdrOptions& options();
174 virtual void setLumOverride(
bool lumOverride);
179 virtual void setHdrPassthrough(
bool enable);
180 virtual bool hdrPassthrough();
185 virtual void initRenderTextures()
const;
188 virtual void drawTexturedQuad()
const;
202 osg::State *state)
const;
206 int blurWidth, osg::State *state)
const;
209 virtual void getBufferPyramidSize(BUFFER_PYRAMID
level,
int* w,
int* h)
const;
212 virtual void genStarStreak(
int streak,
float dir,
float length, osg::State *state)
const;
215 virtual void genGhostImage(
const float* ghost_modulation1st,
const float* ghost_modulation2nd, osg::State *state)
const;
218 virtual void composeEffect(osg::State *state)
const;
222 virtual void toneMappingPass(osg::State *state)
const;
225 virtual void calculateLuminance(osg::State *state)
const;
228 virtual void initBlurCode();
231 virtual void initShaders();
234 virtual osg::Program *createProgram(
const std::string& name);
237 virtual void colorModulationRedShift(
float* color,
float r,
float g,
float b,
int num);
238 virtual void colorModulation(
float* color,
float r,
float g,
float b,
int num);
239 virtual void modulateColor();
245 static const int theNumLumCapturePbos = 5;
251 osg::ref_ptr<osg::Program> myShaders[PROGSIZE];
261 float myStarModulation1st[16];
262 float myStarModulation2nd[16];
263 float myStarModulation3rd[16];
265 float myFilmicGhostModulation1st[16];
266 float myFilmicGhostModulation2nd[16];
267 float myCameraGhostModulation1st[16];
268 float myCameraGhostModulation2nd[16];
270 float myHoriModulation1st[16];
271 float myHoriModulation2nd[16];
272 float myHoriModulation3rd[16];
303 mutable GLuint myMutableLumPbos[theNumLumCapturePbos];