]> git.sesse.net Git - movit/blobdiff - effect.h
Use the ResourcePool to allocate RTT textures in EffectChain.
[movit] / effect.h
index ecdd95a455320ed9625e170752b39967a1495c4c..a7d426c723981bc11e10006fa9d44d6b3f5d8db5 100644 (file)
--- a/effect.h
+++ b/effect.h
@@ -38,8 +38,8 @@ struct RGBTriplet {
 };
 
 // Can alias on a float[4].
-struct RGBATriplet {
-       RGBATriplet(float r, float g, float b, float a)
+struct RGBATuple {
+       RGBATuple(float r, float g, float b, float a)
                : r(r), g(g), b(b), a(a) {}
 
        float r, g, b, a;
@@ -196,6 +196,12 @@ public:
        // if you have several, they will be INPUT1(), INPUT2(), and so on.
        virtual unsigned num_inputs() const { return 1; }
 
+       // Inform the effect that it has been just added to the EffectChain.
+       // The primary use for this is to store the ResourcePool uesd by
+       // the chain; for modifications to it, rewrite_graph() below
+       // is probably a better fit.
+       virtual void inform_added(EffectChain *chain) {}
+
        // Let the effect rewrite the effect chain as it sees fit.
        // Most effects won't need to do this, but this is very useful
        // if you have an effect that consists of multiple sub-effects
@@ -257,31 +263,12 @@ protected:
        void register_vec3(const std::string &key, float *values);
        void register_vec4(const std::string &key, float *values);
 
-       // This will register a 1D texture, which will be bound to a sampler
-       // when your GLSL code runs (so it corresponds 1:1 to a sampler2D uniform
-       // in GLSL).
-       //
-       // Note that if you change the contents of <values>, you will need to
-       // call invalidate_1d_texture() to have the picture re-uploaded on the
-       // next frame. This is in contrast to all the other parameters, which are
-       // set anew every frame.
-       void register_1d_texture(const std::string &key, float *values, size_t size);
-       void invalidate_1d_texture(const std::string &key);
-       
 private:
-       struct Texture1D {
-               float *values;
-               size_t size;
-               bool needs_update;
-               GLuint texture_num;
-       };
-
        std::map<std::string, int *> params_int;
        std::map<std::string, float *> params_float;
        std::map<std::string, float *> params_vec2;
        std::map<std::string, float *> params_vec3;
        std::map<std::string, float *> params_vec4;
-       std::map<std::string, Texture1D> params_tex_1d;
 };
 
 #endif // !defined(_MOVIT_EFFECT_H)