11 std::shared_ptr<Nodes::GpuSync::TextureNode> node, std::string binding_name)
13 calculate_buffer_size(node),
15 Kakshya::DataModality::IMAGE_COLOR)
16 , m_texture_node(
std::move(node))
17 , m_binding_name(
std::move(binding_name))
20 error<std::invalid_argument>(
23 std::source_location::current(),
24 "Cannot create TextureBindBuffer with null TextureNode");
28 "Created TextureBindBuffer '{}' for {}x{} texture ({} bytes)",
37 auto self = std::dynamic_pointer_cast<TextureBindBuffer>(shared_from_this());
49 chain = std::make_shared<BufferProcessingChain>();
52 chain->set_preferred_token(
token);
61 size_t size =
static_cast<size_t>(node->get_width()) *
static_cast<size_t>(node->get_height()) * 4 *
sizeof(
float);
65 "TextureNode has zero dimensions. Using minimum buffer size.");
#define MF_INFO(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
static MayaFlux::Nodes::ProcessingToken token
std::shared_ptr< Nodes::GpuSync::TextureNode > m_texture_node
std::shared_ptr< TextureBindingsProcessor > m_bindings_processor
TextureBindBuffer(std::shared_ptr< Nodes::GpuSync::TextureNode > node, std::string binding_name="texture")
Create texture buffer from generative node.
std::string m_binding_name
static size_t calculate_buffer_size(const std::shared_ptr< Nodes::GpuSync::TextureNode > &node)
Calculate texture buffer size from node dimensions.
void setup_processors(Buffers::ProcessingToken token) override
Initialize the buffer and its processors.
void set_processing_chain(std::shared_ptr< Buffers::BufferProcessingChain > chain, bool force=false) override
Replace the buffer's processing chain.
void set_default_processor(std::shared_ptr< Buffers::BufferProcessor > processor) override
Set the buffer's default processor.
std::shared_ptr< Buffers::BufferProcessingChain > get_processing_chain() override
Access the buffer's processing chain.
vk::DeviceSize get_size_bytes() const
Vulkan-backed buffer wrapper used in processing chains.
ProcessingToken
Bitfield enum defining processing characteristics and backend requirements for buffer operations.
@ BufferManagement
Buffer Management (Buffers::BufferManager, creating buffers)
@ Init
Engine/subsystem initialization.
@ Buffers
Buffers, Managers, processors and processing chains.