![]() |
VPP
0.8
A high-level modern C++ API for Vulkan
|
Base class for render graphs. More...
#include <vppRenderGraph.hpp>
Public Member Functions | |
RenderGraph () | |
Constructs null reference. | |
~RenderGraph () | |
Decreases reference count. | |
Static Public Member Functions | |
static void | cmdDraw (unsigned int vertexCount, unsigned int instanceCount, unsigned int firstVertex, unsigned int firstInstance, CommandBuffer hCmdBuffer=CommandBuffer()) |
Generates a command to draw specified region of vertex/instance buffers. More... | |
static void | cmdDrawIndexed (unsigned int indexCount, unsigned int instanceCount, unsigned int firstIndex, int vertexOffset, unsigned int firstInstance, CommandBuffer hCmdBuffer=CommandBuffer()) |
Generates a command to draw specified region of vertex/instance buffers, using additional index buffer to address vertices. More... | |
static void | cmdDrawIndirect (const IndirectBufferView &data, VkDeviceSize offset, unsigned int drawCount, CommandBuffer hCmdBuffer=CommandBuffer()) |
Generates a command to draw specified region of indirect drawing buffer. More... | |
static void | cmdDrawIndexedIndirect (const IndirectBufferView &data, VkDeviceSize offset, unsigned int drawCount, CommandBuffer hCmdBuffer=CommandBuffer()) |
Generates a command to draw specified region of indirect drawing buffer, also using an index buffer to address vertices. More... | |
static void | cmdClearImages (unsigned int attachmentCount, const VkClearAttachment *pAttachments, unsigned int rectCount, const VkClearRect *pRects, CommandBuffer hCmdBuffer=CommandBuffer()) |
Generates a command to clear specified attachment images. More... | |
![]() | |
static void | cmdFillBuffer (const Buf &hDstBuffer, size_t offset, size_t size, std::uint32_t value, CommandBuffer hCmdBuffer=CommandBuffer()) |
Fills specified buffer (or a region of it) with constant value. | |
static void | cmdCopyBuffer (const Buf &hSrcBuffer, const Buf &hDstBuffer, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies entire contents from one buffer to another. | |
static void | cmdCopyBuffer (const Buf &hSrcBuffer, const Buf &hDstBuffer, const std::vector< VkBufferCopy > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies a list of regions from one buffer to another. | |
static void | cmdUpdateBuffer (const Buf &hDstBuffer, size_t offset, size_t size, const std::uint32_t *pData, CommandBuffer hCmdBuffer=CommandBuffer()) |
Modifies a buffer region with specified data. More... | |
static void | cmdCopyImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies entire contents from one image to another. | |
static void | cmdCopyImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkImageCopy > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies a list of regions from one image to another. | |
static void | cmdCopyBufferToImage (const Buf &hSrcBuffer, const Img &hDstImage, VkImageLayout dstImageLayout, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies entire contents from a buffer to an image. | |
static void | cmdCopyBufferToImage (const Buf &hSrcBuffer, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkBufferImageCopy > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies a list of regions from a buffer to an image. | |
static void | cmdCopyImageToBuffer (const Img &hSrcImage, VkImageLayout srcImageLayout, const Buf &hDstBuffer, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies entire contents from an image to a buffer. | |
static void | cmdCopyImageToBuffer (const Img &hSrcImage, VkImageLayout srcImageLayout, const Buf &hDstBuffer, const std::vector< VkBufferImageCopy > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies a list of regions from an image to a buffer. | |
static void | cmdBlitImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const VkOffset3D &srcBegin, const VkOffset3D &srcEnd, const VkOffset3D &dstBegin, const VkOffset3D &dstEnd, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies source image region into destination image, potentially performing format conversion, arbitrary scaling and filtering. | |
static void | cmdBlitImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const VkOffset3D &srcBegin, const VkOffset3D &srcEnd, const VkOffset3D &dstBegin, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies source image region into destination image, potentially performing format conversion, but no scaling. | |
static void | cmdBlitImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkImageBlit > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Copies source image regions into destination image, potentially performing format conversion, arbitrary scaling and filtering. | |
static void | cmdResolveImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const VkOffset3D &srcOffset, const VkOffset3D &dstOffset, const VkExtent3D &size, CommandBuffer hCmdBuffer=CommandBuffer()) |
Resolves source multisampled image region into destination regular image. More... | |
static void | cmdResolveImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, CommandBuffer hCmdBuffer=CommandBuffer()) |
Resolves source multisampled image into destination regular image. More... | |
static void | cmdResolveImage (const Img &hSrcImage, VkImageLayout srcImageLayout, const Img &hDstImage, VkImageLayout dstImageLayout, const std::vector< VkImageResolve > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Resolves a list of source multisampled image regions into destination regular image regions. More... | |
static void | cmdClearColorImage (const Img &hImage, const VkClearColorValue &color, CommandBuffer hCmdBuffer=CommandBuffer()) |
Clears an image with specified color. | |
static void | cmdClearColorImage (const Img &hImage, const VkClearColorValue &color, const std::vector< VkImageSubresourceRange > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Clears a list of regions in specified image with specified color. | |
static void | cmdClearDepthStencilImage (const Img &hImage, VkImageLayout imageLayout, float depth, std::uint32_t stencil, CommandBuffer hCmdBuffer=CommandBuffer()) |
Clears a depth or stencil image with specified value. | |
static void | cmdClearDepthStencilImage (const Img &hImage, VkImageLayout imageLayout, float depth, std::uint32_t stencil, const std::vector< VkImageSubresourceRange > ®ions, CommandBuffer hCmdBuffer=CommandBuffer()) |
Clears a list of regions in depth or stencil image with specified value. | |
static void | cmdResetQueryPool (const QueryPool &hPool, std::uint32_t first, std::uint32_t count, CommandBuffer hCmdBuffer=CommandBuffer()) |
Resets a range of queries in a query pool. | |
static void | cmdResetQueryPool (const QueryPool &hPool, CommandBuffer hCmdBuffer=CommandBuffer()) |
Resets all queries in a query pool. | |
static void | cmdCopyQueryPoolResults (const Buf &hDstBuffer, const QueryPool &hPool, VkQueryResultFlags flags, std::uint32_t count, std::uint32_t first, VkDeviceSize dstOffset, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdCopyQueryPoolResults (const Buf &hDstBuffer, const QueryPool &hPool, VkQueryResultFlags flags, CommandBuffer hCmdBuffer=CommandBuffer()) |
![]() | |
static void | cmdExecuteCommands (const VkCommandBuffer *pBuffers, size_t size, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdExecuteCommands (const CommandBuffer *pBuffers, size_t size, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdExecuteCommands (const std::vector< CommandBuffer > &buffers, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdWaitEvents (const std::vector< Event > &events, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, const Barriers &barriers=Barriers(), CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdPipelineBarrier (VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, const Barriers &barriers, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdImagePipelineBarrier (const Img &image, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, bool bByRegion, VkImageLayout oldLayout=VK_IMAGE_LAYOUT_GENERAL, VkImageLayout newLayout=VK_IMAGE_LAYOUT_GENERAL, int mipLevel=-1, int arrayLayer=-1, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBufferPipelineBarrier (const Buf &hBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetViewport (const VkViewport &viewport, std::uint32_t index=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetViewport (const std::vector< VkViewport > &viewports, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetLineWidth (float lineWidth, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetDepthBias (float constantFactor, float clamp, float slopeFactor, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetDepthBounds (float minDepthBounds, float maxDepthBounds, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetScissor (const VkRect2D &scissor, std::uint32_t index=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetScissor (const std::vector< VkRect2D > &scissors, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetStencilCompareMask (VkStencilFaceFlags faceMask, std::uint32_t compareMask, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetStencilWriteMask (VkStencilFaceFlags faceMask, std::uint32_t writeMask, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetStencilReference (VkStencilFaceFlags faceMask, std::uint32_t reference, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdSetBlendConstants (const float blendConstants [4], CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBeginQuery (const QueryPool &hPool, std::uint32_t query, VkQueryControlFlags flags, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdEndQuery (const QueryPool &hPool, std::uint32_t query, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdWriteTimestamp (const QueryPool &hPool, std::uint32_t query, VkPipelineStageFlagBits pipelineStage, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBindPipeline (const Pipeline &hPipeline, VkPipelineBindPoint pipelineBindPoint, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBindDescriptorSets (const ShaderDataBlock &hDataBlock, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBindIndexInput (const Buf &hBuffer, VkIndexType indexType, VkDeviceSize offset, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBindVertexBuffers (const std::vector< Buf > &buffers, const std::vector< VkDeviceSize > &offsets, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdBindVertexBuffers (const std::vector< Buf > &buffers, std::uint32_t first=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
static void | cmdPushConstants (const PipelineLayoutBase &hPipelineLayout, VkShaderStageFlags stageFlags, const void *pValues, std::uint32_t size, std::uint32_t offset=0, CommandBuffer hCmdBuffer=CommandBuffer()) |
Base class for render graphs.
Inherit from this class to make your custom render graph class. Additionally RenderGraph defines some convenience wrappers for Vulkan drawing commands, including those meant for operation on the implicit context.
Since this class serves as a counted reference to internal representation, you can pass RenderGraph by value. In order to do be able to that, keep your custom render graph class lightweight. Store only graph nodes (e.g. Process, Attachment, Preprocess and Postprocess) in the object.
An example of renderer using a simple render graph:
|
static |
Generates a command to clear specified attachment images.
The command will be generated into specified command buffer, or the default command buffer if omitted.
|
static |
Generates a command to draw specified region of vertex/instance buffers.
Vertex and instance buffers (when applicable) must be bound in currently recorded command sequence by calling PipelineConfig::cmdBindVertexInput() prior to issuing cmdDraw(). This should be done for all binding points used in the vertex shader.
The command will be generated into specified command buffer, or the default command buffer if omitted.
Usually this command is called from the lambda routine registered for the Process node. Do not specify command buffer in such case.
|
static |
Generates a command to draw specified region of vertex/instance buffers, using additional index buffer to address vertices.
Vertex and instance buffers (when applicable) must be bound in currently recorded command sequence by calling PipelineConfig::cmdBindVertexInput() and prior to issuing cmdDrawIndexed(). This should be done for all binding points used in the vertex shader.
Also bind the index buffer by calling PipelineConfig::cmdBindIndexInput(). The index buffer should contain an array of 32-bit integers. One of possibilities is to use Indices container class for it.
The command will be generated into specified command buffer, or the default command buffer if omitted.
Usually this command is called from the lambda routine registered for the Process node. Do not specify command buffer in such case.
|
static |
Generates a command to draw specified region of indirect drawing buffer, also using an index buffer to address vertices.
The indirect drawing buffer contains parameters for implicit draw commands which are automatically generated. This allows to draw multiple regions of index/instance buffers using single draw call. The buffer should contain an array of VkDrawIndexedIndirectCommand structures. One of possibilities is to use the IndexedIndirectCommands container class for it.
Vertex and instance buffers (when applicable) must be bound in currently recorded command sequence by calling PipelineConfig::cmdBindVertexInput() and prior to issuing cmdDrawIndexedIndirect(). This should be done for all binding points used in the vertex shader.
Also bind the index buffer by calling PipelineConfig::cmdBindIndexInput(). The index buffer should contain an array of 32-bit integers. One of possibilities is to use Indices container class for it.
The command will be generated into specified command buffer, or the default command buffer if omitted.
Usually this command is called from the lambda routine registered for the Process node. Do not specify command buffer in such case.
|
static |
Generates a command to draw specified region of indirect drawing buffer.
The indirect drawing buffer contains parameters for implicit draw commands which are automatically generated. This allows to draw multiple regions of vertex/instance buffers using single draw call. The buffer should contain an array of VkDrawIndirectCommand structures. One of possibilities is to use the IndirectCommands container class for it.
Vertex and instance buffers (when applicable) must be bound in currently recorded command sequence by calling PipelineConfig::cmdBindVertexInput() and prior to issuing cmdDrawIndirect(). This should be done for all binding points used in the vertex shader.
The command will be generated into specified command buffer, or the default command buffer if omitted.
Usually this command is called from the lambda routine registered for the Process node. Do not specify command buffer in such case.