Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • qtrtik/age_maker
1 result
Show changes
Commits on Source (2)
...@@ -35,6 +35,8 @@ namespace mak { ...@@ -35,6 +35,8 @@ namespace mak {
} }
// Set object color // Set object color
// Figure out a way to change
//gfx::object_system()->get_material(object_folder)->set_uniform("color", color);
gfx::object_system()->get_uniforms(object_folder)->find<com::FileVec3>("material_ambient_color")->set(color); gfx::object_system()->get_uniforms(object_folder)->find<com::FileVec3>("material_ambient_color")->set(color);
} }
......
...@@ -2,16 +2,23 @@ ...@@ -2,16 +2,23 @@
#include <maker/index.hpp> #include <maker/index.hpp>
#include <maker/handlers/button_handler.hpp> #include <maker/handlers/button_handler.hpp>
#include <gfx/index.hpp> #include <gfx/index.hpp>
#include <gfx/ui/transform.hpp>
#include <gfx/text_shader.hpp>
#include <gfx/font.hpp>
#include <gfx/buffer_generators.hpp>
#include <osi/index.hpp> #include <osi/index.hpp>
#include <com/math_files.hpp> #include <com/math_files.hpp>
#include <utils/context_utils.hpp> #include <utils/context_utils.hpp>
#include <gfx/ui/transform.hpp>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <fstream> #include <fstream>
namespace mak { namespace mak {
typedef gfx::ShaderGraph::Node::DataType::ElementType ElementType;
typedef gfx::ShaderGraph Graph;
typedef gfx::ShaderGraph::Node::SlotDefinition Slot;
Presenter::Presenter() Presenter::Presenter()
: com::Runner{ self_name() } : com::Runner{ self_name() }
{} {}
...@@ -19,37 +26,76 @@ Presenter::Presenter() ...@@ -19,37 +26,76 @@ Presenter::Presenter()
Presenter::~Presenter() Presenter::~Presenter()
{} {}
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.);
}
)";
void Presenter::initialize() void Presenter::initialize()
{ {
osi::presenters()->push_back<com::Folder>("maker")->push_back<com::Link>(self_name() + ".link", this); osi::presenters()->push_back<com::Folder>("maker")->push_back<com::Link>(self_name() + ".link", this);
gfx::Shader* forward_uniform_color_shader = gfx::shader_generators()->insert_shader_forward_uniform_color(); gfx::Shader* text_shader = gfx::shader_system()->insert_shader<gfx::TextShader>({ "shaders" } , "default_text_shader", gfx::Shader::UNLIT,
default_vertex_shader, default_fragment_shader);
Graph* default_shader = dynamic_cast<Graph*>(gfx::shader_system()->default_shader());
//auto tex_coords = default_shader->insert<Graph::NodeVaryingTexcoord>();
//auto specular = default_shader->insert<Graph::TextureNode>(
//com::ContextPath{ "age", "texture", "font", "Consolas_16.png" });
//default_shader->connect(specular, Graph::TextureNode::inputs::tex_coord, tex_coords, 0);
gfx::Material* tex_material = gfx::material_system()->insert_material("box_material", text_shader, {"materials"});
gfx::Material* text_material = gfx::material_system()->insert_material("text_material", default_shader, {"materials"});
gfx::MonoFontProps font_props;
gfx::load_font_mono_props(std::filesystem::canonical(osi::data()->dir()) / "age"/ "font" / "Consolas_16.txt", font_props);
gfx::object_system()->push_frame_back( gfx::object_system()->push_frame_back(
gfx::object_system()->insert_object( gfx::object_system()->insert_object(
{ "grid" }, { "grid" },
gfx::shader_generators()->insert_shader_forward_varying_color(), tex_material,
gfx::buffer_generators()->insert_procedural_grid() gfx::buffer_generators()->insert_procedural_grid()
), ),
grid_frame() grid_frame()
); );
// --- BEGIN test_box --- // --- BEGIN test_box ---
com::Folder* const test_box = gfx::object_system()->insert_object( //com::Folder* const test_box = gfx::object_system()->insert_object(
{ "maker", "test_box" }, //{ "maker", "test_box" },
forward_uniform_color_shader, //tex_material,
gfx::buffer_generators()->insert_procedural_box_solid({ 0.5f, 0.5f, 0.5f } , "test_box", { "maker" }) //gfx::buffer_generators()->insert_procedural_box_solid({ 0.5f, 0.5f, 0.5f } , "test_box", { "maker" })
); //);
gfx::object_system()->push_frame_back( //gfx::object_system()->push_frame_back(
test_box , //test_box ,
root()->push_back<com::Folder>("test_box")->push_back<com::Frame>() //root()->push_back<com::Folder>("test_box")->push_back<com::Frame>()
); //);
gfx::object_system()->get_uniforms(test_box)->push_back<com::FileVec3>("material_ambient_color", vec3{ 0.75f, 0.75f, 0 }); //gfx::object_system()->get_uniforms(test_box)->push_back<com::FileVec3>("material_ambient_color", vec3{ 0.75f, 0.75f, 0 });
// The second instance //// The second instance
com::Frame* const frame2 = root()->push_back<com::Folder>("test_box_2")->push_back<com::Frame>(); //com::Frame* const frame2 = root()->push_back<com::Folder>("test_box_2")->push_back<com::Frame>();
frame2->move_origin({ 0.5f, 0, 1.5f }); //frame2->move_origin({ 0.5f, 0, 1.5f });
gfx::object_system()->push_frame_back(test_box, frame2); //gfx::object_system()->push_frame_back(test_box, frame2);
// --- END test_box --- // --- END test_box ---
...@@ -65,6 +111,7 @@ void Presenter::initialize() ...@@ -65,6 +111,7 @@ void Presenter::initialize()
// Create buffer // Create buffer
gfx::Buffer* ui_buffer = gfx::buffer_generators()->insert_procedural_rectangle({ 1.0f, 1.0f }, "ui_buffer", { "ui" }); gfx::Buffer* ui_buffer = gfx::buffer_generators()->insert_procedural_rectangle({ 1.0f, 1.0f }, "ui_buffer", { "ui" });
gfx::Buffer* ui_text_buffer = gfx::buffer_generators()->insert_procedural_text_rectangle("01234", font_props, 10000.0f);
// Set variables // Set variables
gfx::ui_system()->get_transform(ui_elem1)->set_position(vec2{ 0.03f, 0.02f}); gfx::ui_system()->get_transform(ui_elem1)->set_position(vec2{ 0.03f, 0.02f});
...@@ -74,8 +121,8 @@ void Presenter::initialize() ...@@ -74,8 +121,8 @@ void Presenter::initialize()
gfx::ui_system()->get_transform(ui_elem2)->set_scale(vec2{ 0.01f, 0.005f}); gfx::ui_system()->get_transform(ui_elem2)->set_scale(vec2{ 0.01f, 0.005f});
// Insert UI elements into object system // Insert UI elements into object system
gfx::ui_system()->insert_object(ui_elem1, ui_elem_folder1, forward_uniform_color_shader, ui_buffer); gfx::ui_system()->insert_object(ui_elem1, ui_elem_folder1, text_material, ui_buffer);
gfx::ui_system()->insert_object(ui_elem2, ui_elem_folder2, forward_uniform_color_shader, ui_buffer); gfx::ui_system()->insert_object(ui_elem2, ui_elem_folder2, text_material, ui_buffer);
// --- BEGIN directional light --- // --- BEGIN directional light ---
...@@ -95,10 +142,11 @@ void Presenter::initialize() ...@@ -95,10 +142,11 @@ void Presenter::initialize()
// END handlers // END handlers
gfx::object_system()->insert_light(test_box, dir_light); //gfx::object_system()->insert_light(test_box, dir_light);
gfx::light_system()->insert_shadow_caster(dir_light, test_box); //gfx::light_system()->insert_shadow_caster(dir_light, test_box);
print_tree(*gfx::root(), std::cout); print_tree(*gfx::root(), std::cout);
print_tree(*mak::root(), std::cout); print_tree(*mak::root(), std::cout);
} }
void Presenter::release() void Presenter::release()
...@@ -114,7 +162,7 @@ void Presenter::release() ...@@ -114,7 +162,7 @@ void Presenter::release()
void Presenter::next_round() void Presenter::next_round()
{ {
gfx::renderer()->clear_render_buffers(); gfx::renderer()->clear_render_buffers();
gfx::renderer()->present_collection(gfx::object_system()->objects()); gfx::renderer()->present_collection(gfx::object_system()->objects(), gfx::Renderer::pipeline::FORWARD);
} }
} }