Vulkan Schnee 0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
EngineCore::RenderProcess Class Referencefinal

The render process class consolidates all the resources that needs to be duplicated for each frame that can be rendered to in parallel. The renderer owns a render process for each frame that can be processed at the same time, and each render process holds their own uniform buffer, command buffer, semaphores and memory fence. With this duplication, the application can be sure that one frame does not modify a resource that is still in use by another simultaneous frame. More...

#include <RenderProcess.h>

Collaboration diagram for EngineCore::RenderProcess:

Classes

struct  HiZPyramid
struct  StaticFragmentUniformData
 Stores the time for time based shader effects. More...
struct  TextureWriteContainer
struct  ViewMatrixUniformData
 This struct holds the data for the view projection matrix which will be passed to every rendered object. More...

Public Member Functions

void updateRendererDescriptorSets ()
void updateComputeObjectCullingDescriptorSets (VkImageView previousFrameHiZView=VK_NULL_HANDLE) const
 Updates object culling descriptor sets.
void updateComputeBinningAllocatorDescriptorSets () const
void updateComputeMeshletCullingDescriptorSets () const
void updateComputePrepareDrawDescriptorSets () const
void updateComputeMeshletCullingDispatcherDescriptorSets () const
void updateComputeMeshletUnpackingDescriptorSets () const
void updateComputeMeshletUnpackingDispatcherDescriptorSets () const
void updateComputeVSBinningAllocatorDescriptorSets () const
void updateComputeVSInstanceUnpackingDescriptorSets () const
void updateComputeVSPrepareDrawDescriptorSets () const
void refreshAllDescriptorSets ()
 Refreshes all descriptor sets after buffer recreation Call this when RenderingDataManager buffers have been recreated.
bool ensureBufferSizes (uint32_t primitiveCount)
 Ensures RenderProcess buffers have sufficient capacity for the given primitive count Dynamically resizes buffers if needed.
void syncWithRenderingDataManager (RenderingDataManager *rdm)
 Sync descriptor sets with RenderingDataManager if data has changed Compares version numbers and updates descriptors if behind. Call this after waiting for the frame's fence (when it's safe to update)
void updateMeshRenderingData ()
VulkanStagedBufferSyncObjects uploadMeshRenderingStagingData ()
void updateSSBO (const Renderer *renderer)
void updateMeshletDataBuffer ()
VulkanStagedBufferSyncObjects uploadSSBOStagingBuffer ()
void updateFrustumUBOData (const Headset *headset)
VulkanStagedBufferSyncObjects uploadFrustumUBO ()
void updateHiZViewProjectionData (const Headset *headset)
 Updates Hi-Z view-projection data for occlusion culling Must be called after updateEyeViewProjectionMatrices() so VP matrices are current.
VulkanStagedBufferSyncObjects uploadHiZViewProjectionUBO ()
 Uploads Hi-Z view-projection UBO to GPU.
 RenderProcess (ApplicationContext *context, VkDeviceSize uniformBufferOffsetAlignment, VkCommandPool graphicsCommandPool, VkCommandPool transferCommandPool, VkDescriptorPool descriptorPool, VkDescriptorSetLayout graphicsDescriptorSetLayout, uint32_t eyeIndex, Renderer *renderer, const Engine *engine)
void cleanup ()
 Cleans up all artifacts of the class.
void updateEyeViewProjectionMatrices (const Headset *headset)
 writes a view projection matrix to an eye
void updateFragmentTime (float time)
 Sets the time value for time based fragment shader effects.
VkCommandBuffer & getTransferCommandBuffer ()
VkCommandBuffer & getGraphicsCommandBuffer ()
VkSemaphore getTransferFinishedSemaphore () const
VkSemaphore getRenderFinishedSemaphore () const
VkDescriptorSet getGraphicsDescriptorSet () const
VkSemaphore getMirrorViewImageSemaphore () const
VulkanStagedBufferSyncObjects uploadUniformBufferData ()
uint32_t getEyeIndex () const
void uploadNewTextures (const std::vector< Texture * > &textures, uint32_t firstIndex) const
void addTexturesToUpload (const std::vector< Texture * > &textures, uint32_t firstIndex)
void processTextureUpload ()
void addStagingBufferForCleanup (VulkanBuffer &&stagingBuffer)
void cleanupStagingBuffer ()
VulkanStagedBuffergetViewProjectionBuffer ()
const VulkanStagedBuffergetViewProjectionBuffer () const
VulkanStagedBuffergetMeshletToObjectMapBuffer ()
const VulkanStagedBuffergetMeshletToObjectMapBuffer () const
VulkanBuffergetBinnedVisibleMeshletIndexBuffer ()
const VulkanBuffergetBinnedVisibleMeshletIndexBuffer () const
const VulkanBuffergetMeshletCounterBuffer () const
const VulkanStagedBuffergetPerObjectSSBOBuffer () const
const VulkanBuffergetPerObjectSSBO_StagingBuffer () const
const VulkanStagedBuffergetMeshRenderingBuffer () const
const VulkanBuffergetMeshRenderingStagingBuffer () const
const VulkanStagedBuffergetFrustumUBOBuffer () const
const VulkanStagedBuffergetHiZViewProjectionBuffer () const
const VulkanBuffergetIndirectDrawBuffer () const
const VulkanBuffergetVisibleObjectRangesBuffer () const
const VulkanBuffergetPass1CounterBuffer () const
const VulkanStagedBuffergetObjectMeshletDataBuffer () const
const VulkanBuffergetAllocationsBuffer () const
 Binning allocator stage buffer getters.
const VulkanBuffergetPipelineCountersBuffer () const
const VulkanBuffergetPipelineBinOffsetsBuffer () const
const VulkanBuffergetCullingFailedBuffer () const
 Two-pass occlusion culling buffer getters.
const VulkanBuffergetCullingFailedCounterBuffer () const
const VulkanBuffergetVSVisibleInstancesBuffer () const
 Vertex shader path buffer getters (instanced drawing pipeline)
const VulkanBuffergetVSVisibleCountBuffer () const
const VulkanBuffergetVSInstanceAllocationsBuffer () const
const VulkanBuffergetVSGeometryCountersBuffer () const
const VulkanBuffergetVSInstanceIdsBuffer () const
const VulkanBuffergetVSDrawCommandsBuffer () const
const VulkanBuffergetVSDrawCountBuffer () const
const VulkanBuffergetVSIndirectDrawBuffer () const
 Legacy VS path buffer getters (backwards compatibility)
const VulkanBuffergetVSIndirectDrawCountBuffer () const
const VulkanBuffergetLodClusterSurvivorsBuffer () const
 LOD cluster-based selection buffer getters.
const VulkanBuffergetLodClusterSurvivorCountBuffer () const
const VulkanStagedBuffergetLodConfigBuffer () const
void updateLodConfig (const glm::vec3 &cameraPosition, const glm::mat4 &projMatrix, float nearPlane, float screenWidth, float screenHeight, float errorThresholdPixels=1.0f, bool ditherEnabled=true)
 Update LOD configuration with camera and screen info Call this once per frame before dispatching primitive culling.
VulkanStagedBufferSyncObjects uploadLodConfigBuffer ()
 Upload LOD config buffer to GPU.
VkFence & getTransferCompleteFence ()
VkFence & getGraphicsCompleteFence ()
void setTransferFenceSubmitted (bool isSubmitted)
void setGraphicsFenceSubmitted (bool isSubmitted)
bool getTransferFenceSubmitted () const
bool getGraphicsFenceSubmitted () const
VkImage getHiZPyramidImage () const
VkImageView getHiZPyramidFullView () const
VkImageView getHiZPyramidMipView (uint32_t mipLevel) const
uint32_t getHiZMipLevels () const
VkExtent2D getHiZExtent () const

Public Attributes

struct EngineCore::RenderProcess::ViewMatrixUniformData staticVertexUniformData
std::vector< PerObjectDataperObjectData
 Rendering resource.
FrustumPlanes frustumData {}
 Rendering Resource.

Private Member Functions

void createDispatcherDispatchBuffer ()
void createCountDispatcherBuffers ()
void createObjectMeshletDataBuffer ()
void createVisibleObjectRangesBuffer ()
void createPass1CounterBuffer ()
void createViewProjectionBuffer ()
void createMeshletToObjectMapBuffer ()
void createBinnedVisibleMeshletIndexBuffer ()
void createMeshletCounterBuffer ()
void createPerObjectSSBOBuffer ()
void createMeshRenderingInfoBuffers ()
void createFrustumUBOBuffer ()
void createIndirectDrawBuffer ()
void createBinningAllocatorBuffers ()
void createCullingFailedBuffers ()
void createHiZViewProjectionBuffer ()
void createVSIndirectDrawBuffers ()
void createVSInstancedDrawingBuffers ()
void createLodBuffers ()
void createHiZPyramid (VkDevice device, VkExtent2D resolution, uint32_t arrayLayers)

Private Attributes

Rendererrenderer = nullptr
ApplicationContextcontext = nullptr
uint32_t eyeIndex = 0u
std::vector< VulkanBufferstagingBuffersForCleanup
StaticFragmentUniformData staticFragmentUniformData
const std::unique_ptr< SceneManager > & sceneManager
std::vector< TextureWriteContainer * > textureWritesToUpload
VkPhysicalDevice physicalDevice = VK_NULL_HANDLE
VkDescriptorSet graphicsDescriptorSet = VK_NULL_HANDLE
std::vector< PrimitiveMeshletDataobjectMeshletData {}
std::optional< VulkanStagedBufferviewProjectionBuffer
std::optional< VulkanStagedBuffermeshletToObjectMapBuffer
std::optional< VulkanStagedBufferperObjectDataBuffer
std::optional< VulkanStagedBufferobjectMeshletDataBuffer
std::optional< VulkanStagedBufferfrustumDataBuffer
std::optional< VulkanStagedBuffermeshRenderingInfoBuffer
std::optional< VulkanBufferbinnedVisibleMeshletIndexBuffer
std::optional< VulkanBuffermeshletCounterBuffer
std::optional< VulkanBuffervisibleObjectRangesBuffer
std::optional< VulkanBufferpass1CounterBuffer
std::optional< VulkanBuffercountDispatcherCounter
std::optional< VulkanBuffercountDispatcherDispatchBuffer
std::optional< VulkanBufferindirectDrawBuffer
std::optional< VulkanBufferallocationsBuffer
 Binning allocator stage buffers (Stage 1)
std::optional< VulkanBufferpipelineCountersBuffer
 Per-pipeline meshlet counters (atomic)
std::optional< VulkanBufferpipelineBinOffsetsBuffer
 Prefix sum of pipeline counters.
std::optional< VulkanBufferdispatcherDispatchBuffer
std::optional< VulkanBuffercullingFailedBuffer
 Two-pass occlusion culling buffers.
std::optional< VulkanBuffercullingFailedCounterBuffer
 Atomic counter for failed objects.
std::optional< VulkanBuffervsVisibleInstancesBuffer_
 Primitive IDs from culling (uint array)
std::optional< VulkanBuffervsVisibleCountBuffer_
 Number of visible VS path primitives.
std::optional< VulkanBuffervsInstanceAllocationsBuffer_
 Stage 1: VSBinningAllocator outputs.
std::optional< VulkanBuffervsGeometryCountersBuffer_
 Atomic instance count per geometry type.
std::optional< VulkanBuffervsInstanceIdsBuffer_
 Stage 2: VSInstanceUnpacking outputs.
std::optional< VulkanBuffervsDrawCommandsBuffer_
 Stage 3: VSPrepareDraw outputs.
std::optional< VulkanBuffervsDrawCountBuffer_
 Number of draw commands.
std::optional< VulkanBuffervsIndirectDrawBuffer_
 Legacy: was VkDrawIndexedIndirectCommand array.
std::optional< VulkanBuffervsIndirectDrawCountBuffer_
 Legacy: was draw count.
std::optional< VulkanBufferlodClusterSurvivorsBuffer_
 LOD cluster-based selection buffers.
std::optional< VulkanBufferlodClusterSurvivorCountBuffer_
 Atomic counter for LOD cluster survivors.
std::optional< VulkanStagedBufferlodConfigBuffer_
 LodConfigUBO for camera/screen info.
LodConfigUBO lodConfigData_ {}
 CPU-side LOD config data.
std::unordered_map< GraphicsPipeline *, uint32_t > pipelineIndices
HiZViewProjectionData hiZViewProjectionData_ {}
 Hi-Z view-projection data for occlusion culling (per-frame to avoid races)
std::optional< VulkanStagedBufferhiZViewProjectionBuffer_
bool hiZFirstFrame_ = true
std::vector< GpuMeshDescriptionunifiedMeshes
BS_tracy::tracy_thread_pool< BS_tracy::tp::none > bufferUpdateThreadPool
VkCommandBuffer transferCommandBuffer = VK_NULL_HANDLE
VkCommandBuffer graphicsCommandBuffer = VK_NULL_HANDLE
VkFence transferCompleteFence = VK_NULL_HANDLE
VkFence graphicsCompleteFence = VK_NULL_HANDLE
bool transferFenceSubmitted = true
bool graphicsFenceSubmitted = true
uint64_t lastSeenDataVersion_ = 0
VkSemaphore renderFinishedSemaphore = VK_NULL_HANDLE
VkSemaphore transferFinishedSemaphore = VK_NULL_HANDLE
VkSemaphore mirrorViewImageReadySemaphore = VK_NULL_HANDLE
HiZPyramid hiZPyramid_

Detailed Description

The render process class consolidates all the resources that needs to be duplicated for each frame that can be rendered to in parallel. The renderer owns a render process for each frame that can be processed at the same time, and each render process holds their own uniform buffer, command buffer, semaphores and memory fence. With this duplication, the application can be sure that one frame does not modify a resource that is still in use by another simultaneous frame.

Naming: update...() -> update data on the cpu side upload...() -> uploads the data to the gpu

Definition at line 37 of file RenderProcess.h.

Constructor & Destructor Documentation

◆ RenderProcess()

EngineCore::RenderProcess::RenderProcess ( ApplicationContext * context,
VkDeviceSize uniformBufferOffsetAlignment,
VkCommandPool graphicsCommandPool,
VkCommandPool transferCommandPool,
VkDescriptorPool descriptorPool,
VkDescriptorSetLayout graphicsDescriptorSetLayout,
uint32_t eyeIndex,
Renderer * renderer,
const Engine * engine )

allocate synchronization

create per frame buffers

Definition at line 344 of file RenderProcess.cpp.

References bufferUpdateThreadPool, context, eyeIndex, renderer, and sceneManager.

Member Function Documentation

◆ addStagingBufferForCleanup()

void EngineCore::RenderProcess::addStagingBufferForCleanup ( VulkanBuffer && stagingBuffer)

Definition at line 680 of file RenderProcess.cpp.

References stagingBuffersForCleanup.

Referenced by EngineCore::Texture::createDataUploadCommand().

Here is the caller graph for this function:

◆ addTexturesToUpload()

void EngineCore::RenderProcess::addTexturesToUpload ( const std::vector< Texture * > & textures,
uint32_t firstIndex )

◆ cleanup()

◆ cleanupStagingBuffer()

void EngineCore::RenderProcess::cleanupStagingBuffer ( )

Definition at line 684 of file RenderProcess.cpp.

References stagingBuffersForCleanup, and TRACY_ZONE_SCOPED_NAMED.

Referenced by cleanup(), and EngineCore::Renderer::submitTransfer().

Here is the caller graph for this function:

◆ createBinnedVisibleMeshletIndexBuffer()

void EngineCore::RenderProcess::createBinnedVisibleMeshletIndexBuffer ( )
private

◆ createBinningAllocatorBuffers()

void EngineCore::RenderProcess::createBinningAllocatorBuffers ( )
private

◆ createCountDispatcherBuffers()

void EngineCore::RenderProcess::createCountDispatcherBuffers ( )
private

Definition at line 894 of file RenderProcess.cpp.

References context, countDispatcherCounter, and countDispatcherDispatchBuffer.

◆ createCullingFailedBuffers()

void EngineCore::RenderProcess::createCullingFailedBuffers ( )
private

Definition at line 978 of file RenderProcess.cpp.

References context, cullingFailedBuffer, cullingFailedCounterBuffer, and eyeIndex.

◆ createDispatcherDispatchBuffer()

void EngineCore::RenderProcess::createDispatcherDispatchBuffer ( )
private

Definition at line 887 of file RenderProcess.cpp.

References context, and dispatcherDispatchBuffer.

◆ createFrustumUBOBuffer()

void EngineCore::RenderProcess::createFrustumUBOBuffer ( )
private

Definition at line 735 of file RenderProcess.cpp.

References context, eyeIndex, and frustumDataBuffer.

◆ createHiZPyramid()

void EngineCore::RenderProcess::createHiZPyramid ( VkDevice device,
VkExtent2D resolution,
uint32_t arrayLayers )
private

Definition at line 1299 of file RenderProcess.cpp.

References context, eyeIndex, VulkanHelper::findSuitableMemoryType(), hiZPyramid_, and VulkanHelper::setObjectName().

Here is the call graph for this function:

◆ createHiZViewProjectionBuffer()

void EngineCore::RenderProcess::createHiZViewProjectionBuffer ( )
private

Definition at line 795 of file RenderProcess.cpp.

References context, eyeIndex, and hiZViewProjectionBuffer_.

◆ createIndirectDrawBuffer()

void EngineCore::RenderProcess::createIndirectDrawBuffer ( )
private

Definition at line 742 of file RenderProcess.cpp.

References context, eyeIndex, indirectDrawBuffer, MAX_PIPELINES, renderer, and VulkanHelper::uploadDataToExistingBuffer().

Here is the call graph for this function:

◆ createLodBuffers()

void EngineCore::RenderProcess::createLodBuffers ( )
private

◆ createMeshletCounterBuffer()

void EngineCore::RenderProcess::createMeshletCounterBuffer ( )
private

◆ createMeshletToObjectMapBuffer()

void EngineCore::RenderProcess::createMeshletToObjectMapBuffer ( )
private

Definition at line 928 of file RenderProcess.cpp.

References context, eyeIndex, MAX_MESHLETS_PER_BIN, and meshletToObjectMapBuffer.

◆ createMeshRenderingInfoBuffers()

void EngineCore::RenderProcess::createMeshRenderingInfoBuffers ( )
private

Definition at line 725 of file RenderProcess.cpp.

References context, eyeIndex, meshRenderingInfoBuffer, and unifiedMeshes.

◆ createObjectMeshletDataBuffer()

void EngineCore::RenderProcess::createObjectMeshletDataBuffer ( )
private

◆ createPass1CounterBuffer()

void EngineCore::RenderProcess::createPass1CounterBuffer ( )
private

Definition at line 914 of file RenderProcess.cpp.

References context, eyeIndex, and pass1CounterBuffer.

◆ createPerObjectSSBOBuffer()

void EngineCore::RenderProcess::createPerObjectSSBOBuffer ( )
private

Definition at line 715 of file RenderProcess.cpp.

References context, eyeIndex, perObjectData, and perObjectDataBuffer.

◆ createViewProjectionBuffer()

void EngineCore::RenderProcess::createViewProjectionBuffer ( )
private

Definition at line 921 of file RenderProcess.cpp.

References context, eyeIndex, and viewProjectionBuffer.

◆ createVisibleObjectRangesBuffer()

void EngineCore::RenderProcess::createVisibleObjectRangesBuffer ( )
private

Definition at line 905 of file RenderProcess.cpp.

References context, eyeIndex, and visibleObjectRangesBuffer.

◆ createVSIndirectDrawBuffers()

void EngineCore::RenderProcess::createVSIndirectDrawBuffers ( )
private

◆ createVSInstancedDrawingBuffers()

void EngineCore::RenderProcess::createVSInstancedDrawingBuffers ( )
private

◆ ensureBufferSizes()

bool EngineCore::RenderProcess::ensureBufferSizes ( uint32_t primitiveCount)

Ensures RenderProcess buffers have sufficient capacity for the given primitive count Dynamically resizes buffers if needed.

Parameters
primitiveCountNumber of primitives in the scene
Returns
true if any buffers were resized

Definition at line 1200 of file RenderProcess.cpp.

References allocationsBuffer, cullingFailedBuffer, eyeIndex, meshRenderingInfoBuffer, perObjectData, perObjectDataBuffer, renderer, unifiedMeshes, visibleObjectRangesBuffer, and vsIndirectDrawBuffer_.

◆ getAllocationsBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getAllocationsBuffer ( ) const
nodiscard

Binning allocator stage buffer getters.

Definition at line 966 of file RenderProcess.cpp.

References allocationsBuffer.

Referenced by updateComputeBinningAllocatorDescriptorSets(), and updateComputeMeshletUnpackingDescriptorSets().

Here is the caller graph for this function:

◆ getBinnedVisibleMeshletIndexBuffer() [1/2]

VulkanBuffer & EngineCore::RenderProcess::getBinnedVisibleMeshletIndexBuffer ( )
nodiscard

Definition at line 770 of file RenderProcess.cpp.

References binnedVisibleMeshletIndexBuffer.

Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::renderToXr(), updateComputeMeshletCullingDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), and updateRendererDescriptorSets().

Here is the caller graph for this function:

◆ getBinnedVisibleMeshletIndexBuffer() [2/2]

const VulkanBuffer & EngineCore::RenderProcess::getBinnedVisibleMeshletIndexBuffer ( ) const
nodiscard

Definition at line 775 of file RenderProcess.cpp.

References binnedVisibleMeshletIndexBuffer.

◆ getCullingFailedBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getCullingFailedBuffer ( ) const
nodiscard

Two-pass occlusion culling buffer getters.

Definition at line 999 of file RenderProcess.cpp.

References cullingFailedBuffer.

Referenced by updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getCullingFailedCounterBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getCullingFailedCounterBuffer ( ) const
nodiscard

Definition at line 1003 of file RenderProcess.cpp.

References cullingFailedCounterBuffer.

Referenced by EngineCore::Renderer::renderToXr(), and updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getEyeIndex()

◆ getFrustumUBOBuffer()

const VulkanStagedBuffer & EngineCore::RenderProcess::getFrustumUBOBuffer ( ) const
nodiscard

Definition at line 791 of file RenderProcess.cpp.

References frustumDataBuffer.

Referenced by updateComputeMeshletCullingDescriptorSets(), and updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getGraphicsCommandBuffer()

◆ getGraphicsCompleteFence()

VkFence & EngineCore::RenderProcess::getGraphicsCompleteFence ( )
nodiscard

Definition at line 866 of file RenderProcess.cpp.

References graphicsCompleteFence.

Referenced by EngineCore::Engine::mainLoop(), and EngineCore::Renderer::submitGraphics().

Here is the caller graph for this function:

◆ getGraphicsDescriptorSet()

VkDescriptorSet EngineCore::RenderProcess::getGraphicsDescriptorSet ( ) const
nodiscard

Definition at line 591 of file RenderProcess.cpp.

References graphicsDescriptorSet.

Referenced by EngineCore::Renderer::recordPass2RenderPass(), EngineCore::Renderer::recordRenderPass(), EngineCore::Renderer::recordVertexShaderDraws(), and EngineCore::Renderer::recordVertexShaderDrawsDepthOnly().

Here is the caller graph for this function:

◆ getGraphicsFenceSubmitted()

bool EngineCore::RenderProcess::getGraphicsFenceSubmitted ( ) const

Definition at line 882 of file RenderProcess.cpp.

References graphicsFenceSubmitted.

Referenced by EngineCore::Engine::mainLoop().

Here is the caller graph for this function:

◆ getHiZExtent()

VkExtent2D EngineCore::RenderProcess::getHiZExtent ( ) const
inlinenodiscard

Definition at line 456 of file RenderProcess.h.

References hiZPyramid_.

Referenced by EngineCore::Renderer::recordHiZGeneration(), and EngineCore::Renderer::recordHiZGenerationSPD().

Here is the caller graph for this function:

◆ getHiZMipLevels()

uint32_t EngineCore::RenderProcess::getHiZMipLevels ( ) const
inlinenodiscard

Definition at line 455 of file RenderProcess.h.

References hiZPyramid_.

Referenced by EngineCore::Renderer::recordHiZGeneration(), EngineCore::Renderer::recordHiZGenerationSPD(), EngineCore::Renderer::updateHiZMipDescriptorSets(), EngineCore::Renderer::updateHiZSPDDescriptorSets(), and updateHiZViewProjectionData().

Here is the caller graph for this function:

◆ getHiZPyramidFullView()

VkImageView EngineCore::RenderProcess::getHiZPyramidFullView ( ) const
inlinenodiscard

Definition at line 453 of file RenderProcess.h.

References hiZPyramid_.

Referenced by EngineCore::Renderer::renderToXr(), and updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getHiZPyramidImage()

VkImage EngineCore::RenderProcess::getHiZPyramidImage ( ) const
inlinenodiscard

Definition at line 452 of file RenderProcess.h.

References hiZPyramid_.

Referenced by EngineCore::Renderer::recordHiZGeneration(), and EngineCore::Renderer::recordHiZGenerationSPD().

Here is the caller graph for this function:

◆ getHiZPyramidMipView()

VkImageView EngineCore::RenderProcess::getHiZPyramidMipView ( uint32_t mipLevel) const
inlinenodiscard

Definition at line 454 of file RenderProcess.h.

References hiZPyramid_.

Referenced by EngineCore::Renderer::updateHiZMipDescriptorSets(), and EngineCore::Renderer::updateHiZSPDDescriptorSets().

Here is the caller graph for this function:

◆ getHiZViewProjectionBuffer()

const VulkanStagedBuffer & EngineCore::RenderProcess::getHiZViewProjectionBuffer ( ) const
nodiscard

Definition at line 840 of file RenderProcess.cpp.

References hiZViewProjectionBuffer_.

Referenced by updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getIndirectDrawBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getIndirectDrawBuffer ( ) const
nodiscard

Definition at line 844 of file RenderProcess.cpp.

References indirectDrawBuffer.

Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::recordPass2RenderPass(), EngineCore::Renderer::recordRenderPass(), EngineCore::Renderer::renderToXr(), and updateComputePrepareDrawDescriptorSets().

Here is the caller graph for this function:

◆ getLodClusterSurvivorCountBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getLodClusterSurvivorCountBuffer ( ) const
nodiscard

Definition at line 1176 of file RenderProcess.cpp.

References lodClusterSurvivorCountBuffer_.

Referenced by EngineCore::Renderer::renderToXr(), updateComputeBinningAllocatorDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), updateComputeMeshletUnpackingDispatcherDescriptorSets(), and updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getLodClusterSurvivorsBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getLodClusterSurvivorsBuffer ( ) const
nodiscard

LOD cluster-based selection buffer getters.

Definition at line 1172 of file RenderProcess.cpp.

References lodClusterSurvivorsBuffer_.

Referenced by updateComputeBinningAllocatorDescriptorSets(), and updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getLodConfigBuffer()

const VulkanStagedBuffer & EngineCore::RenderProcess::getLodConfigBuffer ( ) const
nodiscard

Definition at line 1180 of file RenderProcess.cpp.

References lodConfigBuffer_.

Referenced by updateComputeObjectCullingDescriptorSets().

Here is the caller graph for this function:

◆ getMeshletCounterBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getMeshletCounterBuffer ( ) const
nodiscard

Definition at line 779 of file RenderProcess.cpp.

References meshletCounterBuffer.

Referenced by EngineCore::Renderer::resetMeshletCullingDispatchBuffers(), updateComputeMeshletCullingDescriptorSets(), and updateComputeMeshletCullingDispatcherDescriptorSets().

Here is the caller graph for this function:

◆ getMeshletToObjectMapBuffer() [1/2]

VulkanStagedBuffer & EngineCore::RenderProcess::getMeshletToObjectMapBuffer ( )
nodiscard

Definition at line 760 of file RenderProcess.cpp.

References meshletToObjectMapBuffer.

Referenced by updateRendererDescriptorSets().

Here is the caller graph for this function:

◆ getMeshletToObjectMapBuffer() [2/2]

const VulkanStagedBuffer & EngineCore::RenderProcess::getMeshletToObjectMapBuffer ( ) const
nodiscard

Definition at line 765 of file RenderProcess.cpp.

References meshletToObjectMapBuffer.

◆ getMeshRenderingBuffer()

const VulkanStagedBuffer & EngineCore::RenderProcess::getMeshRenderingBuffer ( ) const
nodiscard

Definition at line 787 of file RenderProcess.cpp.

References meshRenderingInfoBuffer.

Referenced by updateRendererDescriptorSets().

Here is the caller graph for this function:

◆ getMeshRenderingStagingBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getMeshRenderingStagingBuffer ( ) const
nodiscard

◆ getMirrorViewImageSemaphore()

VkSemaphore EngineCore::RenderProcess::getMirrorViewImageSemaphore ( ) const
nodiscard

Definition at line 595 of file RenderProcess.cpp.

References mirrorViewImageReadySemaphore.

Referenced by EngineCore::Renderer::getCurrentMirrorViewSemaphore().

Here is the caller graph for this function:

◆ getObjectMeshletDataBuffer()

const VulkanStagedBuffer & EngineCore::RenderProcess::getObjectMeshletDataBuffer ( ) const
nodiscard

Definition at line 857 of file RenderProcess.cpp.

References objectMeshletDataBuffer.

◆ getPass1CounterBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getPass1CounterBuffer ( ) const
nodiscard

Definition at line 853 of file RenderProcess.cpp.

References pass1CounterBuffer.

◆ getPerObjectSSBO_StagingBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getPerObjectSSBO_StagingBuffer ( ) const
nodiscard

◆ getPerObjectSSBOBuffer()

const VulkanStagedBuffer & EngineCore::RenderProcess::getPerObjectSSBOBuffer ( ) const
nodiscard

Definition at line 783 of file RenderProcess.cpp.

References perObjectDataBuffer.

◆ getPipelineBinOffsetsBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getPipelineBinOffsetsBuffer ( ) const
nodiscard

Definition at line 974 of file RenderProcess.cpp.

References pipelineBinOffsetsBuffer.

Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::renderToXr(), and updateComputeMeshletUnpackingDescriptorSets().

Here is the caller graph for this function:

◆ getPipelineCountersBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getPipelineCountersBuffer ( ) const
nodiscard

Definition at line 970 of file RenderProcess.cpp.

References pipelineCountersBuffer.

Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::renderToXr(), updateComputeBinningAllocatorDescriptorSets(), and updateComputePrepareDrawDescriptorSets().

Here is the caller graph for this function:

◆ getRenderFinishedSemaphore()

VkSemaphore EngineCore::RenderProcess::getRenderFinishedSemaphore ( ) const
nodiscard

Definition at line 587 of file RenderProcess.cpp.

References renderFinishedSemaphore.

◆ getTransferCommandBuffer()

VkCommandBuffer & EngineCore::RenderProcess::getTransferCommandBuffer ( )
nodiscard

Definition at line 573 of file RenderProcess.cpp.

References transferCommandBuffer.

Referenced by EngineCore::Renderer::getCurrentTransferCommandBuffer(), EngineCore::Renderer::recordTransfer(), and EngineCore::Renderer::submitTransfer().

Here is the caller graph for this function:

◆ getTransferCompleteFence()

VkFence & EngineCore::RenderProcess::getTransferCompleteFence ( )
nodiscard

Definition at line 862 of file RenderProcess.cpp.

References transferCompleteFence.

Referenced by EngineCore::Engine::mainLoop(), EngineCore::Renderer::submitInitialTransfers(), and EngineCore::Renderer::submitTransfer().

Here is the caller graph for this function:

◆ getTransferFenceSubmitted()

bool EngineCore::RenderProcess::getTransferFenceSubmitted ( ) const

Definition at line 878 of file RenderProcess.cpp.

References transferFenceSubmitted.

Referenced by EngineCore::Engine::mainLoop(), and EngineCore::Renderer::submitTransfer().

Here is the caller graph for this function:

◆ getTransferFinishedSemaphore()

VkSemaphore EngineCore::RenderProcess::getTransferFinishedSemaphore ( ) const
nodiscard

Definition at line 583 of file RenderProcess.cpp.

References transferFinishedSemaphore.

◆ getViewProjectionBuffer() [1/2]

VulkanStagedBuffer & EngineCore::RenderProcess::getViewProjectionBuffer ( )
nodiscard

Definition at line 751 of file RenderProcess.cpp.

References viewProjectionBuffer.

Referenced by updateRendererDescriptorSets().

Here is the caller graph for this function:

◆ getViewProjectionBuffer() [2/2]

const VulkanStagedBuffer & EngineCore::RenderProcess::getViewProjectionBuffer ( ) const
nodiscard

Definition at line 755 of file RenderProcess.cpp.

References viewProjectionBuffer.

◆ getVisibleObjectRangesBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVisibleObjectRangesBuffer ( ) const
nodiscard

Definition at line 849 of file RenderProcess.cpp.

References visibleObjectRangesBuffer.

◆ getVSDrawCommandsBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSDrawCommandsBuffer ( ) const
nodiscard

Definition at line 1131 of file RenderProcess.cpp.

References vsDrawCommandsBuffer_.

Referenced by EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), EngineCore::Renderer::renderToXr(), and updateComputeVSPrepareDrawDescriptorSets().

Here is the caller graph for this function:

◆ getVSDrawCountBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSDrawCountBuffer ( ) const
nodiscard

Definition at line 1135 of file RenderProcess.cpp.

References vsDrawCountBuffer_.

Referenced by EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), EngineCore::Renderer::recordVSInstancedDrawingPipeline(), EngineCore::Renderer::renderToXr(), and updateComputeVSPrepareDrawDescriptorSets().

Here is the caller graph for this function:

◆ getVSGeometryCountersBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSGeometryCountersBuffer ( ) const
nodiscard

Definition at line 1123 of file RenderProcess.cpp.

References vsGeometryCountersBuffer_.

Referenced by EngineCore::Renderer::recordVSInstancedDrawingPipeline(), updateComputeVSBinningAllocatorDescriptorSets(), and updateComputeVSPrepareDrawDescriptorSets().

Here is the caller graph for this function:

◆ getVSIndirectDrawBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSIndirectDrawBuffer ( ) const
nodiscard

Legacy VS path buffer getters (backwards compatibility)

Definition at line 1031 of file RenderProcess.cpp.

References vsIndirectDrawBuffer_.

Referenced by EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), and EngineCore::Renderer::renderToXr().

Here is the caller graph for this function:

◆ getVSIndirectDrawCountBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSIndirectDrawCountBuffer ( ) const
nodiscard

Definition at line 1035 of file RenderProcess.cpp.

References vsIndirectDrawCountBuffer_.

Referenced by EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), and EngineCore::Renderer::renderToXr().

Here is the caller graph for this function:

◆ getVSInstanceAllocationsBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSInstanceAllocationsBuffer ( ) const
nodiscard

Definition at line 1119 of file RenderProcess.cpp.

References vsInstanceAllocationsBuffer_.

Referenced by updateComputeVSBinningAllocatorDescriptorSets(), and updateComputeVSInstanceUnpackingDescriptorSets().

Here is the caller graph for this function:

◆ getVSInstanceIdsBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSInstanceIdsBuffer ( ) const
nodiscard

Definition at line 1127 of file RenderProcess.cpp.

References vsInstanceIdsBuffer_.

Referenced by updateComputeVSInstanceUnpackingDescriptorSets(), and updateRendererDescriptorSets().

Here is the caller graph for this function:

◆ getVSVisibleCountBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSVisibleCountBuffer ( ) const
nodiscard

Definition at line 1115 of file RenderProcess.cpp.

References vsVisibleCountBuffer_.

Referenced by EngineCore::Renderer::renderToXr(), updateComputeObjectCullingDescriptorSets(), updateComputeVSBinningAllocatorDescriptorSets(), and updateComputeVSInstanceUnpackingDescriptorSets().

Here is the caller graph for this function:

◆ getVSVisibleInstancesBuffer()

const VulkanBuffer & EngineCore::RenderProcess::getVSVisibleInstancesBuffer ( ) const
nodiscard

Vertex shader path buffer getters (instanced drawing pipeline)

Definition at line 1111 of file RenderProcess.cpp.

References vsVisibleInstancesBuffer_.

Referenced by updateComputeObjectCullingDescriptorSets(), and updateComputeVSBinningAllocatorDescriptorSets().

Here is the caller graph for this function:

◆ processTextureUpload()

void EngineCore::RenderProcess::processTextureUpload ( )

Definition at line 662 of file RenderProcess.cpp.

References context, textureWritesToUpload, and TRACY_ZONE_SCOPED_NAMED.

Referenced by EngineCore::Renderer::renderToXr().

Here is the caller graph for this function:

◆ refreshAllDescriptorSets()

void EngineCore::RenderProcess::refreshAllDescriptorSets ( )

Refreshes all descriptor sets after buffer recreation Call this when RenderingDataManager buffers have been recreated.

Definition at line 238 of file RenderProcess.cpp.

References eyeIndex, updateComputeBinningAllocatorDescriptorSets(), updateComputeMeshletCullingDescriptorSets(), updateComputeMeshletCullingDispatcherDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), updateComputeMeshletUnpackingDispatcherDescriptorSets(), updateComputeObjectCullingDescriptorSets(), updateComputePrepareDrawDescriptorSets(), updateComputeVSBinningAllocatorDescriptorSets(), updateComputeVSInstanceUnpackingDescriptorSets(), updateComputeVSPrepareDrawDescriptorSets(), and updateRendererDescriptorSets().

Referenced by syncWithRenderingDataManager().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setGraphicsFenceSubmitted()

void EngineCore::RenderProcess::setGraphicsFenceSubmitted ( bool isSubmitted)

Definition at line 874 of file RenderProcess.cpp.

References graphicsFenceSubmitted.

Referenced by EngineCore::Engine::mainLoop(), and EngineCore::Renderer::submitGraphics().

Here is the caller graph for this function:

◆ setTransferFenceSubmitted()

void EngineCore::RenderProcess::setTransferFenceSubmitted ( bool isSubmitted)

Definition at line 870 of file RenderProcess.cpp.

References transferFenceSubmitted.

Referenced by EngineCore::Engine::mainLoop(), EngineCore::Renderer::submitInitialTransfers(), and EngineCore::Renderer::submitTransfer().

Here is the caller graph for this function:

◆ syncWithRenderingDataManager()

void EngineCore::RenderProcess::syncWithRenderingDataManager ( RenderingDataManager * rdm)

Sync descriptor sets with RenderingDataManager if data has changed Compares version numbers and updates descriptors if behind. Call this after waiting for the frame's fence (when it's safe to update)

Parameters
rdmPointer to the RenderingDataManager

Definition at line 258 of file RenderProcess.cpp.

References eyeIndex, EngineCore::RenderingDataManager::getDataVersion(), lastSeenDataVersion_, and refreshAllDescriptorSets().

Here is the call graph for this function:

◆ updateComputeBinningAllocatorDescriptorSets()

◆ updateComputeMeshletCullingDescriptorSets()

void EngineCore::RenderProcess::updateComputeMeshletCullingDescriptorSets ( ) const

Definition at line 176 of file RenderProcess.cpp.

References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getBinnedVisibleMeshletIndexBuffer(), getEyeIndex(), getFrustumUBOBuffer(), getMeshletCounterBuffer(), EngineCore::ShaderStage::MeshletCulling::MESHLET_CULLING_BINNED_RENDERING, EngineCore::ShaderStage::MeshletCulling::MESHLET_CULLING_BOUNDS, EngineCore::ShaderStage::MeshletCulling::MESHLET_CULLING_COUNTS, EngineCore::ShaderStage::MeshletCulling::MESHLET_CULLING_FRUSTUM_PLANES, EngineCore::ShaderStage::MeshletCulling::MESHLET_CULLING_INDICES, and renderer.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateComputeMeshletCullingDispatcherDescriptorSets()

void EngineCore::RenderProcess::updateComputeMeshletCullingDispatcherDescriptorSets ( ) const

Definition at line 168 of file RenderProcess.cpp.

References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getEyeIndex(), getMeshletCounterBuffer(), EngineCore::ShaderStage::MeshletCullingDispatch::MESHLET_CULLING_DISPATCH_BUFFER, EngineCore::ShaderStage::MeshletCullingDispatch::MESHLET_CULLING_DISPATCH_COUNTER, and renderer.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateComputeMeshletUnpackingDescriptorSets()

void EngineCore::RenderProcess::updateComputeMeshletUnpackingDescriptorSets ( ) const

◆ updateComputeMeshletUnpackingDispatcherDescriptorSets()

void EngineCore::RenderProcess::updateComputeMeshletUnpackingDispatcherDescriptorSets ( ) const

Definition at line 145 of file RenderProcess.cpp.

References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getEyeIndex(), getLodClusterSurvivorCountBuffer(), EngineCore::ShaderStage::MeshletUnpackingDispatch::MESHLET_UNPACKING_DISPATCH_BUFFER, EngineCore::ShaderStage::MeshletUnpackingDispatch::MESHLET_UNPACKING_DISPATCH_COUNTER, EngineCore::ShaderStage::MeshletUnpackingDispatch::MESHLET_UNPACKING_DISPATCH_LOD_COUNTER, and renderer.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateComputeObjectCullingDescriptorSets()

void EngineCore::RenderProcess::updateComputeObjectCullingDescriptorSets ( VkImageView previousFrameHiZView = VK_NULL_HANDLE) const

Updates object culling descriptor sets.

Parameters
previousFrameHiZViewHi-Z pyramid view from PREVIOUS frame for occlusion culling. If VK_NULL_HANDLE, uses own Hi-Z pyramid (for initial setup).

Definition at line 69 of file RenderProcess.cpp.

References EngineCore::ShaderStage::PrimitiveCulling::CLUSTER_GROUP_DATA, EngineCore::ShaderStage::PrimitiveCulling::CLUSTER_LOD_DATA, COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getCullingFailedBuffer(), getCullingFailedCounterBuffer(), getEyeIndex(), getFrustumUBOBuffer(), getHiZPyramidFullView(), EngineCore::Headset::getHiZSampler(), getHiZViewProjectionBuffer(), getLodClusterSurvivorCountBuffer(), getLodClusterSurvivorsBuffer(), getLodConfigBuffer(), getVSVisibleCountBuffer(), getVSVisibleInstancesBuffer(), EngineCore::ShaderStage::HiZCulling::HIZ_PYRAMID, EngineCore::ShaderStage::HiZCulling::HIZ_PYRAMID_CURRENT, EngineCore::ShaderStage::HiZCulling::HIZ_VIEW_PROJECTION, EngineCore::ShaderStage::PrimitiveCulling::LOD_CLUSTER_SURVIVOR_COUNT, EngineCore::ShaderStage::PrimitiveCulling::LOD_CLUSTER_SURVIVORS, EngineCore::ShaderStage::PrimitiveCulling::LOD_CONFIG, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_CULLING_COUNTER, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_CULLING_DATA, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_CULLING_FAILED, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_CULLING_FAILED_COUNTER, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_CULLING_FRUSTUM_PLANES, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_IDS, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_INSTANCE_CULLING_DATA, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_LOCAL_BOUNDS, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_MESH_GEOMETRY_DATA, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_MESH_UNPACKING_DATA, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_MESHLET_DATA, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_PER_OBJECT_DATA, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_SINGLE_MESHLET_GEO, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_VS_INDIRECT_COUNT, EngineCore::ShaderStage::PrimitiveCulling::PRIMITIVE_VS_INDIRECT_DRAW, and renderer.

Referenced by refreshAllDescriptorSets(), and EngineCore::Renderer::renderToXr().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateComputePrepareDrawDescriptorSets()

void EngineCore::RenderProcess::updateComputePrepareDrawDescriptorSets ( ) const

Definition at line 188 of file RenderProcess.cpp.

References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getEyeIndex(), getIndirectDrawBuffer(), getPipelineCountersBuffer(), EngineCore::ShaderStage::PrepareDraw::PREPARE_DRAW_INDIRECT_DRAW, EngineCore::ShaderStage::PrepareDraw::PREPARE_DRAW_MESHLET_COUNTER, and renderer.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateComputeVSBinningAllocatorDescriptorSets()

void EngineCore::RenderProcess::updateComputeVSBinningAllocatorDescriptorSets ( ) const

◆ updateComputeVSInstanceUnpackingDescriptorSets()

void EngineCore::RenderProcess::updateComputeVSInstanceUnpackingDescriptorSets ( ) const

Definition at line 212 of file RenderProcess.cpp.

References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getEyeIndex(), getVSInstanceAllocationsBuffer(), getVSInstanceIdsBuffer(), getVSVisibleCountBuffer(), renderer, EngineCore::ShaderStage::VSInstanceUnpacking::VS_UNPACKING_ALLOCATIONS, EngineCore::ShaderStage::VSInstanceUnpacking::VS_UNPACKING_INSTANCE_IDS, and EngineCore::ShaderStage::VSInstanceUnpacking::VS_UNPACKING_VISIBLE_COUNT.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateComputeVSPrepareDrawDescriptorSets()

void EngineCore::RenderProcess::updateComputeVSPrepareDrawDescriptorSets ( ) const

Definition at line 222 of file RenderProcess.cpp.

References COMPUTE_GUARD, context, eyeIndex, VulkanHelper::fullBufferInfo(), EngineCore::VulkanBuffer::getBuffer(), getEyeIndex(), getVSDrawCommandsBuffer(), getVSDrawCountBuffer(), getVSGeometryCountersBuffer(), renderer, EngineCore::ShaderStage::VSPrepareDraw::VS_PREPARE_DRAW_COUNT, EngineCore::ShaderStage::VSPrepareDraw::VS_PREPARE_GEOMETRY_COUNTERS, EngineCore::ShaderStage::VSPrepareDraw::VS_PREPARE_INDIRECT_DRAWS, and EngineCore::ShaderStage::VSPrepareDraw::VS_PREPARE_SINGLE_MESHLET_GEO.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateEyeViewProjectionMatrices()

void EngineCore::RenderProcess::updateEyeViewProjectionMatrices ( const Headset * headset)

writes a view projection matrix to an eye

Parameters
headset
Date
2025-06-18
Author
Konstantin Passig

Definition at line 550 of file RenderProcess.cpp.

References EngineCore::getActiveCamera(), EngineCore::Headset::getEyeCount(), EngineCore::Headset::getEyeProjectionMatrix(), EngineCore::CameraComponent::getViewMatrix(), EngineCore::Headset::getViewProjectionMatrix(), and staticVertexUniformData.

Referenced by EngineCore::Renderer::updateViewMatrix().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateFragmentTime()

void EngineCore::RenderProcess::updateFragmentTime ( float time)

Sets the time value for time based fragment shader effects.

Parameters
timetotal time since beginning of play time
Date
2025-06-18
Author
Konstantin Passig

Definition at line 568 of file RenderProcess.cpp.

References staticFragmentUniformData, and TRACY_ZONE_SCOPED_FUNCTION.

Referenced by EngineCore::Renderer::updateCpuRenderResources().

Here is the caller graph for this function:

◆ updateFrustumUBOData()

void EngineCore::RenderProcess::updateFrustumUBOData ( const Headset * headset)

Definition at line 306 of file RenderProcess.cpp.

References eyeIndex, frustumData, EngineCore::Headset::getEyeCount(), staticVertexUniformData, and TRACY_ZONE_SCOPED_FUNCTION.

Referenced by EngineCore::Renderer::updateViewMatrix().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateHiZViewProjectionData()

void EngineCore::RenderProcess::updateHiZViewProjectionData ( const Headset * headset)

Updates Hi-Z view-projection data for occlusion culling Must be called after updateEyeViewProjectionMatrices() so VP matrices are current.

Parameters
headsetHeadset for screen resolution info

Definition at line 802 of file RenderProcess.cpp.

References EngineCore::Headset::getEyeResolution(), getHiZMipLevels(), hiZFirstFrame_, hiZViewProjectionData_, staticVertexUniformData, and TRACY_ZONE_SCOPED_FUNCTION.

Referenced by EngineCore::Renderer::updateViewMatrix().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateLodConfig()

void EngineCore::RenderProcess::updateLodConfig ( const glm::vec3 & cameraPosition,
const glm::mat4 & projMatrix,
float nearPlane,
float screenWidth,
float screenHeight,
float errorThresholdPixels = 1.0f,
bool ditherEnabled = true )

Update LOD configuration with camera and screen info Call this once per frame before dispatching primitive culling.

Parameters
cameraPositionWorld-space camera position
projMatrixProjection matrix (for extracting proj[1][1])
nearPlaneCamera near plane distance
screenWidthRender target width
screenHeightRender target height
errorThresholdPixelsTarget pixel error threshold (default 1.0)
ditherEnabledWhether to use dithered LOD transitions

Definition at line 1184 of file RenderProcess.cpp.

References lodConfigData_.

Referenced by EngineCore::Renderer::renderToXr().

Here is the caller graph for this function:

◆ updateMeshletDataBuffer()

void EngineCore::RenderProcess::updateMeshletDataBuffer ( )

Definition at line 291 of file RenderProcess.cpp.

Referenced by EngineCore::Renderer::updateCpuRenderResources().

Here is the caller graph for this function:

◆ updateMeshRenderingData()

void EngineCore::RenderProcess::updateMeshRenderingData ( )

Definition at line 270 of file RenderProcess.cpp.

Referenced by EngineCore::Renderer::updateCpuRenderResources().

Here is the caller graph for this function:

◆ updateRendererDescriptorSets()

void EngineCore::RenderProcess::updateRendererDescriptorSets ( )

Definition at line 38 of file RenderProcess.cpp.

References EngineCore::DescriptorSetUpdater::addStorageBuffer(), EngineCore::DescriptorSetUpdater::addTextureArrayIf(), EngineCore::DescriptorSetUpdater::addUniformBuffer(), EngineCore::ShaderStage::Graphics::BINNED_VISIBLE_MESHLET_INDEX_BUFFER, context, EngineCore::DIFFUSE_FLAT_COLOR, EngineCore::DIFFUSE_SHADER, EngineCore::DYNAMIC_TEXTURES, VulkanHelper::fullBufferInfo(), getBinnedVisibleMeshletIndexBuffer(), getMeshletToObjectMapBuffer(), getMeshRenderingBuffer(), getViewProjectionBuffer(), getVSInstanceIdsBuffer(), GRAPHICS_GUARD, graphicsDescriptorSet, EngineCore::L0_SHADER, EngineCore::L1_SHADER, EngineCore::L2_SHADER, EngineCore::ShaderStage::Graphics::MATERIAL_DIFFUSE_FLAT_COLOR, EngineCore::ShaderStage::Graphics::MATERIAL_DIFFUSE_SHADER, EngineCore::ShaderStage::Graphics::MATERIAL_DYNAMIC_TEXTURES, EngineCore::ShaderStage::Graphics::MATERIAL_L0, EngineCore::ShaderStage::Graphics::MATERIAL_L1, EngineCore::ShaderStage::Graphics::MATERIAL_L2, EngineCore::ShaderStage::Graphics::MATERIAL_MOVABLE_DIFFUSE, EngineCore::ShaderStage::Graphics::MATERIAL_NORMALS, EngineCore::ShaderStage::Graphics::MATERIAL_STATIC_LIGHTMAP, EngineCore::ShaderStage::Graphics::MESH_BUFFER, EngineCore::ShaderStage::Graphics::MESH_PRIMITIVE_BUFFER, EngineCore::ShaderStage::Graphics::MESHLET_BUFFER, EngineCore::ShaderStage::Graphics::MESHLET_TO_OBJECT_MAP_BUFFER, EngineCore::ShaderStage::Graphics::MESHLET_TRIANGLES_BUFFER, EngineCore::MOVABLE_DIFFUSE_SHADER, EngineCore::NORMALS_SHADER, EngineCore::ShaderStage::Graphics::PER_OBJECT_SSBO, renderer, EngineCore::STATIC_LIGHTMAP, EngineCore::ShaderStage::Graphics::TEXTURE_ARRAY, EngineCore::DescriptorSetUpdater::update(), EngineCore::ShaderStage::Graphics::VERTEX_BUFFER, EngineCore::ShaderStage::Graphics::VIEW_PROJECTION_UBO, and EngineCore::ShaderStage::Graphics::VS_INSTANCE_IDS.

Referenced by refreshAllDescriptorSets().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateSSBO()

void EngineCore::RenderProcess::updateSSBO ( const Renderer * renderer)

Definition at line 283 of file RenderProcess.cpp.

References renderer.

Referenced by EngineCore::Renderer::updateCpuRenderResources().

Here is the caller graph for this function:

◆ uploadFrustumUBO()

VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadFrustumUBO ( )

Definition at line 337 of file RenderProcess.cpp.

References context, frustumData, frustumDataBuffer, and TRACY_ZONE_SCOPED_NAMED.

◆ uploadHiZViewProjectionUBO()

VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadHiZViewProjectionUBO ( )

Uploads Hi-Z view-projection UBO to GPU.

Returns
Sync objects for the staged buffer transfer

Definition at line 829 of file RenderProcess.cpp.

References context, hiZViewProjectionBuffer_, hiZViewProjectionData_, and TRACY_ZONE_SCOPED_NAMED.

◆ uploadLodConfigBuffer()

VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadLodConfigBuffer ( )

Upload LOD config buffer to GPU.

Returns
Sync objects for the staged buffer transfer

Definition at line 1196 of file RenderProcess.cpp.

References context, lodConfigBuffer_, and lodConfigData_.

Referenced by EngineCore::Renderer::renderToXr().

Here is the caller graph for this function:

◆ uploadMeshRenderingStagingData()

VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadMeshRenderingStagingData ( )

Definition at line 276 of file RenderProcess.cpp.

◆ uploadNewTextures()

void EngineCore::RenderProcess::uploadNewTextures ( const std::vector< Texture * > & textures,
uint32_t firstIndex ) const

◆ uploadSSBOStagingBuffer()

VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadSSBOStagingBuffer ( )

Definition at line 299 of file RenderProcess.cpp.

◆ uploadUniformBufferData()

VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadUniformBufferData ( )

Member Data Documentation

◆ allocationsBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::allocationsBuffer
private

Binning allocator stage buffers (Stage 1)

PrimitiveAllocation structs for Stage 2

Definition at line 235 of file RenderProcess.h.

Referenced by cleanup(), createBinningAllocatorBuffers(), ensureBufferSizes(), and getAllocationsBuffer().

◆ binnedVisibleMeshletIndexBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::binnedVisibleMeshletIndexBuffer
private

◆ bufferUpdateThreadPool

BS_tracy::tracy_thread_pool<BS_tracy::tp::none> EngineCore::RenderProcess::bufferUpdateThreadPool
private

Definition at line 322 of file RenderProcess.h.

Referenced by RenderProcess().

◆ context

◆ countDispatcherCounter

std::optional<VulkanBuffer> EngineCore::RenderProcess::countDispatcherCounter
private

Definition at line 230 of file RenderProcess.h.

Referenced by cleanup(), and createCountDispatcherBuffers().

◆ countDispatcherDispatchBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::countDispatcherDispatchBuffer
private

Definition at line 231 of file RenderProcess.h.

Referenced by cleanup(), and createCountDispatcherBuffers().

◆ cullingFailedBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::cullingFailedBuffer
private

Two-pass occlusion culling buffers.

Object IDs that failed Pass 1 Hi-Z test

Definition at line 242 of file RenderProcess.h.

Referenced by cleanup(), createCullingFailedBuffers(), ensureBufferSizes(), and getCullingFailedBuffer().

◆ cullingFailedCounterBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::cullingFailedCounterBuffer
private

Atomic counter for failed objects.

Definition at line 243 of file RenderProcess.h.

Referenced by cleanup(), createCullingFailedBuffers(), and getCullingFailedCounterBuffer().

◆ dispatcherDispatchBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::dispatcherDispatchBuffer
private

Definition at line 239 of file RenderProcess.h.

Referenced by cleanup(), and createDispatcherDispatchBuffer().

◆ eyeIndex

◆ frustumData

FrustumPlanes EngineCore::RenderProcess::frustumData {}

Rendering Resource.

Date
2025-09-20
Author
Konstantin Passig

Contains the frustum planes for both eyes. Cpu side data. The gpu buffer is EngineCore::RenderProcess::frustumDataBuffer

Definition at line 291 of file RenderProcess.h.

Referenced by updateFrustumUBOData(), and uploadFrustumUBO().

◆ frustumDataBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::frustumDataBuffer
private

◆ graphicsCommandBuffer

VkCommandBuffer EngineCore::RenderProcess::graphicsCommandBuffer = VK_NULL_HANDLE
private

Definition at line 415 of file RenderProcess.h.

Referenced by getGraphicsCommandBuffer().

◆ graphicsCompleteFence

VkFence EngineCore::RenderProcess::graphicsCompleteFence = VK_NULL_HANDLE
private

Definition at line 418 of file RenderProcess.h.

Referenced by cleanup(), and getGraphicsCompleteFence().

◆ graphicsDescriptorSet

VkDescriptorSet EngineCore::RenderProcess::graphicsDescriptorSet = VK_NULL_HANDLE
private

◆ graphicsFenceSubmitted

bool EngineCore::RenderProcess::graphicsFenceSubmitted = true
private

Definition at line 423 of file RenderProcess.h.

Referenced by getGraphicsFenceSubmitted(), and setGraphicsFenceSubmitted().

◆ hiZFirstFrame_

bool EngineCore::RenderProcess::hiZFirstFrame_ = true
private

Definition at line 298 of file RenderProcess.h.

Referenced by updateHiZViewProjectionData().

◆ hiZPyramid_

HiZPyramid EngineCore::RenderProcess::hiZPyramid_
private

◆ hiZViewProjectionBuffer_

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::hiZViewProjectionBuffer_
private

◆ hiZViewProjectionData_

HiZViewProjectionData EngineCore::RenderProcess::hiZViewProjectionData_ {}
private

Hi-Z view-projection data for occlusion culling (per-frame to avoid races)

Definition at line 296 of file RenderProcess.h.

Referenced by updateHiZViewProjectionData(), and uploadHiZViewProjectionUBO().

◆ indirectDrawBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::indirectDrawBuffer
private

Definition at line 232 of file RenderProcess.h.

Referenced by cleanup(), createIndirectDrawBuffer(), and getIndirectDrawBuffer().

◆ lastSeenDataVersion_

uint64_t EngineCore::RenderProcess::lastSeenDataVersion_ = 0
private

Last seen data version from RenderingDataManager Used to detect when descriptor sets need refreshing

Definition at line 427 of file RenderProcess.h.

Referenced by syncWithRenderingDataManager().

◆ lodClusterSurvivorCountBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::lodClusterSurvivorCountBuffer_
private

Atomic counter for LOD cluster survivors.

