MayaFlux 0.5.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 121 of file CompositeGeometryBuffer.cpp.

126{
127 if (!node) {
128 error<std::invalid_argument>(
131 std::source_location::current(),
132 "Cannot add null geometry node '{}'", name);
133 }
134
135 if (!m_processor) {
136 error<std::runtime_error>(
139 std::source_location::current(),
140 "Must call setup_processors() before add_geometry()");
141 }
142
143 if (!config.target_window) {
144 error<std::invalid_argument>(
147 std::source_location::current(),
148 "Target window must be specified in RenderConfig");
149 }
150
151 m_processor->add_geometry(name, node, topology);
152 auto self = std::dynamic_pointer_cast<CompositeGeometryBuffer>(shared_from_this());
153
154 std::shared_ptr<RenderProcessor> render;
155 apply_render_config(render, config, ShaderConfig { config.vertex_shader });
156
157 if (auto layout = node->get_vertex_layout()) {
158 render->set_buffer_vertex_layout(self, *layout);
159 }
160 render->set_vertex_range(0, 0);
161
163 chain->add_processor(render, shared_from_this());
164
165 m_render_data[name] = RenderData {
166 .render_processor = render,
167 .vertex_offset = 0,
168 .vertex_count = 0
169 };
170
172 "Added geometry '{}' to composite buffer (topology: {}, shaders: {}/{})",
173 name, static_cast<int>(topology), config.vertex_shader, config.fragment_shader);
174}
#define MF_DEBUG(comp, ctx,...)
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:263
void apply_render_config(const RenderConfig &config, const ShaderConfig &shader_config)
Configure the internal m_render_processor from a RenderConfig.
Definition VKBuffer.cpp:336
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.
Tendency< A, C > chain(const Tendency< A, B > &first, const Tendency< B, C > &second)
Sequential composition: evaluate first, feed result into second.
Definition Tendency.hpp:82

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

+ Here is the call graph for this function: