#ifndef PW_VISUAL_PIPELINE_HPP
#define PW_VISUAL_PIPELINE_HPP

#include <pw/core/size.hpp>
#include <pw/core/matrix.hpp>
#include <pw/core/geometry.hpp>
#include <pw/core/color.hpp>

#include <pw/visual/shader.hpp>
#include <pw/visual/renderer.hpp>


#include <map>

namespace pw {




class pipeline {

public:
	pipeline();
    ~pipeline();

    void draw();

	bool create(size s);

protected:
	struct impl;
	std::unique_ptr<impl> _impl;

};



struct render_pass {

    void submit(const geometry& g,
                const matrix4x4& model_mat,
                const matrix4x4& view_mat,
                const matrix4x4& projection_mat);

    shader _shader;
    renderer _renderer;
};


}

#endif
