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

◆ infer_dimensions_from_parameters()

void MayaFlux::Core::VKImage::infer_dimensions_from_parameters ( )
private

Infer Kakshya::DataDimension entries from image parameters.

Uses current modality, dimensions, and format to populate m_dimensions so processors and UI code can reason about the image layout.

Definition at line 122 of file VKImage.cpp.

123{
124 using namespace Kakshya;
125
126 m_dimensions.clear();
127
128 switch (m_type) {
129 case Type::TYPE_1D:
130 m_dimensions.push_back(DataDimension::spatial_1d(m_width));
131 break;
132
133 case Type::TYPE_2D:
134 m_dimensions.push_back(DataDimension::spatial_2d(m_width, m_height));
135 break;
136
137 case Type::TYPE_3D:
138 m_dimensions.push_back(DataDimension::spatial_3d(m_width, m_height, m_depth));
139 break;
140
141 case Type::TYPE_CUBE:
142 m_dimensions.push_back(DataDimension::grouped("cubemap_faces", 6, 2));
143
144 break;
145 }
146
147 uint32_t num_channels = 0;
148 switch (m_format) {
149 case vk::Format::eR8Unorm:
150 case vk::Format::eR16Unorm:
151 case vk::Format::eR32Sfloat:
152 num_channels = 1;
153 break;
154
155 case vk::Format::eR8G8Unorm:
156 case vk::Format::eR16G16Unorm:
157 case vk::Format::eR32G32Sfloat:
158 num_channels = 2;
159 break;
160
161 case vk::Format::eR8G8B8Unorm:
162 case vk::Format::eB8G8R8Unorm:
163 num_channels = 3;
164 break;
165
166 case vk::Format::eR8G8B8A8Unorm:
167 case vk::Format::eB8G8R8A8Unorm:
168 case vk::Format::eR8G8B8A8Srgb:
169 case vk::Format::eR16G16B16A16Unorm:
170 case vk::Format::eR32G32B32A32Sfloat:
171 default:
172 num_channels = 4; // Assume RGBA for unknown formats
173 break;
174 }
175
176 if (num_channels > 0) {
177 m_dimensions.push_back(DataDimension::channel(num_channels));
178 }
179
180 if (m_mip_levels > 1) {
181 m_dimensions.push_back(DataDimension::mipmap_levels(m_mip_levels));
182 }
183
184 if (m_array_layers > 1 && m_type != Type::TYPE_CUBE) {
185 m_dimensions.push_back(DataDimension::grouped("cubemap_faces", 6, 2));
186 }
187
189 "VKImage dimensions inferred: {}x{}x{}, {} channels, {} mips, {} layers",
191}
#define MF_DEBUG(comp, ctx,...)
std::vector< Kakshya::DataDimension > m_dimensions
Definition VKImage.hpp:219
@ GraphicsBackend
Graphics/visual rendering backend (Vulkan, OpenGL)
@ Core
Core engine, backend, subsystems.
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.

References MayaFlux::Journal::Core, MayaFlux::Journal::GraphicsBackend, m_array_layers, m_depth, m_dimensions, m_format, m_height, m_mip_levels, m_type, m_width, MF_DEBUG, TYPE_1D, TYPE_2D, TYPE_3D, and TYPE_CUBE.

Referenced by set_modality(), and VKImage().

+ Here is the caller graph for this function: