X-Git-Url: http://git.tdb.fi/?p=libs%2Fdemoscene.git;a=blobdiff_plain;f=source%2Fvignette.h;fp=source%2Fvignette.h;h=0cad6bfc5d9cfc33ef940856effeb51149ba3671;hp=0000000000000000000000000000000000000000;hb=1e3954a988c6d6d946260019f25a4ad3262e01c4;hpb=b8e89ca72ec17461c6d91bf107a7e4b08cf9eff1 diff --git a/source/vignette.h b/source/vignette.h new file mode 100644 index 0000000..0cad6bf --- /dev/null +++ b/source/vignette.h @@ -0,0 +1,52 @@ +#ifndef MSP_DEMOSCENE_VIGNETTE_H_ +#define MSP_DEMOSCENE_VIGNETTE_H_ + +#include +#include +#include + +namespace Msp { +namespace DemoScene { + +class Vignette: public Msp::GL::PostProcessor +{ +public: + struct Template: PostProcessor::Template + { + class Loader: public Msp::DataFile::DerivedObjectLoader + { + public: + Loader(Template &); + }; + + float pupil; + float aperture; + float radius; + float darkening; + + Template(); + + virtual Vignette *create(unsigned, unsigned) const; + }; + +private: + const Msp::GL::Mesh &mesh; + const Msp::GL::Program &shprog; + Msp::GL::ProgramData shdata; + +public: + Vignette(float); + + void set_optical(float, float); + void set_natural(float, float); +private: + void update_shdata(); + +public: + virtual void render(Msp::GL::Renderer &, const Msp::GL::Texture2D &, const Msp::GL::Texture2D &); +}; + +} // namespace DemoScene +} // namespace Msp + +#endif