X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=glow_effect.h;h=91106e03b08927ab3498d784f3611b05e36aafa8;hp=04b48f9aa165e55ab7ba139dba36c883fb492f9b;hb=6602e2b9d5e5a44c0f075fe083ecc26feb10c173;hpb=e655afd53f2e56938bd4e7f72640eff56ef4a1ee diff --git a/glow_effect.h b/glow_effect.h index 04b48f9..91106e0 100644 --- a/glow_effect.h +++ b/glow_effect.h @@ -1,12 +1,20 @@ -#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" class BlurEffect; +class EffectChain; +class HighlightCutoffEffect; class MixEffect; +class Node; class GlowEffect : public Effect { public: @@ -27,7 +35,24 @@ 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; +}; + +#endif // !defined(_MOVIT_GLOW_EFFECT_H)