X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Feffect.h;h=e77b4cf5c8b110f1ca42a6dc35c2434629534ea3;hb=bdcae47bf2f4e49d2d9e4ba15e6f17171ce5fa0c;hp=bc9e19ec818f2a392889866bdf36428c7c00024b;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/effects/effect.h b/source/effects/effect.h index bc9e19ec..e77b4cf5 100644 --- a/source/effects/effect.h +++ b/source/effects/effect.h @@ -2,44 +2,67 @@ #define MSP_GL_EFFECT_H_ #include -#include +#include #include "renderable.h" namespace Msp { namespace GL { -class Sampler; - /** -Effects are used to wrap other renderables and give them additional visual -properties. An Effect's render method should set up the necessary state, call -the wrapped Renderable's render method, and clean up after itself. +Base class for visual effects. + +Effects wrap other renderables and provide additional textures or uniform +values which can be used by shaders to modify the appearance of the content +renderable. Some material properties require certain Effects to be present in +order to function properly. + +If an Effect subclass needs to do any sideband rendering to prepare for a +frame, that should be done in setup_frame(). The render() function should only +set up the necessary state and call the content renderable's render() function. */ class Effect: public Renderable { -protected: - Renderable &renderable; - std::set enabled_passes; +public: + /** + Holds the parameters for an Effect. Used with SequenceTemplate. + */ + struct Template + { + class Loader: public DataFile::CollectionObjectLoader