2015-11-02 19:14:35 +00:00
|
|
|
#ifndef OVERLAYRASTERIZER_H
|
|
|
|
#define OVERLAYRASTERIZER_H
|
|
|
|
|
|
|
|
#include "software_global.h"
|
|
|
|
|
|
|
|
#include "Rasterizer.h"
|
|
|
|
|
|
|
|
namespace paysages {
|
|
|
|
namespace software {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Base class for overlay rasterizer.
|
|
|
|
*
|
|
|
|
* It's a rasterizer that puts a single quad in front of camera, in order to apply a shader on each pixel.
|
|
|
|
*/
|
2015-11-09 21:38:00 +00:00
|
|
|
class SOFTWARESHARED_EXPORT OverlayRasterizer : public Rasterizer {
|
|
|
|
public:
|
2015-11-02 19:14:35 +00:00
|
|
|
OverlayRasterizer(SoftwareRenderer *renderer, RenderProgress *progress);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Abstract method to implement to shade each pixel.
|
|
|
|
*/
|
|
|
|
virtual Color processPixel(int x, int y, double relx, double rely) const = 0;
|
|
|
|
|
2015-11-09 21:38:00 +00:00
|
|
|
private:
|
2015-11-02 19:14:35 +00:00
|
|
|
virtual int prepareRasterization();
|
|
|
|
virtual void rasterizeToCanvas(CanvasPortion *canvas);
|
|
|
|
virtual Color shadeFragment(const CanvasFragment &fragment, const CanvasFragment *previous) const;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // OVERLAYRASTERIZER_H
|