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

◆ add_geometry() [1/2]

void MayaFlux::Buffers::CompositeGeometryBuffer::add_geometry ( const std::string &  name,
const std::shared_ptr< Nodes::GpuSync::GeometryWriterNode > &  node,
Portal::Graphics::PrimitiveTopology  topology,
const RenderConfig &  config 
)

Add a geometry collection with explicit render config.

Parameters
nameUnique identifier for this geometry
nodeGeometryWriterNode to render
topologyPrimitive topology for this geometry
configRender configuration (shaders, render states)

Definition at line 125 of file CompositeGeometryBuffer.cpp.

130{
131 if (!node) {
132 error<std::invalid_argument>(
135 std::source_location::current(),
136 "Cannot add null geometry node '{}'", name);
137 }
138
139 if (!m_processor) {
140 error<std::runtime_error>(
143 std::source_location::current(),
144 "Must call setup_processors() before add_geometry()");
145 }
146
147 if (!config.target_window) {
148 error<std::invalid_argument>(
151 std::source_location::current(),
152 "Target window must be specified in RenderConfig");
153 }
154
155 m_processor->add_geometry(name, node, topology);
156 auto self = std::dynamic_pointer_cast<CompositeGeometryBuffer>(shared_from_this());
157
158 std::shared_ptr<RenderProcessor> render;
159 apply_render_config(render, config, ShaderConfig { config.vertex_shader });
160
161 if (auto layout = node->get_vertex_layout()) {
162 render->set_buffer_vertex_layout(self, *layout);
163 }
164 render->set_vertex_range(0, 0);
165
167 chain->add_processor(render, shared_from_this());
168
169 m_render_data[name] = RenderData {
170 .render_processor = render,
171 .vertex_offset = 0,
172 .vertex_count = 0
173 };
174
176 "Added geometry '{}' to composite buffer (topology: {}, shaders: {}/{})",
177 name, static_cast<int>(topology), config.vertex_shader, config.fragment_shader);
178}
#define MF_DEBUG(comp, ctx,...)
BufferProcessingChain * chain
PrimitiveTopology topology
std::string name
Definition VKDevice.cpp:123
std::shared_ptr< CompositeGeometryProcessor > m_processor
std::unordered_map< std::string, RenderData > m_render_data
std::shared_ptr< Buffers::BufferProcessingChain > get_processing_chain() override
Access the buffer's processing chain.
Definition VKBuffer.cpp:271
void apply_render_config(const RenderConfig &config, const ShaderConfig &shader_config)
Configure the internal m_render_processor from a RenderConfig.
Definition VKBuffer.cpp:344
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.

References MayaFlux::Buffers::VKBuffer::apply_render_config(), MayaFlux::Journal::Buffers, chain, MayaFlux::Portal::Graphics::RenderConfig::fragment_shader, MayaFlux::Buffers::VKBuffer::get_processing_chain(), MayaFlux::Journal::Init, m_processor, m_render_data, MF_DEBUG, name, MayaFlux::Buffers::RenderData::render_processor, MayaFlux::Portal::Graphics::RenderConfig::target_window, topology, and MayaFlux::Portal::Graphics::RenderConfig::vertex_shader.

+ Here is the call graph for this function: