33#include "VulkanDefines.h"
34#include "VulkanDevice.h"
35#include "VulkanCameraManager.h"
36#include "VulkanVertexManager.h"
37#include "VulkanMaterialManager.h"
38#include <NDEVR/GraphicsSession.h>
39#include <NDEVR/ModelGeoMaterial.h>
40DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache);
58 void ensureCameraExists(
const UUID & camera);
59 void setupRasterizers();
60 void setupAssemblyInputs();
62 void destroySceneManager(const
UUID& scene);
63 void destroyMaterialManager(const
UUID& mat);
64 void destroyCameraManager(const
UUID& camera);
80 virtual UUID uuid() final
override {
return m_device->id(); };
88 virtual void clearAll();
93 bool checkPipeline(
bool add_if_needed);
101 void createPipelineInput();
108 Buffer<VkGraphicsPipelineCreateInfo> m_pipeline_info_buffer;
120 Vector<cast<uint01>(VkPrimitiveTopology::VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN + 1), VkPipelineInputAssemblyStateCreateInfo> m_assembly_input;
127 VkDescriptorPool m_descriptor_pool;
129 VkPipelineCache m_model_pipeline_cache;
131 uint04 m_num_of_materials;
135 bool m_needs_pipeline_update =
false;
The equivelent of std::vector but with a bit more control.
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.
A core class within the model hierarchy containing vertex-based data (Usually 3D data) within a set c...
A GraphicsPipeline that is responsible for setting up and rendering the resources of a DesignObjectLo...
Options that are used for performing an update on a Graphics Engine call.
Container responsible for storing and setting the appearance of a Model or Geometry within the NDEVR ...
The root Model that is responsible for storing the underlying data for all Scene Models.
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer s...
A fixed-size array with N dimensions used as the basis for geometric and mathematical types.
A structure for managing Viewport interactions with in the Vulkan Graphics Space.
Logic for creating the data in Vulkan for a specific Material.
Creates specific information for performing a render pass within Vulkan.
A root render Object for Vulkan, which consists of a set Material, Model, and Geometry that is used t...
virtual void postClearAll() final override
Called after all scene objects have been cleared.
void updateUniformBuffer(GraphicsUpdateArguments &args) final override
Updates the camera uniform buffer on the GPU.
void removeRenderGeometry(const Geometry &geo) override
Removes a geometry from rendering.
bool createPipeline(GraphicsUpdateArguments &args) final override
Creates or recreates the rendering pipeline.
virtual const ConstPointer< GraphicsDevice > & device() const final override
Returns the graphics device (const).
virtual UUID uuid() final override
Returns the unique identifier for this session.
void cleanup() final override
Releases all GPU resources.
virtual void drawFrame(GraphicsUpdateArguments &) final override
Renders a single frame.
void commit(GraphicsUpdateArguments &args) final override
Commits pending changes to the GPU.
bool addRenderGeometry(const Geometry &geo) override
Adds a geometry for rendering.
virtual void setWindowInstance(WindowInstance *) final override
Associates a window instance with this pipeline.
bool runCommand(GraphicsUpdateArguments &args) final override
Executes a queued rendering command.
bool hasCommand() const override
Checks whether there are pending commands to execute.
virtual void ensureLastRenderComplete() final override
Blocks until the last submitted render is complete.
virtual const DynamicPointer< GraphicsDevice > & device() final override
Returns the graphics device.
virtual void init(GraphicsUpdateArguments &) final override
Initializes the pipeline with the given arguments.
virtual void cleanResources() final override
Cleans up stale or unused GPU resources.
RasterizerType
Types of rasterizer configurations used during rendering.
@ e_filled_cull_cw
Filled polygons with clockwise face culling.
@ e_outline
Outline/wireframe rendering.
@ e_filled_cull_ccw
Filled polygons with counter-clockwise face culling.
@ e_filled_cull_none
Filled polygons with no face culling.
@ e_size
The number of rasterizer types (sentinel).
DynamicPointer< GraphicsPipeline > createRenderPipeline() final override
Creates a new render pipeline for a viewport.
Manages all active shaders in a VulkanSession.
Manages all vertices in a specific Scene object for interfacing with Vulkan.
Contains core information about a Viewport.
The primary namespace for the NDEVR SDK.
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
Tracks a geometry and its last modification time for incremental updates.