diff --git a/src/presenter.cpp b/src/presenter.cpp index bd534f6ca98f58f6d1d50b17eb873ec5071b33f6..b782ebdc2bc6d16af840692526c341a967ca8b1c 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" });