81 void set_data(std::vector<Kakshya::DataVariant> variants);
97 void set_vertices(
const void* data,
size_t byte_count);
109 template <
typename T>
112 static_assert(
sizeof(T) == 60,
"set_vertices: T must be a 60-byte vertex type");
113 set_vertices(vertices.data(), vertices.size_bytes());
119 [[nodiscard]]
bool has_pending() const noexcept;
134 void set_texture(
std::shared_ptr<Core::VKImage>
image,
std::
string binding);
148 void set_pixel_data(Kakshya::DataVariant variant);
163 void setup_pixel_target(
166 Portal::Graphics::ImageFormat format,
167 std::
string binding = "texSampler");
176 [[nodiscard]] Kakshya::GpuDataFormat last_texture_format() const noexcept;
179 void on_attach(const
std::shared_ptr<
Buffer>& buffer) override;
180 void on_detach(const
std::shared_ptr<
Buffer>& buffer) override;
181 void processing_function(const
std::shared_ptr<
Buffer>& buffer) override;
185 std::shared_ptr<Core::VKImage>
image;
195 bool m_tex_binding_confirmed {};
197 uint32_t m_tex_width {};
198 uint32_t m_tex_height {};
214 void upload_primary(
const std::shared_ptr<VKBuffer>& vk, std::vector<Kakshya::DataVariant>& slots);
216 void upload_vertex(
const std::shared_ptr<VKBuffer>& vk, std::vector<Kakshya::DataVariant>& slots);
220 void ensure_capacity(
const std::shared_ptr<VKBuffer>& vk,
size_t required);
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
std::shared_ptr< Core::VKImage > image