MayaFlux 1.0.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 m_render_config.triangulate = config.triangulate;
86
87 for (const auto& [name, tex] : config.additional_textures)
88 m_render_config.additional_textures.emplace_back(name, tex);
89
90#ifdef MAYAFLUX_PLATFORM_MACOS
94 }
95#endif
96
99 m_render_config.vertex_shader = "instance_milled.vert.spv";
101 m_render_config.fragment_shader = "milled_shape.frag.spv";
103 } else {
104 switch (m_render_config.topology) {
106 if (m_render_config.vertex_shader.empty())
107 m_render_config.vertex_shader = "instance_point.vert.spv";
109 m_render_config.fragment_shader = "point.frag.spv";
110 break;
111
114 if (m_render_config.vertex_shader.empty())
115 m_render_config.vertex_shader = "instance_line.vert.spv";
117 m_render_config.fragment_shader = "line.frag.spv";
119 m_render_config.geometry_shader = "line.geom.spv";
120 break;
121
122 default:
123 if (m_render_config.vertex_shader.empty())
124 m_render_config.vertex_shader = "instance.vert.spv";
126 m_render_config.fragment_shader = "triangle.frag.spv";
127 break;
128 }
129 }
130
131 ShaderConfig sc { m_render_config.vertex_shader };
132 sc.bindings["instanceTransforms"] = ShaderBinding(
134 vk::DescriptorType::eStorageBuffer);
135
136 uint32_t binding_idx = 0;
137 for (const auto& [name, _] : m_render_config.additional_textures)
138 sc.bindings[name] = ShaderBinding(0, 2 + binding_idx++, vk::DescriptorType::eCombinedImageSampler);
139
141
142 for (const auto& [name, tex] : m_render_config.additional_textures)
143 m_render_processor->bind_texture(name, tex);
144
145 get_processing_chain()->add_final_processor(m_render_processor, shared_from_this());
146
148 "InstanceNetworkBuffer::setup_rendering: vert={} frag={}",
150}
#define MF_INFO(comp, ctx,...)
std::string name
Definition VKDevice.cpp:123
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
std::shared_ptr< RenderProcessor > m_render_processor
Definition VKBuffer.hpp:654
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.
std::shared_ptr< Core::Window > target_window
bool triangulate
Reduce supplied spans to triangles before drawing them.

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, name, 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::RenderConfig::triangulate, and MayaFlux::Portal::Graphics::RenderConfig::vertex_shader.

+ Here is the call graph for this function: