X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect.h;h=9d95705f6a66ce344a54bd18eb83154018d85c35;hp=a7d426c723981bc11e10006fa9d44d6b3f5d8db5;hb=56ff92c5828a143595eeb7a1906418cc30668f9d;hpb=ecab6f3b08bc0a995dd96542758031f1ba2c6a27 diff --git a/effect.h b/effect.h index a7d426c..9d95705 100644 --- a/effect.h +++ b/effect.h @@ -10,7 +10,7 @@ // effect instance; use the macro PREFIX() around your identifiers to // automatically prepend that prefix. -#include +#include #include #include #include @@ -18,6 +18,8 @@ #include "defs.h" +namespace movit { + class EffectChain; class Node; @@ -165,6 +167,15 @@ public: // next effect set needs_texture_bounce()). virtual bool changes_output_size() const { return false; } + // Whether this effect is effectively sampling from a a single texture. + // If so, it will override needs_texture_bounce(); however, there are also + // two demands it needs to fulfill: + // + // 1. It needs to be an Input, ie. num_inputs() == 0. + // 2. It needs to allocate exactly one sampler in set_gl_state(), + // and allow dependent effects to change that sampler state. + virtual bool is_single_texture() const { return false; } + // If changes_output_size() is true, you must implement this to tell // the framework what output size you want. Also, you can set a // virtual width/height, which is the size the next effect (if any) @@ -271,4 +282,6 @@ private: std::map params_vec4; }; +} // namespace movit + #endif // !defined(_MOVIT_EFFECT_H)