Tatooine
rectilinear_grid_vertex_property_renderer.h
Go to the documentation of this file.
1#ifndef TATOOINE_FLOWEXPLORER_NODES_RECTILINEAR_GRID_VERTEX_PROPERTY_RENDERER_H
2#define TATOOINE_FLOWEXPLORER_NODES_RECTILINEAR_GRID_VERTEX_PROPERTY_RENDERER_H
3//==============================================================================
9//==============================================================================
11//==============================================================================
13 : renderable<rectilinear_grid_vertex_property_renderer> {
15 private:
17 add_stage<gl::vertexshader>(gl::shadersource{
18 "#version 330\n"
19 "uniform mat4 projection;\n"
20 "uniform mat4 modelview;\n"
21 "layout(location = 0) in vec3 position;\n"
22 "void main() {\n"
23 " gl_Position = projection * modelview * vec4(position, 1);\n"
24 "}\n"});
25 add_stage<gl::fragmentshader>(gl::shadersource{
26 "#version 330\n"
27 "layout(location = 0) out vec4 frag_out;\n"
28 "void main() {\n"
29 " frag_out = vec4(0,0,0,1);\n"
30 "}\n"});
31 create();
32 }
33
34 public:
35 static auto get() -> auto& {
36 static shader_t shader{};
37 return shader;
38 }
39 auto set_modelview_matrix(const tatooine::mat4f& modelview) -> void {
40 set_uniform_mat4("modelview", modelview.data());
41 }
42 auto set_projection_matrix(const tatooine::mat4f& projmat) -> void {
43 set_uniform_mat4("projection", projmat.data());
44 }
45 };
46 //----------------------------------------------------------------------------
49 // gl::tex2r32f m_data;
50 //gl::tex1rgb32f m_color_scale;
51 //----------------------------------------------------------------------------
53 : renderable<rectilinear_grid_vertex_property_renderer>{"Vertex Property Renderer", s},
54 m_rect_grid_in{&this->template insert_input_pin<nonuniform_rectilinear_grid2>("Grid")}
55 //, m_color_scale{color_scales::viridis{}.to_gpu_tex()}
56 {
58 }
59 //----------------------------------------------------------------------------
60 auto render(mat4f const& P, mat4f const& V) -> void override {
63 auto& shader = shader_t::get();
64 shader.bind();
65 shader.set_projection_matrix(P);
66 shader.set_modelview_matrix(V);
67 m_gpu_geometry.draw_triangles();
68 }
69 }
70 //----------------------------------------------------------------------------
71 auto is_transparent() const -> bool override { return false; }
72 //----------------------------------------------------------------------------
73 auto update_vbo_data() -> void {
75 {
76 auto vbomap = m_gpu_geometry.vertexbuffer().map();
77 vbomap[0] =
78 vec3f{float(grid.front<0>()), float(grid.front<1>()), float(0)};
79 vbomap[1] =
80 vec3f{float(grid.back<0>()), float(grid.front<1>()), float(0)};
81 vbomap[2] =
82 vec3f{float(grid.front<1>()), float(grid.back<1>()), float(0)};
83 vbomap[3] = vec3f{float(grid.back<0>()), float(grid.back<1>()), float(0)};
84 }
85 }
86 //----------------------------------------------------------------------------
87 auto create_indexed_data() -> void {
88 m_gpu_geometry.vertexbuffer().resize(4);
89 m_gpu_geometry.indexbuffer().resize(6);
90 m_gpu_geometry.indexbuffer() = {0, 1, 3, 2, 1, 3};
91 }
92};
93//==============================================================================
94} // namespace tatooine::flowexplorer::nodes
95//==============================================================================
98#endif
Definition: indexeddata.h:13
Definition: shader.h:24
DLL_API void create()
DLL_API void set_uniform_mat4(const std::string &, GLfloat const *)
Definition: grid_edge.h:16
Definition: abcflow.h:7
NonuniformRectilinearGrid< 2 > nonuniform_rectilinear_grid2
Definition: rectilinear_grid.h:1925
TATOOINE_FLOWEXPLORER_REGISTER_RENDERABLE(tatooine::flowexplorer::nodes::rectilinear_grid_vertex_property_renderer)
Definition: rectilinear_grid_vertex_property_renderer.h:14
shader_t()
Definition: rectilinear_grid_vertex_property_renderer.h:16
auto set_modelview_matrix(const tatooine::mat4f &modelview) -> void
Definition: rectilinear_grid_vertex_property_renderer.h:39
static auto get() -> auto &
Definition: rectilinear_grid_vertex_property_renderer.h:35
auto set_projection_matrix(const tatooine::mat4f &projmat) -> void
Definition: rectilinear_grid_vertex_property_renderer.h:42
Definition: rectilinear_grid_vertex_property_renderer.h:13
auto is_transparent() const -> bool override
Definition: rectilinear_grid_vertex_property_renderer.h:71
auto render(mat4f const &P, mat4f const &V) -> void override
Definition: rectilinear_grid_vertex_property_renderer.h:60
gl::indexeddata< vec3f > m_gpu_geometry
Definition: rectilinear_grid_vertex_property_renderer.h:48
auto update_vbo_data() -> void
Definition: rectilinear_grid_vertex_property_renderer.h:73
ui::input_pin * m_rect_grid_in
Definition: rectilinear_grid_vertex_property_renderer.h:47
rectilinear_grid_vertex_property_renderer(flowexplorer::scene &s)
Definition: rectilinear_grid_vertex_property_renderer.h:52
auto create_indexed_data() -> void
Definition: rectilinear_grid_vertex_property_renderer.h:87
Definition: renderable.h:42
Definition: scene.h:17
auto is_linked() const -> bool override
Definition: pin.h:53
auto get_linked_as() -> T &
Definition: pin.h:150
Definition: shadersource.h:8
Definition: mat.h:14
Definition: vec.h:12