3#include "surface_renderer.h"
5#include "gl/lib_begin.h"
45 bool has_radii =
false;
46 bool has_group_radii =
false;
47 float y_view_angle = 45.0f;
58 void set_y_view_angle(
float y_view_angle);
60 template <
typename T =
float>
61 void set_radius(
const context& ctx,
const T& radius) { has_radii =
true; ref_prog().set_attribute(ctx, ref_prog().get_attribute_location(ctx,
"radius"), radius); }
63 template <
typename T =
float>
64 void set_radius_array(
const context& ctx,
const std::vector<T>& radii) { has_radii =
true; set_attribute_array(ctx,
"radius", radii); }
66 template <
typename T =
float>
67 void set_radius_array(
const context& ctx,
const T* radii,
size_t nr_elements,
unsigned stride_in_bytes = 0) { has_radii =
true; set_attribute_array(ctx,
"radius", radii, nr_elements, stride_in_bytes); }
69 void remove_radius_array(
const context& ctx);
71 template <
typename T =
float>
72 void set_group_radii(
const context& ctx,
const std::vector<T>& group_radii) { has_group_radii =
true; ref_prog().set_uniform_array(ctx,
"group_radii", group_radii); }
74 template <
typename T =
float>
75 void set_sphere(
const context& ctx,
const cgv::math::fvec<T, 4>& sphere) {
76 ref_prog().set_attribute(ctx, ref_prog().get_attribute_location(ctx,
"position"), (
const cgv::math::fvec<T, 3>&)sphere);
77 ref_prog().set_attribute(ctx, ref_prog().get_attribute_location(ctx,
"radius"), sphere[3]);
82 template <
typename T =
float>
90 bool validate_attributes(
const context& ctx)
const override;
92 bool enable(
context& ctx)
override;
94 bool disable(
context& ctx)
override;
96 void draw(
context& ctx,
size_t start,
size_t count,
97 bool use_strips =
false,
bool use_adjacency =
false, uint32_t strip_restart_index = -1)
override;
109#include <cgv/config/lib_end.h>
A vector with zero based index.
the self reflection handler is passed to the virtual self_reflect() method of cgv::base::base.
attribute array manager used to upload arrays to gpu
base class for all drawables, which is independent of the used rendering API.
bool ref_composed_attribute_array(const context &ctx, const std::string &name, const std::string &name_ref, const C *array_ptr, size_t nr_elements, const T &elem)
in case that several attributes are stored interleaved, call set_composed_attribute_array() for the f...
bool set_composed_attribute_array(const context &ctx, const std::string &name, const C *array_ptr, size_t nr_elements, const T &elem)
in case that several attributes are stored interleaved, call this function for the first and ref_comp...
bool has_positions
track whether position attribute is defined
renderer that supports splatting of spheres
std::string get_default_prog_name() const override
return the default shader program name
void set_sphere_array(const context &ctx, const std::vector< cgv::math::fvec< T, 4 > > &spheres)
use this function if you store spheres in vec4 with the 4th component the radius
render_style * create_render_style() const override
create and return the default render style
base classes for renderers that support surface rendering
namespace for api independent GPU programming
sphere_renderer & ref_sphere_renderer(context &ctx, int ref_count_change)
reference to a singleton sphere renderer that can be shared among drawables
this header is dependency free
cgv::media::color< float, cgv::media::RGB, cgv::media::OPACITY > rgba
declare rgba color type with 32 bit components
this reflection traits implementation is used for external self_reflect implementations of instances ...
base class for all render styles
render style for sphere rendere
float radius
default value assigned to radius attribute in enable method of sphere renderer, set to 1 in construct...
cgv::rgba halo_color
color of halo with opacity channel
float halo_width_in_pixel
set to 0 in constructor
bool use_group_radius
whether to use the group radius
float percentual_halo_width
set to 0 in constructor
float radius_scale
multiplied to the sphere radii, initialized to 1
float halo_color_strength
strength in [0,1] of halo color with respect to color of primitive
float blend_width_in_pixel
set to 1 in constructor