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

◆ setup_rendering()

void MayaFlux::Buffers::InstanceNetworkBuffer::setup_rendering ( const RenderConfig config)

Definition at line 75 of file InstanceNetworkBuffer.cpp.

76{
77 if (!config.vertex_shader.empty())
78 m_render_config.vertex_shader = config.vertex_shader;
79 if (!config.fragment_shader.empty())
80 m_render_config.fragment_shader = config.fragment_shader;
81
82 m_render_config.target_window = config.target_window;
83 m_render_config.polygon_mode = config.polygon_mode;
84 m_render_config.cull_mode = config.cull_mode;
85
86 for (const auto& [name, tex] : config.additional_textures)
87 m_render_config.additional_textures.emplace_back(name, tex);
88
89 switch (m_render_config.topology) {
92 m_render_config.vertex_shader = "instance_point.vert.spv";
94 m_render_config.fragment_shader = "point.frag.spv";
95 break;
96
100 m_render_config.vertex_shader = "instance_line.vert.spv";
102 m_render_config.fragment_shader = "line.frag.spv";
103#ifndef MAYAFLUX_PLATFORM_MACOS
105 m_render_config.geometry_shader = "line.geom.spv";
106#else
108#endif
109 break;
110
111 default:
112 if (m_render_config.vertex_shader.empty())
113 m_render_config.vertex_shader = "instance.vert.spv";
115 m_render_config.fragment_shader = "triangle.frag.spv";
116 break;
117 }
118
119 ShaderConfig sc { m_render_config.vertex_shader };
120 sc.bindings["instanceTransforms"] = ShaderBinding(
122 vk::DescriptorType::eStorageBuffer);
123
124 uint32_t binding_idx = 0;
125 for (const auto& [name, _] : m_render_config.additional_textures)
126 sc.bindings[name] = ShaderBinding(0, 2 + binding_idx++, vk::DescriptorType::eCombinedImageSampler);
127
129
130 for (const auto& [name, tex] : m_render_config.additional_textures)
131 m_render_processor->bind_texture(name, tex);
132
133 get_processing_chain()->add_final_processor(m_render_processor, shared_from_this());
134
136 "InstanceNetworkBuffer::setup_rendering: vert={} frag={}",
138}
#define MF_INFO(comp, ctx,...)
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
std::shared_ptr< RenderProcessor > m_render_processor
Definition VKBuffer.hpp:620
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.
std::shared_ptr< Core::Window > target_window

References MayaFlux::Portal::Graphics::RenderConfig::additional_textures, MayaFlux::Buffers::VKBuffer::apply_render_config(), MayaFlux::Journal::Buffers, MayaFlux::Portal::Graphics::RenderConfig::cull_mode, MayaFlux::Portal::Graphics::RenderConfig::fragment_shader, MayaFlux::Portal::Graphics::RenderConfig::geometry_shader, MayaFlux::Buffers::VKBuffer::get_processing_chain(), MayaFlux::Journal::Init, MayaFlux::Buffers::InstanceSSBOProcessor::k_transform_ssbo_binding, MayaFlux::Portal::Graphics::LINE_LIST, MayaFlux::Portal::Graphics::LINE_STRIP, MayaFlux::Buffers::VKBuffer::m_render_config, MayaFlux::Buffers::VKBuffer::m_render_processor, MF_INFO, MayaFlux::Portal::Graphics::POINT_LIST, MayaFlux::Portal::Graphics::RenderConfig::polygon_mode, MayaFlux::Portal::Graphics::RenderConfig::target_window, MayaFlux::Portal::Graphics::RenderConfig::topology, MayaFlux::Portal::Graphics::TRIANGLE_LIST, and MayaFlux::Portal::Graphics::RenderConfig::vertex_shader.

+ Here is the call graph for this function: