1 #ifndef VFRENDERING_ISOSURFACE_RENDERER_HXX
2 #define VFRENDERING_ISOSURFACE_RENDERER_HXX
6 #include <VFRendering/VectorFieldRenderer.hxx>
8 namespace VFRendering {
12 typedef float isovalue_type;
13 typedef std::function<isovalue_type(
const glm::vec3&,
const glm::vec3&)> value_function_type;
17 LIGHTING_IMPLEMENTATION,
24 virtual void draw(
float aspect_ratio)
override;
25 virtual void optionsHaveChanged(
const std::vector<int>& changed_options)
override;
28 virtual void update(
bool keep_geometry)
override;
31 void updateShaderProgram();
32 void updateIsosurfaceIndices();
35 bool m_is_initialized =
false;
36 unsigned int m_program = 0;
37 unsigned int m_vao = 0;
38 unsigned int m_ibo = 0;
39 unsigned int m_position_vbo = 0;
40 unsigned int m_direction_vbo = 0;
41 unsigned int m_normal_vbo = 0;
42 unsigned int m_num_indices = 0;
44 bool m_value_function_changed;
45 bool m_isovalue_changed;
51 VFRendering::IsosurfaceRenderer::isovalue_type default_value = 0;
56 std::string default_value =
"float lighting(vec3 position, vec3 normal) { return 1.0; }";
61 IsosurfaceRenderer::value_function_type default_value = [] (
const glm::vec3& position,
const glm::vec3& direction) {
69 bool default_value =
false;