MayaFlux 0.4.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 122 of file CompositeGeometryBuffer.cpp.

127{
128 if (!node) {
129 error<std::invalid_argument>(
132 std::source_location::current(),
133 "Cannot add null geometry node '{}'", name);
134 }
135
136 if (!m_processor) {
137 error<std::runtime_error>(
140 std::source_location::current(),
141 "Must call setup_processors() before add_geometry()");
142 }
143
144 if (!config.target_window) {
145 error<std::invalid_argument>(
148 std::source_location::current(),
149 "Target window must be specified in RenderConfig");
150 }
151
152 m_processor->add_geometry(name, node, topology);
153 auto self = std::dynamic_pointer_cast<CompositeGeometryBuffer>(shared_from_this());
154
155 std::shared_ptr<RenderProcessor> render;
156 apply_render_config(render, config, ShaderConfig { config.vertex_shader });
157
158 if (auto layout = node->get_vertex_layout()) {
159 render->set_buffer_vertex_layout(self, *layout);
160 }
161 render->set_vertex_range(0, 0);
162
164 chain->add_processor(render, shared_from_this());
165
166 m_render_data[name] = RenderData {
167 .render_processor = render,
168 .vertex_offset = 0,
169 .vertex_count = 0
170 };
171
173 "Added geometry '{}' to composite buffer (topology: {}, shaders: {}/{})",
174 name, static_cast<int>(topology), config.vertex_shader, config.fragment_shader);
175}
#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:286
void apply_render_config(const RenderConfig &config, const ShaderConfig &shader_config)
Configure the internal m_render_processor from a RenderConfig.
Definition VKBuffer.cpp:359
@ 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: