2#include <ossia/detail/config.hpp>
4#include <ossia/detail/small_vector.hpp>
5#include <ossia/detail/variant.hpp>
16 std::shared_ptr<void> raw_data;
28 ossia::variant<cpu_buffer, gpu_buffer> data;
34 uint32_t byte_stride{};
80 uint32_t byte_offset = 0;
86 int64_t byte_offset{};
89 ossia::small_vector<buffer, 2> buffers;
90 ossia::small_vector<binding, 2> bindings;
91 ossia::small_vector<attribute, 2> attributes;
92 ossia::small_vector<input, 2> input;
94 int vertices{}, indices{}, instances{1};
119 int64_t byte_offset{};
130 std::vector<geometry> meshes;
131 int64_t dirty_index{};
133using mesh_list_ptr = std::shared_ptr<mesh_list>;
137 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.,
141struct geometry_filter
159 int64_t dirty_index{};
162struct geometry_filter_list
164 std::vector<geometry_filter> filters;
165 int64_t dirty_index{};
167using geometry_filter_list_ptr = std::shared_ptr<geometry_filter_list>;
171 mesh_list_ptr meshes;
172 geometry_filter_list_ptr filters;
174 operator bool() const noexcept {
return meshes && filters; }
175 bool operator==(
const geometry_spec&)
const noexcept =
default;
176 bool operator<(
const geometry_spec& rhs)
const noexcept
178 return (meshes < rhs.meshes) || (meshes == rhs.meshes && filters < rhs.filters);
182struct OSSIA_EXPORT geometry_port
184 static const constexpr int which = 4;
187 dirty_transform = 0x1,
193 geometry_spec geometry;
194 transform3d transform;
198struct geometry_delay_line
200 std::vector<geometry_spec> geometries;