blob: 56971655f3b084462ca0ec3643171d764425cc58 [file] [log] [blame]
#ifndef Pipeline_HPP
#define Pipeline_HPP
#include <vector>
#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<RenderItem*> drawables;
std::vector<RenderItem*> compositeDrawables;
Pipeline();
void setStaticPerPixel(int gx, int gy);
virtual ~Pipeline();
virtual PixelPoint PerPixel(PixelPoint p, const PerPixelContext context);
};
#endif