54 #include <osg/Drawable>
55 #include <osg/Program>
56 #include <osg/Texture>
57 #include <osg/Texture2D>
70 class DtGlRenderTexture;
156 virtual osg::Object*
clone(
const osg::CopyOp& copyop)
const {
return new DtHdrDrawable(*
this,copyop); }
159 virtual void drawImplementation(osg::RenderInfo& renderInfo)
const;
163 virtual void setInputTexture(osg::Texture2D* inputTex);
166 virtual void setEnabled(
bool enabled );
167 virtual bool enabled();
170 virtual DtHdrOptions& options();
175 virtual void setLumOverride(
bool lumOverride);
180 virtual void setHdrPassthrough(
bool enable);
181 virtual bool hdrPassthrough();
184 virtual void cleanupGpuMemory();
188 virtual void initRenderTextures()
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 void colorModulationRedShift(
float* color,
float r,
float g,
float b,
int num);
235 virtual void colorModulation(
float* color,
float r,
float g,
float b,
int num);
236 virtual void modulateColor();
243 static const int theNumLumCapturePbos = 5;
249 osg::ref_ptr<osg::Program> myShaders[PROGSIZE];
259 float myStarModulation1st[16];
260 float myStarModulation2nd[16];
261 float myStarModulation3rd[16];
263 float myFilmicGhostModulation1st[16];
264 float myFilmicGhostModulation2nd[16];
265 float myCameraGhostModulation1st[16];
266 float myCameraGhostModulation2nd[16];
268 float myHoriModulation1st[16];
269 float myHoriModulation2nd[16];
270 float myHoriModulation3rd[16];
301 mutable GLuint myMutableLumPbos[theNumLumCapturePbos];