Always uses triangle.vert.spv / triangle.frag.spv unless overridden. Topology is always TRIANGLE_LIST.
74{
75 if (!config.vertex_shader.empty()) {
77 }
78 if (!config.fragment_shader.empty()) {
80 }
81 if (!config.default_texture_binding.empty()) {
83 }
84
88 }
89
92
93 if (!config.additional_textures.empty()) {
94 for (const auto& [name, texture] : config.additional_textures) {
96 }
97 }
98
101
104 }
105
108 ? "mesh_textured.frag.spv"
109 : "triangle.frag.spv";
110 }
111
114
117 0, 1, vk::DescriptorType::eCombinedImageSampler);
118 }
119
120 uint32_t binding_index = 1;
122 sc.bindings[name] = ShaderBinding(
123 1, binding_index++, vk::DescriptorType::eCombinedImageSampler);
124 }
125
127 }
128
132 std::dynamic_pointer_cast<VKBuffer>(shared_from_this()));
134
139 }
140
141 for (
const auto& [name, texture] :
m_render_config.additional_textures) {
143 }
144
147 shared_from_this());
148
150 "MeshBuffer::setup_rendering: vert={} frag={} textured={}",
153 textured);
154}
#define MF_INFO(comp, ctx,...)
std::shared_ptr< RenderProcessor > m_render_processor
std::string m_diffuse_binding
std::shared_ptr< Core::VKImage > m_diffuse_texture
RenderConfig m_render_config
std::shared_ptr< Buffers::BufferProcessingChain > get_processing_chain() override
Access the buffer's processing chain.
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.
std::shared_ptr< Core::Window > target_window
std::vector< std::pair< std::string, std::shared_ptr< Core::VKImage > > > additional_textures
For child-specific fields.
PrimitiveTopology topology
std::string vertex_shader
std::string fragment_shader
std::string default_texture_binding