X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.h;h=67955786c9e2efd9a3bfed69021f3d7d4efb05a2;hp=5b6996487c3244a8b7ddb380a840ad8e72c0d730;hb=9dcbd93164611ea111cc29519c18193d4f571ac1;hpb=e1d0cc9aecf612f61d048fe0e4941c17d8f8f2f2 diff --git a/effect_chain.h b/effect_chain.h index 5b69964..6795578 100644 --- a/effect_chain.h +++ b/effect_chain.h @@ -5,7 +5,6 @@ #include #include "effect.h" -#include "effect_id.h" #include "image_format.h" #include "input.h" @@ -16,24 +15,27 @@ public: // User API: // input, effects, output, finalize need to come in that specific order. - Input *add_input(const ImageFormat &format); + // EffectChain takes ownership of the given input. + // input is returned back for convenience. + Input *add_input(Input *input); - // The returned pointer is owned by EffectChain. - Effect *add_effect(EffectId effect) { + // EffectChain takes ownership of the given effect. + // effect is returned back for convenience. + Effect *add_effect(Effect *effect) { return add_effect(effect, last_added_effect()); } - Effect *add_effect(EffectId effect, Effect *input) { + Effect *add_effect(Effect *effect, Effect *input) { std::vector inputs; inputs.push_back(input); return add_effect(effect, inputs); } - Effect *add_effect(EffectId effect, Effect *input1, Effect *input2) { + Effect *add_effect(Effect *effect, Effect *input1, Effect *input2) { std::vector inputs; inputs.push_back(input1); inputs.push_back(input2); return add_effect(effect, inputs); } - Effect *add_effect(EffectId effect, const std::vector &inputs); + Effect *add_effect(Effect *effect, const std::vector &inputs); // Similar to add_effect, but: // @@ -67,7 +69,9 @@ private: std::vector effects; // In order. }; - void set_use_srgb_texture_format(Effect *effect); + void find_all_nonlinear_inputs(Effect *effect, + std::vector *nonlinear_inputs, + std::vector *intermediates); Effect *normalize_to_linear_gamma(Effect *input); Effect *normalize_to_srgb(Effect *input); @@ -78,7 +82,7 @@ private: // Create all GLSL programs needed to compute the given effect, and all outputs // that depends on it (whenever possible). - void construct_glsl_programs(Effect *start, std::set *completed_effects); + void construct_glsl_programs(Effect *output); unsigned width, height; ImageFormat output_format;