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

◆ enable_layer_data()

void MayaFlux::Buffers::TextureArrayBuffer::enable_layer_data ( )

Create the per-layer buffer the shader reads as layerData.

Call it before the first frame, and only for a shader that declares the buffer. Calling it again does nothing.

Definition at line 181 of file TextureArrayBuffer.cpp.

182{
183 if (m_layer_data) {
184 return;
185 }
186
187 const auto service = Registry::BackendRegistry::instance()
188 .get_service<Registry::Service::BufferService>();
189 if (!service) {
191 "TextureArrayBuffer: layer data needs a buffer service");
192 return;
193 }
194
195 m_layer_values.assign(static_cast<size_t>(m_layers) * 2, glm::vec4(0.0F));
196 m_layer_data = std::make_shared<VKBuffer>(
197 m_layer_values.size() * sizeof(glm::vec4),
198 VKBuffer::Usage::HOST_STORAGE,
200 service->initialize_buffer(m_layer_data);
201
202 std::memcpy(m_layer_data->get_mapped_ptr(), m_layer_values.data(),
203 m_layer_values.size() * sizeof(glm::vec4));
205}
#define MF_ERROR(comp, ctx,...)
Interface * get_service()
Query for a backend service.
static BackendRegistry & instance()
Get the global registry instance.
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ Buffers
Buffers, Managers, processors and processing chains.
@ UNKNOWN
Unknown or undefined modality.

References bind_layer_data(), MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Registry::BackendRegistry::get_service(), MayaFlux::Registry::BackendRegistry::instance(), m_layer_data, m_layer_values, m_layers, MF_ERROR, and MayaFlux::Kakshya::UNKNOWN.

Referenced by write_layer_value().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: