X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=diffusion_effect.cpp;h=145eaf695860608040afec87bc0120eb08188c6d;hp=8d2903bb8e17e08e571a13da8e47a1789fa8fbd9;hb=refs%2Fheads%2Fepoxy;hpb=1e2d23133575fc1cfeb14652e4b383883bf24512 diff --git a/diffusion_effect.cpp b/diffusion_effect.cpp index 8d2903b..145eaf6 100644 --- a/diffusion_effect.cpp +++ b/diffusion_effect.cpp @@ -1,28 +1,37 @@ -#include #include +#include -#include "diffusion_effect.h" #include "blur_effect.h" +#include "diffusion_effect.h" #include "effect_chain.h" #include "util.h" +using namespace std; + +namespace movit { + DiffusionEffect::DiffusionEffect() : blur(new BlurEffect), overlay_matte(new OverlayMatteEffect) { } -void DiffusionEffect::add_self_to_effect_chain(EffectChain *chain, const std::vector &inputs) { - assert(inputs.size() == 1); - blur->add_self_to_effect_chain(chain, inputs); +void DiffusionEffect::rewrite_graph(EffectChain *graph, Node *self) +{ + assert(self->incoming_links.size() == 1); + Node *input = self->incoming_links[0]; + + Node *blur_node = graph->add_node(blur); + Node *overlay_matte_node = graph->add_node(overlay_matte); + graph->replace_receiver(self, overlay_matte_node); + graph->connect_nodes(input, blur_node); + graph->connect_nodes(blur_node, overlay_matte_node); + graph->replace_sender(self, overlay_matte_node); - std::vector overlay_matte_inputs; - overlay_matte_inputs.push_back(inputs[0]); - overlay_matte_inputs.push_back(chain->last_added_effect()); // FIXME - overlay_matte->add_self_to_effect_chain(chain, overlay_matte_inputs); + self->disabled = true; } -bool DiffusionEffect::set_float(const std::string &key, float value) { +bool DiffusionEffect::set_float(const string &key, float value) { if (key == "blurred_mix_amount") { return overlay_matte->set_float(key, value); } @@ -35,7 +44,9 @@ OverlayMatteEffect::OverlayMatteEffect() register_float("blurred_mix_amount", &blurred_mix_amount); } -std::string OverlayMatteEffect::output_fragment_shader() +string OverlayMatteEffect::output_fragment_shader() { return read_file("overlay_matte_effect.frag"); } + +} // namespace movit