55 auto to_string() const ->
std::
string;
90 void set_lod_param(
float lod_param);
96 auto get_lod_param() const ->
float;
108 auto to_string() const ->
std::
string;
133 void reserve(
size_t count);
145 void add_instance(
const math::mat4& world_transform);
156 auto size() const ->
size_t;
162 auto empty() const ->
bool;
212 auto get_gpu_memory_size() const ->
size_t;
234 math::mat4& out_transform,
235 math::vec3& out_lod_params);
Collection of batch instances with utilities.
container_type::const_iterator const_iterator
batch_instance_collection()=default
Default constructor.
container_type::iterator iterator
std::vector< batch_instance > container_type
Hash specialization for batch_key to enable use in std::unordered_map.
auto pack_instances_bulk(const std::vector< batch_instance > &instances) -> std::vector< instance_vertex_data >
Pack multiple instances into GPU vertex data.
auto pack_instance_data(const batch_instance &instance) -> instance_vertex_data
Pack batch instance data into GPU vertex format.
void unpack_instance_data(const instance_vertex_data &vertex_data, math::mat4 &out_transform, math::vec3 &out_lod_params)
Unpack GPU vertex data back to transform matrix and LOD params.
auto validate_instance_data_layout() -> bool
Validate that instance data is properly aligned and sized.
Instance data for a single object in a batch.
auto is_valid() const -> bool
Check if this instance has valid data.
const math::mat4 * world_transform_ptr
Pointer to world transformation matrix for this instance (valid only during frame processing)
batch_instance()=default
Default constructor.
math::vec3 lod_params
LOD blending parameters (x = current blend factor, y = target blend, z = transition time)
float padding
Padding to ensure alignment (unused, reserved for future use)
GPU-friendly vertex data for instancing.
math::mat4 world_matrix
World transformation matrix with LOD parameter packed in [3][3] (i_data0, i_data1,...
instance_vertex_data()=default
Default constructor.
static auto packed_size() -> size_t