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

◆ setup_rendering()

void MayaFlux::Buffers::TextureBuffer::setup_rendering ( const RenderConfig config)
virtual

Setup rendering with RenderProcessor.

Parameters
configRendering configuration

Reimplemented in MayaFlux::Buffers::TextBuffer.

Definition at line 65 of file TextureBuffer.cpp.

66{
67 if (!user_config.vertex_shader.empty()) {
68 m_render_config.vertex_shader = user_config.vertex_shader;
69 }
70 if (!user_config.fragment_shader.empty()) {
71 m_render_config.fragment_shader = user_config.fragment_shader;
72 }
73 if (!user_config.default_texture_binding.empty()) {
74 m_render_config.default_texture_binding = user_config.default_texture_binding;
75 }
76 if (user_config.topology != Portal::Graphics::PrimitiveTopology::TRIANGLE_STRIP) {
78 "TextureBuffer only supports TRIANGLE_STRIP topology. Ignoring provided topology.");
79 } else {
80 if (user_config.topology != m_render_config.topology) {
81 m_render_config.topology = user_config.topology;
82 }
83 }
84 m_render_config.target_window = user_config.target_window;
85
86 if (!user_config.additional_textures.empty()) {
87 for (const auto& [name, texture] : user_config.additional_textures) {
88 m_render_config.additional_textures.emplace_back(name, texture);
89 }
90 }
91
92 ShaderConfig shader_config { m_render_config.vertex_shader };
93 shader_config.bindings[m_render_config.default_texture_binding] = ShaderBinding(
94 0, 1, vk::DescriptorType::eCombinedImageSampler);
95
96 uint32_t binding_index = 1;
97 for (const auto& [name, _] : m_render_config.additional_textures) {
98 shader_config.bindings[name] = ShaderBinding(
99 1, binding_index++, vk::DescriptorType::eCombinedImageSampler);
100 }
101
102 apply_render_config(m_render_config, shader_config);
103
105
106 for (const auto& [name, texture] : m_render_config.additional_textures) {
107 m_render_processor->bind_texture(name, texture);
108 }
109
110 get_processing_chain()->add_final_processor(m_render_processor, shared_from_this());
111}
#define MF_WARN(comp, ctx,...)
std::shared_ptr< Core::VKImage > get_texture() const
Get GPU texture image Suitable for binding to shaders via RenderProcessor::bind_texture()
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
@ BufferProcessing
Buffer processing (Buffers::BufferManager, processing chains)
@ 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.

References MayaFlux::Portal::Graphics::RenderConfig::additional_textures, MayaFlux::Buffers::VKBuffer::apply_render_config(), MayaFlux::Journal::BufferProcessing, MayaFlux::Journal::Buffers, MayaFlux::Portal::Graphics::RenderConfig::default_texture_binding, MayaFlux::Portal::Graphics::RenderConfig::fragment_shader, MayaFlux::Buffers::VKBuffer::get_processing_chain(), get_texture(), MayaFlux::Buffers::VKBuffer::m_render_config, MayaFlux::Buffers::VKBuffer::m_render_processor, MF_WARN, MayaFlux::Portal::Graphics::RenderConfig::target_window, MayaFlux::Portal::Graphics::RenderConfig::topology, MayaFlux::Portal::Graphics::TRIANGLE_STRIP, and MayaFlux::Portal::Graphics::RenderConfig::vertex_shader.

Referenced by MayaFlux::Buffers::TextBuffer::setup_rendering().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: