From 8ac9e28d5595f00f6ec060f9f44cde8ed410f224 Mon Sep 17 00:00:00 2001
From: Petr Babic <pbabic@redhat.com>
Date: Sun, 31 Mar 2024 11:51:36 +0200
Subject: [PATCH] add test rectangle generator

Signed-off-by: Petr Babic <pbabic@redhat.com>
---
 src/presenter.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/src/presenter.cpp b/src/presenter.cpp
index bd534f6..b782ebd 100644
--- a/src/presenter.cpp
+++ b/src/presenter.cpp
@@ -68,6 +68,48 @@ static com::Folder *default_text_material_box() {
     return box;
 }
 
+static const std::string rectangle_vertex_shader = R"(
+#version 330 core
+
+layout(location = 0) in vec3 vertex_position;
+layout(location = 3) in vec2 a_tex_coords;
+
+out vec2 tex_coords;
+
+void main()
+{
+    tex_coords = a_tex_coords;
+    gl_Position = vec4(vertex_position, 1.);
+}
+)";
+
+static const std::string rectangle_fragment_shader = R"(
+#version 330 core
+
+in vec2 tex_coords;
+
+out vec4 fragColor;
+
+void main()
+{
+    fragColor = vec4(tex_coords, 1., 1.);
+}
+)";
+
+static com::Folder *generate_rectangle() {
+    auto shader = gfx::shader_system()->insert_shader<gfx::TextShader>(
+        {"test-rectangle"}, "test-rectangle-shader", gfx::Shader::UNLIT, rectangle_vertex_shader, rectangle_fragment_shader);
+
+    auto material = gfx::material_system()->insert_material("test-rectangle-material", shader, {"test-rectangle"});
+
+    auto rect = gfx::object_system()->insert_object(
+            { "test-rectangle" }, material,
+            gfx::buffer_generators()->insert_procedural_rectangle({ 1, 1 }, "test-rectangle", { "maker" }));
+    gfx::object_system()->push_frame_back(rect, root()->push_back<com::Folder>("test-rectangle")->push_back<com::Frame>());
+
+    return rect;
+}
+
 static com::Folder *generate_box(vec3 position, vec3 half_sizes_along_axes) {
     auto shader = gfx::shader_system()->insert_shader("box_shader", gfx::Shader::Pipeline::FORWARD, gfx::Shader::LIT,
                                                       { "shaders" });
-- 
GitLab