MayaFlux 0.1.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 209 of file VKImage.cpp.

210{
211 using namespace Kakshya;
212
213 m_dimensions.clear();
214
215 switch (m_type) {
216 case Type::TYPE_1D:
217 m_dimensions.push_back(DataDimension::spatial_1d(m_width));
218 break;
219
220 case Type::TYPE_2D:
221 m_dimensions.push_back(DataDimension::spatial_2d(m_width, m_height));
222 break;
223
224 case Type::TYPE_3D:
225 m_dimensions.push_back(DataDimension::spatial_3d(m_width, m_height, m_depth));
226 break;
227
228 case Type::TYPE_CUBE:
229 m_dimensions.push_back(DataDimension::grouped("cubemap_faces", 6, 2));
230
231 break;
232 }
233
234 uint32_t num_channels = 0;
235 switch (m_format) {
236 case vk::Format::eR8Unorm:
237 case vk::Format::eR16Unorm:
238 case vk::Format::eR32Sfloat:
239 num_channels = 1;
240 break;
241
242 case vk::Format::eR8G8Unorm:
243 case vk::Format::eR16G16Unorm:
244 case vk::Format::eR32G32Sfloat:
245 num_channels = 2;
246 break;
247
248 case vk::Format::eR8G8B8Unorm:
249 case vk::Format::eB8G8R8Unorm:
250 num_channels = 3;
251 break;
252
253 case vk::Format::eR8G8B8A8Unorm:
254 case vk::Format::eB8G8R8A8Unorm:
255 case vk::Format::eR8G8B8A8Srgb:
256 case vk::Format::eR16G16B16A16Unorm:
257 case vk::Format::eR32G32B32A32Sfloat:
258 default:
259 num_channels = 4; // Assume RGBA for unknown formats
260 break;
261 }
262
263 if (num_channels > 0) {
264 m_dimensions.push_back(DataDimension::channel(num_channels));
265 }
266
267 if (m_mip_levels > 1) {
268 m_dimensions.push_back(DataDimension::mipmap_levels(m_mip_levels));
269 }
270
271 if (m_array_layers > 1 && m_type != Type::TYPE_CUBE) {
272 m_dimensions.push_back(DataDimension::grouped("cubemap_faces", 6, 2));
273 }
274
276 "VKImage dimensions inferred: {}x{}x{}, {} channels, {} mips, {} layers",
278}
#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: