#ifndef Pipeline_HPP #define Pipeline_HPP #include #include "PerPixelMesh.hpp" #include "Renderable.hpp" #include "Filters.hpp" #include "PipelineContext.hpp" #include "Shader.hpp" #include "../Common.hpp" //This class is the input to projectM's renderer // //Most implemenatations should implement PerPixel in order to get multi-threaded //dynamic PerPixel equations. If you MUST (ie Milkdrop compatability), you can use the //setStaticPerPixel function and fill in x_mesh and y_mesh yourself. class Pipeline { public: //static per pixel stuff bool staticPerPixel; int gx; int gy; float** x_mesh; float** y_mesh; //end static per pixel bool textureWrap; float screenDecay; //variables passed to pixel shaders float q[NUM_Q_VARIABLES]; //blur settings n=bias x=scale float blur1n; float blur2n; float blur3n; float blur1x; float blur2x; float blur3x; float blur1ed; Shader warpShader; Shader compositeShader; std::vector drawables; std::vector compositeDrawables; Pipeline(); void setStaticPerPixel(int gx, int gy); virtual ~Pipeline(); virtual PixelPoint PerPixel(PixelPoint p, const PerPixelContext context); }; #endif