From d41d29ac5e5c0f0ec28a08ec9f4622b82d73cb4f Mon Sep 17 00:00:00 2001
From: Petr Babic <pbabic@redhat.com>
Date: Sat, 30 Mar 2024 22:42:22 +0100
Subject: [PATCH] add basic TextShader test

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

diff --git a/src/presenter.cpp b/src/presenter.cpp
index ac30734..bd534f6 100644
--- a/src/presenter.cpp
+++ b/src/presenter.cpp
@@ -1,3 +1,6 @@
+#include "gfx/text_shader.hpp"
+#include "utils/context_utils.hpp"
+
 #include <com/math_files.hpp>
 #include <gfx/index.hpp>
 #include <maker/index.hpp>
@@ -20,6 +23,51 @@ static com::Folder *generate_grid() {
     return grid;
 }
 
+static const std::string default_vertex_shader = R"(
+#version 330 core
+
+layout(location = 0) in vec3 vertex_position;
+uniform mat4 model;
+uniform mat4 view;
+uniform mat4 projection;
+
+void main()
+{
+    gl_Position = projection * view * model * vec4(vertex_position, 1.);
+}
+)";
+
+static const std::string default_fragment_shader = R"(
+#version 330 core
+
+out vec4 fragColor;
+
+void main()
+{
+    fragColor = vec4(0.2, 0.8, 1., 1.);
+}
+)";
+
+static com::Folder *default_text_material_box() {
+    auto material = gfx::material_system()->insert_material(
+        "default-text-material",
+        gfx::shader_system()->insert_shader<gfx::TextShader>(
+            { "shaders" }, "default-text-shader",
+            default_vertex_shader, default_fragment_shader
+        ),
+        {"materials"}
+    );
+
+    auto box = gfx::object_system()->insert_object(
+        { "default-text-material-box" }, material,
+        gfx::buffer_generators()->insert_procedural_box_solid({1, 1, 1}, "default-text-material-box", { "maker" }));
+    auto frame = root()->push_back<com::Folder>("default-text-material-box")->push_back<com::Frame>();
+    frame->set_origin({4, 4, 4});
+    gfx::object_system()->push_frame_back(box, frame);
+
+    return box;
+}
+
 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