11 std::shared_ptr<Buffers::VKBuffer> buffer,
14 , m_gpu_buffer(
std::move(buffer))
61 layout->vertex_count =
static_cast<uint32_t
>(
count);
68 return glm::vec3(0.F);
GeometryReadbackNode(std::shared_ptr< Buffers::VKBuffer > buffer, size_t vertex_count=0)
Construct from a GPU vertex buffer.
glm::vec3 get_position(size_t index) const
Position of vertex at index, or zero if out of range.
void compute_frame() override
Download vertex data from GPU to CPU.
std::vector< Kakshya::MeshVertex > m_vertices
std::shared_ptr< Buffers::VKBuffer > m_gpu_buffer
std::shared_ptr< Buffers::VKBuffer > m_staging_buffer
std::optional< Kakshya::VertexLayout > get_vertex_layout() const
Get cached vertex layout.
void set_vertex_layout(const Kakshya::VertexLayout &layout)
Set cached vertex layout.
void set_vertex_stride(size_t stride)
Set vertex stride (bytes per vertex)
Base class for nodes that generate 3D geometry data.
void download_from_gpu_async(const std::shared_ptr< VKBuffer > &source, void *data, size_t size, std::shared_ptr< VKBuffer > &staging)
Download from a device-local GPU buffer without stalling the graphics queue.
Vertex type for indexed triangle mesh primitives (TRIANGLE_LIST topology)
static VertexLayout for_meshes(uint32_t stride=60)
Factory: layout for MeshVertex (position, color, weight, uv, normal, tangent)