X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=glow_effect.h;h=2a2af16dd3abbd7d1bded97de0aaad88475b63bf;hp=04b48f9aa165e55ab7ba139dba36c883fb492f9b;hb=ddf71f853e64c3912eed4ab98bfe7503826ce8e1;hpb=e655afd53f2e56938bd4e7f72640eff56ef4a1ee diff --git a/glow_effect.h b/glow_effect.h index 04b48f9..2a2af16 100644 --- a/glow_effect.h +++ b/glow_effect.h @@ -1,12 +1,22 @@ -#ifndef _GLOW_EFFECT_H -#define _GLOW_EFFECT_H 1 +#ifndef _MOVIT_GLOW_EFFECT_H +#define _MOVIT_GLOW_EFFECT_H 1 -// Glow: Simply add a blurred version of the image to itself. +// Glow: Cut out the highlights of the image (everything above a certain threshold), +// blur them, and overlay them onto the original image. + +#include +#include +#include #include "effect.h" +namespace movit { + class BlurEffect; +class EffectChain; +class HighlightCutoffEffect; class MixEffect; +class Node; class GlowEffect : public Effect { public: @@ -27,7 +37,26 @@ public: private: BlurEffect *blur; + HighlightCutoffEffect *cutoff; MixEffect *mix; }; -#endif // !defined(_GLOW_EFFECT_H) +// An effect that cuts out only the highlights of an image; +// anything at the cutoff or below is set to 0.0, and then all other pixels +// get the cutoff subtracted. Used only as part of GlowEffect. + +class HighlightCutoffEffect : public Effect { +public: + HighlightCutoffEffect(); + virtual std::string effect_type_id() const { return "HighlightCutoffEffect"; } + std::string output_fragment_shader(); + + virtual AlphaHandling alpha_handling() const { return INPUT_PREMULTIPLIED_ALPHA_KEEP_BLANK; } + +private: + float cutoff; +}; + +} // namespace movit + +#endif // !defined(_MOVIT_GLOW_EFFECT_H)