MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ infer_dimensions_from_data()

void MayaFlux::Buffers::VKBuffer::infer_dimensions_from_data ( size_t  byte_count)
private

Infer Kakshya::DataDimension entries from a given byte count.

Uses the current modality and provided byte count to populate m_dimensions so processors and UI code can reason about the buffer's layout.

Parameters
byte_countNumber of bytes of data to infer dimensions from.

Definition at line 285 of file VKBuffer.cpp.

286{
287 using namespace Kakshya;
288
289 m_dimensions.clear();
290
291 switch (m_modality) {
292 case DataModality::VERTICES_3D: {
293 const uint64_t count = byte_count / sizeof(Kakshya::Vertex);
294 m_dimensions.push_back(DataDimension::vertex_positions(count));
295 m_dimensions.push_back(DataDimension::vertex_colors(count));
296 m_dimensions.push_back(DataDimension::grouped("scalar", count, 1, DataDimension::Role::CUSTOM));
297 m_dimensions.push_back(DataDimension::texture_coords(count));
298 m_dimensions.push_back(DataDimension::vertex_normals(count));
299 m_dimensions.push_back(DataDimension::grouped("tangents", count, 3, DataDimension::Role::CUSTOM));
300 break;
301 }
302 case DataModality::VERTEX_POSITIONS_3D: {
303 uint64_t count = byte_count / sizeof(glm::vec3);
304 m_dimensions.push_back(DataDimension::vertex_positions(count));
305 break;
306 }
307
308 case DataModality::VERTEX_NORMALS_3D: {
309 uint64_t count = byte_count / sizeof(glm::vec3);
310 m_dimensions.push_back(DataDimension::vertex_normals(count));
311 break;
312 }
313
314 case DataModality::TEXTURE_COORDS_2D: {
315 uint64_t count = byte_count / sizeof(glm::vec2);
316 m_dimensions.push_back(DataDimension::texture_coords(count));
317 break;
318 }
319
320 case DataModality::VERTEX_COLORS_RGB: {
321 uint64_t count = byte_count / sizeof(glm::vec3);
322 m_dimensions.push_back(DataDimension::vertex_colors(count, false));
323 break;
324 }
325
326 case DataModality::VERTEX_COLORS_RGBA: {
327 uint64_t count = byte_count / sizeof(glm::vec4);
328 m_dimensions.push_back(DataDimension::vertex_colors(count, true));
329 break;
330 }
331
332 case DataModality::AUDIO_1D: {
333 uint64_t samples = byte_count / sizeof(double);
334 m_dimensions.push_back(DataDimension::time(samples));
335 break;
336 }
337
338 default:
339 m_dimensions.emplace_back("data", byte_count, 1, DataDimension::Role::CUSTOM);
340 break;
341 }
342}
size_t count
std::vector< Kakshya::DataDimension > m_dimensions
Definition VKBuffer.hpp:666
Kakshya::DataModality m_modality
Definition VKBuffer.hpp:665
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.

References count, m_dimensions, and m_modality.

Referenced by resize(), set_data(), set_modality(), and VKBuffer().

+ Here is the caller graph for this function: