33#include "VulkanDefines.h"
34#include "VulkanBuffer.h"
35#include "VulkanShader.h"
36#include <NDEVR/DesignObjectBase.h>
38struct VkVertexInputAttributeDescription;
39struct VkVertexInputBindingDescription;
40struct VkPipelineShaderStageCreateInfo;
49 class VulkanVertexManager
53 VulkanVertexManager(
const VulkanVertexManager& m_pipeline) =
delete;
54 ~VulkanVertexManager();
55 uint08 bufferHash()
const { lib_assert(calculateBufferHash() == m_buffer_hash,
"Invalid buffer hash");
return m_buffer_hash; }
56 Time lastUpdateTime()
const {
return m_last_updated_time; }
57 Time lastBufferUpdateTime()
const {
return m_last_buffer_update_time; }
58 uint08 calculateBufferHash()
const;
60 bool needsPipelineUpdate()
const {
return m_needs_pipeline_update; }
61 void setScene(
const Scene& scene);
66 VkIndexType indexType()
const;
73 BitFlag vertexFlags()
const {
return m_vertex_flags; };
76#ifdef VULKAN_FAN_CONVERSION
78 void clearFanToStripBounds();
79 void removeFanToStripBounds(
UUID bounds_id);
81 VkVertexInputBindingDescription getExtraDescription(
const Scene& scene,
const StringView& channel,
uint04 offset)
const;
82 VkVertexInputAttributeDescription getAttribute(
const Scene& scene,
const StringView& channel,
uint04 offset)
const;
85 UUID scene()
const {
return m_scene; }
91 void updateIndexBuffer(
const Scene& scene,
bool can_rebuild);
99 Time m_last_updated_time;
100 Time m_last_buffer_update_time =
Time(0);
103 bool m_needs_pipeline_update =
true;
104 bool m_needs_buffer_update =
true;
105 bool m_needs_index_buffer_update =
false;
106#ifdef VULKAN_FAN_CONVERSION
A bitset that stores 8 bits (elements with only two possible values: 0 or 1, true or false,...
A specification of upper and lower bounds in N-dimensions.
Provides a constant, unmodifiable pointer that has shared ownership of a dynamically allocated object...
A hash-based key-value store, useful for quick associative lookups.
Provides a modifiable pointer that has shared ownership of a dynamically allocated object.
Options that are used for performing an update on a Graphics Engine call.
The root Model that is responsible for storing the underlying data for all Scene Models.
The core String View class for the NDEVR API.
Represents a timestamp with utilities for manipulation and conversion.
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer s...
ShaderType
The types of shaders available for rendering different primitives.
The primary namespace for the NDEVR SDK.
VertexProperty
Per-vertex data channels that can be stored in the vertex table to be used by Geometry.
@ Position
XYZ position of the vertex.
@ BitFlag
Per-vertex bit flags (selected, hidden, etc.).
PrimitiveMode
Used with Geometry to describe how vertices and indices are used to form shapes.
uint64_t uint08
-Defines an alias representing an 8 byte, unsigned integer
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
constexpr t_to cast(const Angle< t_from > &value)
Casts an Angle from one backing type to another.