X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect.h;h=3585e2df9a168a0439d7da808471dd0871dee102;hp=623915b8cd5fea8e4d3ed90fe70679d55ee7d336;hb=0b2a4dc36bc5d5ca31797b47d99ee8ade243f86c;hpb=a592c55caca0fb654bad4ec43b84c46abcee21c2 diff --git a/effect.h b/effect.h index 623915b..3585e2d 100644 --- a/effect.h +++ b/effect.h @@ -4,6 +4,8 @@ #include #include +#include + // Can alias on a float[3]. struct RGBTriplet { RGBTriplet(float r, float g, float b) @@ -12,14 +14,22 @@ struct RGBTriplet { float r, g, b; }; +// Convenience functions that deal with prepending the prefix.. +void set_uniform_float(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, float value); +void set_uniform_vec3(GLhandleARB glsl_program_num, const std::string &prefix, const std::string &key, const float *values); + class Effect { public: virtual bool needs_linear_light() { return true; } virtual bool needs_srgb_primaries() { return true; } virtual bool needs_many_samples() { return false; } virtual bool needs_mipmaps() { return false; } + + virtual std::string output_convenience_uniforms(); virtual std::string output_glsl() = 0; + virtual void set_uniforms(GLhandleARB glsl_program_num, const std::string& prefix); + // Neither of these take ownership. bool set_int(const std::string&, int value); bool set_float(const std::string &key, float value);