X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=glow_effect.h;h=abadb84a4cb332a10d45216d73a2fe6bfa2edc6c;hp=04b48f9aa165e55ab7ba139dba36c883fb492f9b;hb=7af4d1b54ba141fdb74cd13ddc6110708855d157;hpb=e655afd53f2e56938bd4e7f72640eff56ef4a1ee diff --git a/glow_effect.h b/glow_effect.h index 04b48f9..abadb84 100644 --- a/glow_effect.h +++ b/glow_effect.h @@ -1,12 +1,14 @@ #ifndef _GLOW_EFFECT_H #define _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 "effect.h" class BlurEffect; class MixEffect; +class HighlightCutoffEffect; class GlowEffect : public Effect { public: @@ -27,7 +29,24 @@ public: private: BlurEffect *blur; + HighlightCutoffEffect *cutoff; MixEffect *mix; }; +// 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; +}; + #endif // !defined(_GLOW_EFFECT_H)