aboutsummaryrefslogtreecommitdiff
path: root/src/shaders/shaders.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/shaders/shaders.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/shaders/shaders.hpp')
-rw-r--r--src/shaders/shaders.hpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/shaders/shaders.hpp b/src/shaders/shaders.hpp
new file mode 100644
index 0000000..d5e1c3a
--- /dev/null
+++ b/src/shaders/shaders.hpp
@@ -0,0 +1,24 @@
+#ifndef SHADERS_SHADERS_HPP
+#define SHADERS_SHADERS_HPP
+
+#include <concepts>
+#include "math/vector.hpp"
+#include "o3d/vertex.hpp"
+#include "fb/fb.hpp"
+
+namespace engine::shaders {
+
+template<typename T>
+concept ShadersConcept =
+ requires {
+ typename T::fb_type;
+ requires engine::fb::FrameBufferConcept<typename T::fb_type>;
+ } &&
+ requires (T shaders, int x, int y, engine::math::Vector3 v3_1, engine::math::Vector3 v3_2, engine::math::Vector2 v2) {
+ { shaders.vertex(v3_1, v3_2, v2) } -> std::same_as<engine::o3d::Vertex>;
+ { shaders.fragment(x, y, v3_1, v3_2, v2) } -> std::same_as<engine::math::Vector4>;
+ };
+
+}
+
+#endif // SHADERS_SHADERS_HPP