Definition at line 267 of file RenderProcess.h.

Referenced by createLodBuffers(), and getLodClusterSurvivorCountBuffer().

◆ lodClusterSurvivorsBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::lodClusterSurvivorsBuffer_
private

LOD cluster-based selection buffers.

ClusterSurvivor output from culling

Definition at line 266 of file RenderProcess.h.

Referenced by createLodBuffers(), and getLodClusterSurvivorsBuffer().

◆ lodConfigBuffer_

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::lodConfigBuffer_
private

LodConfigUBO for camera/screen info.

Definition at line 268 of file RenderProcess.h.

Referenced by createLodBuffers(), getLodConfigBuffer(), and uploadLodConfigBuffer().

◆ lodConfigData_

LodConfigUBO EngineCore::RenderProcess::lodConfigData_ {}
private

CPU-side LOD config data.

Definition at line 269 of file RenderProcess.h.

Referenced by updateLodConfig(), and uploadLodConfigBuffer().

◆ meshletCounterBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::meshletCounterBuffer
private

Definition at line 227 of file RenderProcess.h.

Referenced by cleanup(), createMeshletCounterBuffer(), and getMeshletCounterBuffer().

◆ meshletToObjectMapBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::meshletToObjectMapBuffer
private

◆ meshRenderingInfoBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::meshRenderingInfoBuffer
private

◆ mirrorViewImageReadySemaphore

VkSemaphore EngineCore::RenderProcess::mirrorViewImageReadySemaphore = VK_NULL_HANDLE
private

Definition at line 431 of file RenderProcess.h.

Referenced by cleanup(), and getMirrorViewImageSemaphore().

◆ objectMeshletData

std::vector<PrimitiveMeshletData> EngineCore::RenderProcess::objectMeshletData {}
private

Definition at line 216 of file RenderProcess.h.

Referenced by createObjectMeshletDataBuffer().

◆ objectMeshletDataBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::objectMeshletDataBuffer
private

◆ pass1CounterBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::pass1CounterBuffer
private

Definition at line 229 of file RenderProcess.h.

Referenced by cleanup(), createPass1CounterBuffer(), and getPass1CounterBuffer().

◆ perObjectData

std::vector<PerObjectData> EngineCore::RenderProcess::perObjectData

Rendering resource.

Author
Konstantin Passig

20.09.2025

Definition at line 280 of file RenderProcess.h.

Referenced by createPerObjectSSBOBuffer(), and ensureBufferSizes().

◆ perObjectDataBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::perObjectDataBuffer
private

◆ physicalDevice

VkPhysicalDevice EngineCore::RenderProcess::physicalDevice = VK_NULL_HANDLE
private

Definition at line 211 of file RenderProcess.h.

◆ pipelineBinOffsetsBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::pipelineBinOffsetsBuffer
private

Prefix sum of pipeline counters.

Definition at line 237 of file RenderProcess.h.

Referenced by cleanup(), createBinningAllocatorBuffers(), and getPipelineBinOffsetsBuffer().

◆ pipelineCountersBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::pipelineCountersBuffer
private

Per-pipeline meshlet counters (atomic)

Definition at line 236 of file RenderProcess.h.

Referenced by cleanup(), createBinningAllocatorBuffers(), and getPipelineCountersBuffer().

◆ pipelineIndices

std::unordered_map<GraphicsPipeline *, uint32_t> EngineCore::RenderProcess::pipelineIndices
private

Definition at line 271 of file RenderProcess.h.

◆ renderer

◆ renderFinishedSemaphore

VkSemaphore EngineCore::RenderProcess::renderFinishedSemaphore = VK_NULL_HANDLE
private

Definition at line 429 of file RenderProcess.h.

Referenced by cleanup(), and getRenderFinishedSemaphore().

◆ sceneManager

const std::unique_ptr<SceneManager>& EngineCore::RenderProcess::sceneManager
private

Definition at line 201 of file RenderProcess.h.

Referenced by RenderProcess().

◆ stagingBuffersForCleanup

std::vector<VulkanBuffer> EngineCore::RenderProcess::stagingBuffersForCleanup
private

Definition at line 182 of file RenderProcess.h.

Referenced by addStagingBufferForCleanup(), and cleanupStagingBuffer().

◆ staticFragmentUniformData

StaticFragmentUniformData EngineCore::RenderProcess::staticFragmentUniformData
private

Definition at line 195 of file RenderProcess.h.

Referenced by updateFragmentTime().

◆ staticVertexUniformData

◆ textureWritesToUpload

std::vector<TextureWriteContainer *> EngineCore::RenderProcess::textureWritesToUpload
private

Definition at line 209 of file RenderProcess.h.

Referenced by addTexturesToUpload(), cleanup(), and processTextureUpload().

◆ transferCommandBuffer

VkCommandBuffer EngineCore::RenderProcess::transferCommandBuffer = VK_NULL_HANDLE
private

Definition at line 414 of file RenderProcess.h.

Referenced by getTransferCommandBuffer().

◆ transferCompleteFence

VkFence EngineCore::RenderProcess::transferCompleteFence = VK_NULL_HANDLE
private

Definition at line 417 of file RenderProcess.h.

Referenced by cleanup(), and getTransferCompleteFence().

◆ transferFenceSubmitted

bool EngineCore::RenderProcess::transferFenceSubmitted = true
private

Definition at line 422 of file RenderProcess.h.

Referenced by getTransferFenceSubmitted(), and setTransferFenceSubmitted().

◆ transferFinishedSemaphore

VkSemaphore EngineCore::RenderProcess::transferFinishedSemaphore = VK_NULL_HANDLE
private

Definition at line 430 of file RenderProcess.h.

Referenced by cleanup(), and getTransferFinishedSemaphore().

◆ unifiedMeshes

std::vector<GpuMeshDescription> EngineCore::RenderProcess::unifiedMeshes
private

Definition at line 300 of file RenderProcess.h.

Referenced by createMeshRenderingInfoBuffers(), and ensureBufferSizes().

◆ viewProjectionBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderProcess::viewProjectionBuffer
private

◆ visibleObjectRangesBuffer

std::optional<VulkanBuffer> EngineCore::RenderProcess::visibleObjectRangesBuffer
private

◆ vsDrawCommandsBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsDrawCommandsBuffer_
private

Stage 3: VSPrepareDraw outputs.

VkDrawIndexedIndirectCommand array

Definition at line 258 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSDrawCommandsBuffer().

◆ vsDrawCountBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsDrawCountBuffer_
private

Number of draw commands.

Definition at line 259 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSDrawCountBuffer().

◆ vsGeometryCountersBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsGeometryCountersBuffer_
private

Atomic instance count per geometry type.

Definition at line 252 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSGeometryCountersBuffer().

◆ vsIndirectDrawBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsIndirectDrawBuffer_
private

Legacy: was VkDrawIndexedIndirectCommand array.

Definition at line 262 of file RenderProcess.h.

Referenced by cleanup(), createVSIndirectDrawBuffers(), ensureBufferSizes(), and getVSIndirectDrawBuffer().

◆ vsIndirectDrawCountBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsIndirectDrawCountBuffer_
private

Legacy: was draw count.

Definition at line 263 of file RenderProcess.h.

Referenced by cleanup(), createVSIndirectDrawBuffers(), and getVSIndirectDrawCountBuffer().

◆ vsInstanceAllocationsBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsInstanceAllocationsBuffer_
private

Stage 1: VSBinningAllocator outputs.

(primitiveID, geoIndex, writeOffset) per survivor

Definition at line 251 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSInstanceAllocationsBuffer().

◆ vsInstanceIdsBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsInstanceIdsBuffer_
private

Stage 2: VSInstanceUnpacking outputs.

Instance ID lookup for vertex shader

Definition at line 255 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSInstanceIdsBuffer().

◆ vsVisibleCountBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsVisibleCountBuffer_
private

Number of visible VS path primitives.

Definition at line 248 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSVisibleCountBuffer().

◆ vsVisibleInstancesBuffer_

std::optional<VulkanBuffer> EngineCore::RenderProcess::vsVisibleInstancesBuffer_
private

Primitive IDs from culling (uint array)

Vertex shader path buffers (for single-meshlet geometry) Stage 0: Culling outputs primitive IDs

Definition at line 247 of file RenderProcess.h.

Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSVisibleInstancesBuffer().


The documentation for this class was generated from the following files:
  • /home/magerbeton/Documents/gl3-vulkan/Engine/include/Engine/Renderer/RenderProcess.h
  • /home/magerbeton/Documents/gl3-vulkan/Engine/src/Engine/Renderer/RenderProcess.cpp