aboutsummaryrefslogtreecommitdiff
path: root/src/renderer.hpp
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2026-01-17 00:06:31 +0100
committervimene <vincent.menegaux@gmail.com>2026-01-17 00:06:31 +0100
commit0d10b77f77459333c5549711334f417623ab1f3e (patch)
tree6584ab5d09fa72c93a70ac916bfdf401c7617157 /src/renderer.hpp
parent175c71637b6bea6dcdd0faf3d614339983809bb1 (diff)
downloadengine-0d10b77f77459333c5549711334f417623ab1f3e.tar.gz
improved software shaders
- unified terminal and graphical software renderer shaders - added vertex shaders for software renderers - removed VertexData - moved shaders from frame buffers to their own class - added FrameBufferConcept and ShadersConcept
Diffstat (limited to 'src/renderer.hpp')
-rw-r--r--src/renderer.hpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/renderer.hpp b/src/renderer.hpp
index 6725f70..3880d04 100644
--- a/src/renderer.hpp
+++ b/src/renderer.hpp
@@ -2,22 +2,29 @@
#define RENDERER_HPP
#include <memory>
+#include <type_traits>
#include "math/vector.hpp"
#include "o3d/tri.hpp"
#include "o3d/tri_deriv.hpp"
+#include "o3d/mesh.hpp"
+#include "fb/fb.hpp"
+#include "shaders/shaders.hpp"
namespace engine {
-template<typename FrameBuffer>
-class Renderer {
+template<fb::FrameBufferConcept FrameBuffer, shaders::ShadersConcept Shaders>
+class Renderer
+{
public:
FrameBuffer fb;
+ Shaders shaders;
- Renderer(FrameBuffer&& fb);
+ Renderer(FrameBuffer&& fb, Shaders&& shaders);
void resize(unsigned int w, unsigned int h);
void clear();
void draw_triangle(const o3d::Triangle& triangle);
+ void draw_mesh(const o3d::Mesh& mesh);
constexpr unsigned int width() const & {
return fb.width();