MayaFlux 0.4.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
107 m_render_config.vertex_shader = "instance_line_fallback.vert.spv";
109#endif
110 break;
111
112 default:
113 if (m_render_config.vertex_shader.empty())
114 m_render_config.vertex_shader = "instance.vert.spv";
116 m_render_config.fragment_shader = "triangle.frag.spv";
117 break;
118 }
119
120 ShaderConfig sc { m_render_config.vertex_shader };
121 sc.bindings["instanceTransforms"] = ShaderBinding(
123 vk::DescriptorType::eStorageBuffer);
124
126
127 get_processing_chain()->add_final_processor(m_render_processor, shared_from_this());
128
130 "InstanceNetworkBuffer::setup_rendering: vert={} frag={}",
132}
#define MF_INFO(comp, ctx,...)
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
std::shared_ptr< RenderProcessor > m_render_processor
Definition VKBuffer.hpp:618
@ 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: