MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
GpuContext.hpp
Go to the documentation of this file.
1#pragma once
2
3namespace MayaFlux::Nodes {
4
5/**
6 * @class GpuVectorData
7 * @brief GPU-uploadable 1D array data interface
8 *
9 * Provides contiguous float array access for GPU descriptor binding.
10 * Use for: FFT spectrums, audio buffers, particle data, filter coefficients.
11 */
12class MAYAFLUX_API GpuVectorData {
13protected:
14 std::span<const float> m_gpu_data;
15
16public:
17 GpuVectorData() = default;
18 explicit GpuVectorData(std::span<const float> data)
19 : m_gpu_data(data)
20 {
21 }
22
23 [[nodiscard]] std::span<const float> gpu_data() const { return m_gpu_data; }
24 [[nodiscard]] size_t gpu_data_size() const { return m_gpu_data.size(); }
25 [[nodiscard]] bool has_gpu_data() const { return !m_gpu_data.empty(); }
26};
27
28/**
29 * @class GpuMatrixData
30 * @brief GPU-uploadable 2D grid data interface
31 *
32 * Provides 2D texture data access for GPU descriptor binding.
33 * Use for: textures, spectrograms, 2D visualizations.
34 */
35class MAYAFLUX_API GpuMatrixData {
36protected:
37 std::span<const float> m_gpu_data;
38 uint32_t m_width = 0;
39 uint32_t m_height = 0;
40
41public:
42 GpuMatrixData() = default;
43 GpuMatrixData(std::span<const float> data, uint32_t w, uint32_t h)
44 : m_gpu_data(data)
45 , m_width(w)
46 , m_height(h)
47 {
48 }
49
50 [[nodiscard]] std::span<const float> gpu_data() const { return m_gpu_data; }
51 [[nodiscard]] uint32_t width() const { return m_width; }
52 [[nodiscard]] uint32_t height() const { return m_height; }
53 [[nodiscard]] bool has_gpu_data() const { return !m_gpu_data.empty(); }
54};
55
56/**
57 * @class GpuStructuredData
58 * @brief GPU-uploadable structured data (arrays of POD structs)
59 *
60 * Provides raw byte access for arrays of POD structures.
61 * Use for: particle systems, instance data, custom vertex attributes.
62 */
63class MAYAFLUX_API GpuStructuredData {
64protected:
65 std::span<const uint8_t> m_gpu_data;
66 size_t m_element_size = 0;
67 size_t m_element_count = 0;
68
69public:
70 GpuStructuredData() = default;
71 GpuStructuredData(std::span<const uint8_t> data, size_t elem_size, size_t elem_count)
72 : m_gpu_data(data)
73 , m_element_size(elem_size)
74 , m_element_count(elem_count)
75 {
76 }
77
78 std::span<const uint8_t> gpu_data() const { return m_gpu_data; }
79 size_t element_size() const { return m_element_size; }
80 size_t element_count() const { return m_element_count; }
81 bool has_gpu_data() const { return !m_gpu_data.empty(); }
82};
83
84} // namespace MayaFlux::Nodes
std::span< const float > gpu_data() const
std::span< const float > m_gpu_data
GpuMatrixData(std::span< const float > data, uint32_t w, uint32_t h)
GPU-uploadable 2D grid data interface.
std::span< const uint8_t > m_gpu_data
std::span< const uint8_t > gpu_data() const
GpuStructuredData(std::span< const uint8_t > data, size_t elem_size, size_t elem_count)
GPU-uploadable structured data (arrays of POD structs)
GpuVectorData(std::span< const float > data)
std::span< const float > gpu_data() const
std::span< const float > m_gpu_data
GPU-uploadable 1D array data interface.
Contains the node-based computational processing system components.
Definition Chronie.hpp:5