MayaFlux 0.5.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 277 of file VKBuffer.cpp.

278{
279 using namespace Kakshya;
280
281 m_dimensions.clear();
282
283 switch (m_modality) {
284 case DataModality::VERTICES_3D: {
285 const uint64_t count = byte_count / sizeof(Kakshya::Vertex);
286 m_dimensions.push_back(DataDimension::vertex_positions(count));
287 m_dimensions.push_back(DataDimension::vertex_colors(count));
288 m_dimensions.push_back(DataDimension::grouped("scalar", count, 1, DataDimension::Role::CUSTOM));
289 m_dimensions.push_back(DataDimension::texture_coords(count));
290 m_dimensions.push_back(DataDimension::vertex_normals(count));
291 m_dimensions.push_back(DataDimension::grouped("tangents", count, 3, DataDimension::Role::CUSTOM));
292 break;
293 }
294 case DataModality::VERTEX_POSITIONS_3D: {
295 uint64_t count = byte_count / sizeof(glm::vec3);
296 m_dimensions.push_back(DataDimension::vertex_positions(count));
297 break;
298 }
299
300 case DataModality::VERTEX_NORMALS_3D: {
301 uint64_t count = byte_count / sizeof(glm::vec3);
302 m_dimensions.push_back(DataDimension::vertex_normals(count));
303 break;
304 }
305
306 case DataModality::TEXTURE_COORDS_2D: {
307 uint64_t count = byte_count / sizeof(glm::vec2);
308 m_dimensions.push_back(DataDimension::texture_coords(count));
309 break;
310 }
311
312 case DataModality::VERTEX_COLORS_RGB: {
313 uint64_t count = byte_count / sizeof(glm::vec3);
314 m_dimensions.push_back(DataDimension::vertex_colors(count, false));
315 break;
316 }
317
318 case DataModality::VERTEX_COLORS_RGBA: {
319 uint64_t count = byte_count / sizeof(glm::vec4);
320 m_dimensions.push_back(DataDimension::vertex_colors(count, true));
321 break;
322 }
323
324 case DataModality::AUDIO_1D: {
325 uint64_t samples = byte_count / sizeof(double);
326 m_dimensions.push_back(DataDimension::time(samples));
327 break;
328 }
329
330 default:
331 m_dimensions.emplace_back("data", byte_count, 1, DataDimension::Role::CUSTOM);
332 break;
333 }
334}
size_t count
std::vector< Kakshya::DataDimension > m_dimensions
Definition VKBuffer.hpp:632
Kakshya::DataModality m_modality
Definition VKBuffer.hpp:631
@ 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: