|
Vulkan Schnee 0.0.1
High-performance rendering engine
|
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>
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 () |
| VulkanStagedBuffer & | getViewProjectionBuffer () |
| const VulkanStagedBuffer & | getViewProjectionBuffer () const |
| VulkanStagedBuffer & | getMeshletToObjectMapBuffer () |
| const VulkanStagedBuffer & | getMeshletToObjectMapBuffer () const |
| VulkanBuffer & | getBinnedVisibleMeshletIndexBuffer () |
| const VulkanBuffer & | getBinnedVisibleMeshletIndexBuffer () const |
| const VulkanBuffer & | getMeshletCounterBuffer () const |
| const VulkanStagedBuffer & | getPerObjectSSBOBuffer () const |
| const VulkanBuffer & | getPerObjectSSBO_StagingBuffer () const |
| const VulkanStagedBuffer & | getMeshRenderingBuffer () const |
| const VulkanBuffer & | getMeshRenderingStagingBuffer () const |
| const VulkanStagedBuffer & | getFrustumUBOBuffer () const |
| const VulkanStagedBuffer & | getHiZViewProjectionBuffer () const |
| const VulkanBuffer & | getIndirectDrawBuffer () const |
| const VulkanBuffer & | getVisibleObjectRangesBuffer () const |
| const VulkanBuffer & | getPass1CounterBuffer () const |
| const VulkanStagedBuffer & | getObjectMeshletDataBuffer () const |
| const VulkanBuffer & | getAllocationsBuffer () const |
| Binning allocator stage buffer getters. | |
| const VulkanBuffer & | getPipelineCountersBuffer () const |
| const VulkanBuffer & | getPipelineBinOffsetsBuffer () const |
| const VulkanBuffer & | getCullingFailedBuffer () const |
| Two-pass occlusion culling buffer getters. | |
| const VulkanBuffer & | getCullingFailedCounterBuffer () const |
| const VulkanBuffer & | getVSVisibleInstancesBuffer () const |
| Vertex shader path buffer getters (instanced drawing pipeline) | |
| const VulkanBuffer & | getVSVisibleCountBuffer () const |
| const VulkanBuffer & | getVSInstanceAllocationsBuffer () const |
| const VulkanBuffer & | getVSGeometryCountersBuffer () const |
| const VulkanBuffer & | getVSInstanceIdsBuffer () const |
| const VulkanBuffer & | getVSDrawCommandsBuffer () const |
| const VulkanBuffer & | getVSDrawCountBuffer () const |
| const VulkanBuffer & | getVSIndirectDrawBuffer () const |
| Legacy VS path buffer getters (backwards compatibility) | |
| const VulkanBuffer & | getVSIndirectDrawCountBuffer () const |
| const VulkanBuffer & | getLodClusterSurvivorsBuffer () const |
| LOD cluster-based selection buffer getters. | |
| const VulkanBuffer & | getLodClusterSurvivorCountBuffer () const |
| const VulkanStagedBuffer & | getLodConfigBuffer () 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< PerObjectData > | perObjectData |
| 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 | |
| Renderer * | renderer = nullptr |
| ApplicationContext * | context = nullptr |
| uint32_t | eyeIndex = 0u |
| std::vector< VulkanBuffer > | stagingBuffersForCleanup |
| StaticFragmentUniformData | staticFragmentUniformData |
| const std::unique_ptr< SceneManager > & | sceneManager |
| std::vector< TextureWriteContainer * > | textureWritesToUpload |
| VkPhysicalDevice | physicalDevice = VK_NULL_HANDLE |
| VkDescriptorSet | graphicsDescriptorSet = VK_NULL_HANDLE |
| std::vector< PrimitiveMeshletData > | objectMeshletData {} |
| std::optional< VulkanStagedBuffer > | viewProjectionBuffer |
| std::optional< VulkanStagedBuffer > | meshletToObjectMapBuffer |
| std::optional< VulkanStagedBuffer > | perObjectDataBuffer |
| std::optional< VulkanStagedBuffer > | objectMeshletDataBuffer |
| std::optional< VulkanStagedBuffer > | frustumDataBuffer |
| std::optional< VulkanStagedBuffer > | meshRenderingInfoBuffer |
| std::optional< VulkanBuffer > | binnedVisibleMeshletIndexBuffer |
| std::optional< VulkanBuffer > | meshletCounterBuffer |
| std::optional< VulkanBuffer > | visibleObjectRangesBuffer |
| std::optional< VulkanBuffer > | pass1CounterBuffer |
| std::optional< VulkanBuffer > | countDispatcherCounter |
| std::optional< VulkanBuffer > | countDispatcherDispatchBuffer |
| std::optional< VulkanBuffer > | indirectDrawBuffer |
| std::optional< VulkanBuffer > | allocationsBuffer |
| Binning allocator stage buffers (Stage 1) | |
| std::optional< VulkanBuffer > | pipelineCountersBuffer |
| Per-pipeline meshlet counters (atomic) | |
| std::optional< VulkanBuffer > | pipelineBinOffsetsBuffer |
| Prefix sum of pipeline counters. | |
| std::optional< VulkanBuffer > | dispatcherDispatchBuffer |
| std::optional< VulkanBuffer > | cullingFailedBuffer |
| Two-pass occlusion culling buffers. | |
| std::optional< VulkanBuffer > | cullingFailedCounterBuffer |
| Atomic counter for failed objects. | |
| std::optional< VulkanBuffer > | vsVisibleInstancesBuffer_ |
| Primitive IDs from culling (uint array) | |
| std::optional< VulkanBuffer > | vsVisibleCountBuffer_ |
| Number of visible VS path primitives. | |
| std::optional< VulkanBuffer > | vsInstanceAllocationsBuffer_ |
| Stage 1: VSBinningAllocator outputs. | |
| std::optional< VulkanBuffer > | vsGeometryCountersBuffer_ |
| Atomic instance count per geometry type. | |
| std::optional< VulkanBuffer > | vsInstanceIdsBuffer_ |
| Stage 2: VSInstanceUnpacking outputs. | |
| std::optional< VulkanBuffer > | vsDrawCommandsBuffer_ |
| Stage 3: VSPrepareDraw outputs. | |
| std::optional< VulkanBuffer > | vsDrawCountBuffer_ |
| Number of draw commands. | |
| std::optional< VulkanBuffer > | vsIndirectDrawBuffer_ |
| Legacy: was VkDrawIndexedIndirectCommand array. | |
| std::optional< VulkanBuffer > | vsIndirectDrawCountBuffer_ |
| Legacy: was draw count. | |
| std::optional< VulkanBuffer > | lodClusterSurvivorsBuffer_ |
| LOD cluster-based selection buffers. | |
| std::optional< VulkanBuffer > | lodClusterSurvivorCountBuffer_ |
| Atomic counter for LOD cluster survivors. | |
| std::optional< VulkanStagedBuffer > | lodConfigBuffer_ |
| 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< VulkanStagedBuffer > | hiZViewProjectionBuffer_ |
| bool | hiZFirstFrame_ = true |
| std::vector< GpuMeshDescription > | unifiedMeshes |
| 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_ |
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.
| 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.
| void EngineCore::RenderProcess::addStagingBufferForCleanup | ( | VulkanBuffer && | stagingBuffer | ) |
Definition at line 680 of file RenderProcess.cpp.
References stagingBuffersForCleanup.
Referenced by EngineCore::Texture::createDataUploadCommand().
| void EngineCore::RenderProcess::addTexturesToUpload | ( | const std::vector< Texture * > & | textures, |
| uint32_t | firstIndex ) |
Definition at line 634 of file RenderProcess.cpp.
References graphicsDescriptorSet, EngineCore::RenderProcess::TextureWriteContainer::imageInfos, EngineCore::ShaderStage::Graphics::TEXTURE_ARRAY, textureWritesToUpload, TRACY_ZONE_SCOPED_NAMED, and EngineCore::RenderProcess::TextureWriteContainer::write.
| void EngineCore::RenderProcess::cleanup | ( | ) |
Cleans up all artifacts of the class.
Definition at line 488 of file RenderProcess.cpp.
References allocationsBuffer, binnedVisibleMeshletIndexBuffer, cleanupStagingBuffer(), context, countDispatcherCounter, countDispatcherDispatchBuffer, cullingFailedBuffer, cullingFailedCounterBuffer, dispatcherDispatchBuffer, frustumDataBuffer, graphicsCompleteFence, hiZPyramid_, hiZViewProjectionBuffer_, indirectDrawBuffer, meshletCounterBuffer, meshletToObjectMapBuffer, meshRenderingInfoBuffer, mirrorViewImageReadySemaphore, objectMeshletDataBuffer, pass1CounterBuffer, perObjectDataBuffer, pipelineBinOffsetsBuffer, pipelineCountersBuffer, renderFinishedSemaphore, textureWritesToUpload, transferCompleteFence, transferFinishedSemaphore, viewProjectionBuffer, visibleObjectRangesBuffer, vsDrawCommandsBuffer_, vsDrawCountBuffer_, vsGeometryCountersBuffer_, vsIndirectDrawBuffer_, vsIndirectDrawCountBuffer_, vsInstanceAllocationsBuffer_, vsInstanceIdsBuffer_, vsVisibleCountBuffer_, and vsVisibleInstancesBuffer_.
| 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().
|
private |
Definition at line 701 of file RenderProcess.cpp.
References binnedVisibleMeshletIndexBuffer, context, eyeIndex, MAX_MESHLETS_PER_BIN, and MAX_PIPELINES.
|
private |
Definition at line 935 of file RenderProcess.cpp.
References allocationsBuffer, context, eyeIndex, MAX_PIPELINES, pipelineBinOffsetsBuffer, and pipelineCountersBuffer.
|
private |
Definition at line 894 of file RenderProcess.cpp.
References context, countDispatcherCounter, and countDispatcherDispatchBuffer.
|
private |
Definition at line 978 of file RenderProcess.cpp.
References context, cullingFailedBuffer, cullingFailedCounterBuffer, and eyeIndex.
|
private |
Definition at line 887 of file RenderProcess.cpp.
References context, and dispatcherDispatchBuffer.
|
private |
Definition at line 735 of file RenderProcess.cpp.
References context, eyeIndex, and frustumDataBuffer.
|
private |
Definition at line 1299 of file RenderProcess.cpp.
References context, eyeIndex, VulkanHelper::findSuitableMemoryType(), hiZPyramid_, and VulkanHelper::setObjectName().
|
private |
Definition at line 795 of file RenderProcess.cpp.
References context, eyeIndex, and hiZViewProjectionBuffer_.
|
private |
Definition at line 742 of file RenderProcess.cpp.
References context, eyeIndex, indirectDrawBuffer, MAX_PIPELINES, renderer, and VulkanHelper::uploadDataToExistingBuffer().
|
private |
Definition at line 1139 of file RenderProcess.cpp.
References context, eyeIndex, lodClusterSurvivorCountBuffer_, lodClusterSurvivorsBuffer_, and lodConfigBuffer_.
|
private |
Definition at line 708 of file RenderProcess.cpp.
References context, eyeIndex, MAX_MESHLETS_PER_BIN, MAX_PIPELINES, and meshletCounterBuffer.
|
private |
Definition at line 928 of file RenderProcess.cpp.
References context, eyeIndex, MAX_MESHLETS_PER_BIN, and meshletToObjectMapBuffer.
|
private |
Definition at line 725 of file RenderProcess.cpp.
References context, eyeIndex, meshRenderingInfoBuffer, and unifiedMeshes.
|
private |
Definition at line 692 of file RenderProcess.cpp.
References context, eyeIndex, MAX_MESHLETS_PER_BIN, objectMeshletData, and objectMeshletDataBuffer.
|
private |
Definition at line 914 of file RenderProcess.cpp.
References context, eyeIndex, and pass1CounterBuffer.
|
private |
Definition at line 715 of file RenderProcess.cpp.
References context, eyeIndex, perObjectData, and perObjectDataBuffer.
|
private |
Definition at line 921 of file RenderProcess.cpp.
References context, eyeIndex, and viewProjectionBuffer.
|
private |
Definition at line 905 of file RenderProcess.cpp.
References context, eyeIndex, and visibleObjectRangesBuffer.
|
private |
Definition at line 1007 of file RenderProcess.cpp.
References context, eyeIndex, vsIndirectDrawBuffer_, and vsIndirectDrawCountBuffer_.
|
private |
Definition at line 1039 of file RenderProcess.cpp.
References context, eyeIndex, vsDrawCommandsBuffer_, vsDrawCountBuffer_, vsGeometryCountersBuffer_, vsInstanceAllocationsBuffer_, vsInstanceIdsBuffer_, vsVisibleCountBuffer_, and vsVisibleInstancesBuffer_.
| bool EngineCore::RenderProcess::ensureBufferSizes | ( | uint32_t | primitiveCount | ) |
Ensures RenderProcess buffers have sufficient capacity for the given primitive count Dynamically resizes buffers if needed.
| primitiveCount | Number of primitives in the scene |
Definition at line 1200 of file RenderProcess.cpp.
References allocationsBuffer, cullingFailedBuffer, eyeIndex, meshRenderingInfoBuffer, perObjectData, perObjectDataBuffer, renderer, unifiedMeshes, visibleObjectRangesBuffer, and vsIndirectDrawBuffer_.
|
nodiscard |
Binning allocator stage buffer getters.
Definition at line 966 of file RenderProcess.cpp.
References allocationsBuffer.
Referenced by updateComputeBinningAllocatorDescriptorSets(), and updateComputeMeshletUnpackingDescriptorSets().
|
nodiscard |
Definition at line 770 of file RenderProcess.cpp.
References binnedVisibleMeshletIndexBuffer.
Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::renderToXr(), updateComputeMeshletCullingDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), and updateRendererDescriptorSets().
|
nodiscard |
Definition at line 775 of file RenderProcess.cpp.
References binnedVisibleMeshletIndexBuffer.
|
nodiscard |
Two-pass occlusion culling buffer getters.
Definition at line 999 of file RenderProcess.cpp.
References cullingFailedBuffer.
Referenced by updateComputeObjectCullingDescriptorSets().
|
nodiscard |
Definition at line 1003 of file RenderProcess.cpp.
References cullingFailedCounterBuffer.
Referenced by EngineCore::Renderer::renderToXr(), and updateComputeObjectCullingDescriptorSets().
| uint32_t EngineCore::RenderProcess::getEyeIndex | ( | ) | const |
Definition at line 606 of file RenderProcess.cpp.
References eyeIndex.
Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVSInstancedDrawingPipeline(), EngineCore::Renderer::renderToXr(), updateComputeBinningAllocatorDescriptorSets(), updateComputeMeshletCullingDescriptorSets(), updateComputeMeshletCullingDispatcherDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), updateComputeMeshletUnpackingDispatcherDescriptorSets(), updateComputeObjectCullingDescriptorSets(), updateComputePrepareDrawDescriptorSets(), updateComputeVSBinningAllocatorDescriptorSets(), updateComputeVSInstanceUnpackingDescriptorSets(), and updateComputeVSPrepareDrawDescriptorSets().
|
nodiscard |
Definition at line 791 of file RenderProcess.cpp.
References frustumDataBuffer.
Referenced by updateComputeMeshletCullingDescriptorSets(), and updateComputeObjectCullingDescriptorSets().
|
nodiscard |
Definition at line 578 of file RenderProcess.cpp.
References graphicsCommandBuffer.
Referenced by EngineCore::Renderer::getCurrentRenderingCommandBuffer(), EngineCore::Renderer::recordHiZGeneration(), EngineCore::Renderer::recordHiZGenerationSPD(), EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::recordPass2RenderPass(), EngineCore::Renderer::recordRenderPass(), EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), EngineCore::Renderer::recordVSInstancedDrawingPipeline(), EngineCore::Renderer::renderToXr(), and EngineCore::Renderer::submitGraphics().
|
nodiscard |
Definition at line 866 of file RenderProcess.cpp.
References graphicsCompleteFence.
Referenced by EngineCore::Engine::mainLoop(), and EngineCore::Renderer::submitGraphics().
|
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().
| bool EngineCore::RenderProcess::getGraphicsFenceSubmitted | ( | ) | const |
Definition at line 882 of file RenderProcess.cpp.
References graphicsFenceSubmitted.
Referenced by EngineCore::Engine::mainLoop().
|
inlinenodiscard |
Definition at line 456 of file RenderProcess.h.
References hiZPyramid_.
Referenced by EngineCore::Renderer::recordHiZGeneration(), and EngineCore::Renderer::recordHiZGenerationSPD().
|
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().
|
inlinenodiscard |
Definition at line 453 of file RenderProcess.h.
References hiZPyramid_.
Referenced by EngineCore::Renderer::renderToXr(), and updateComputeObjectCullingDescriptorSets().
|
inlinenodiscard |
Definition at line 452 of file RenderProcess.h.
References hiZPyramid_.
Referenced by EngineCore::Renderer::recordHiZGeneration(), and EngineCore::Renderer::recordHiZGenerationSPD().
|
inlinenodiscard |
Definition at line 454 of file RenderProcess.h.
References hiZPyramid_.
Referenced by EngineCore::Renderer::updateHiZMipDescriptorSets(), and EngineCore::Renderer::updateHiZSPDDescriptorSets().
|
nodiscard |
Definition at line 840 of file RenderProcess.cpp.
References hiZViewProjectionBuffer_.
Referenced by updateComputeObjectCullingDescriptorSets().
|
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().
|
nodiscard |
Definition at line 1176 of file RenderProcess.cpp.
References lodClusterSurvivorCountBuffer_.
Referenced by EngineCore::Renderer::renderToXr(), updateComputeBinningAllocatorDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), updateComputeMeshletUnpackingDispatcherDescriptorSets(), and updateComputeObjectCullingDescriptorSets().
|
nodiscard |
LOD cluster-based selection buffer getters.
Definition at line 1172 of file RenderProcess.cpp.
References lodClusterSurvivorsBuffer_.
Referenced by updateComputeBinningAllocatorDescriptorSets(), and updateComputeObjectCullingDescriptorSets().
|
nodiscard |
Definition at line 1180 of file RenderProcess.cpp.
References lodConfigBuffer_.
Referenced by updateComputeObjectCullingDescriptorSets().
|
nodiscard |
Definition at line 779 of file RenderProcess.cpp.
References meshletCounterBuffer.
Referenced by EngineCore::Renderer::resetMeshletCullingDispatchBuffers(), updateComputeMeshletCullingDescriptorSets(), and updateComputeMeshletCullingDispatcherDescriptorSets().
|
nodiscard |
Definition at line 760 of file RenderProcess.cpp.
References meshletToObjectMapBuffer.
Referenced by updateRendererDescriptorSets().
|
nodiscard |
Definition at line 765 of file RenderProcess.cpp.
References meshletToObjectMapBuffer.
|
nodiscard |
Definition at line 787 of file RenderProcess.cpp.
References meshRenderingInfoBuffer.
Referenced by updateRendererDescriptorSets().
|
nodiscard |
|
nodiscard |
Definition at line 595 of file RenderProcess.cpp.
References mirrorViewImageReadySemaphore.
Referenced by EngineCore::Renderer::getCurrentMirrorViewSemaphore().
|
nodiscard |
Definition at line 857 of file RenderProcess.cpp.
References objectMeshletDataBuffer.
|
nodiscard |
Definition at line 853 of file RenderProcess.cpp.
References pass1CounterBuffer.
|
nodiscard |
|
nodiscard |
Definition at line 783 of file RenderProcess.cpp.
References perObjectDataBuffer.
|
nodiscard |
Definition at line 974 of file RenderProcess.cpp.
References pipelineBinOffsetsBuffer.
Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::renderToXr(), and updateComputeMeshletUnpackingDescriptorSets().
|
nodiscard |
Definition at line 970 of file RenderProcess.cpp.
References pipelineCountersBuffer.
Referenced by EngineCore::Renderer::recordPass2Culling(), EngineCore::Renderer::renderToXr(), updateComputeBinningAllocatorDescriptorSets(), and updateComputePrepareDrawDescriptorSets().
|
nodiscard |
Definition at line 587 of file RenderProcess.cpp.
References renderFinishedSemaphore.
|
nodiscard |
Definition at line 573 of file RenderProcess.cpp.
References transferCommandBuffer.
Referenced by EngineCore::Renderer::getCurrentTransferCommandBuffer(), EngineCore::Renderer::recordTransfer(), and EngineCore::Renderer::submitTransfer().
|
nodiscard |
Definition at line 862 of file RenderProcess.cpp.
References transferCompleteFence.
Referenced by EngineCore::Engine::mainLoop(), EngineCore::Renderer::submitInitialTransfers(), and EngineCore::Renderer::submitTransfer().
| bool EngineCore::RenderProcess::getTransferFenceSubmitted | ( | ) | const |
Definition at line 878 of file RenderProcess.cpp.
References transferFenceSubmitted.
Referenced by EngineCore::Engine::mainLoop(), and EngineCore::Renderer::submitTransfer().
|
nodiscard |
Definition at line 583 of file RenderProcess.cpp.
References transferFinishedSemaphore.
|
nodiscard |
Definition at line 751 of file RenderProcess.cpp.
References viewProjectionBuffer.
Referenced by updateRendererDescriptorSets().
|
nodiscard |
Definition at line 755 of file RenderProcess.cpp.
References viewProjectionBuffer.
|
nodiscard |
Definition at line 849 of file RenderProcess.cpp.
References visibleObjectRangesBuffer.
|
nodiscard |
Definition at line 1131 of file RenderProcess.cpp.
References vsDrawCommandsBuffer_.
Referenced by EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), EngineCore::Renderer::renderToXr(), and updateComputeVSPrepareDrawDescriptorSets().
|
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().
|
nodiscard |
Definition at line 1123 of file RenderProcess.cpp.
References vsGeometryCountersBuffer_.
Referenced by EngineCore::Renderer::recordVSInstancedDrawingPipeline(), updateComputeVSBinningAllocatorDescriptorSets(), and updateComputeVSPrepareDrawDescriptorSets().
|
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().
|
nodiscard |
Definition at line 1035 of file RenderProcess.cpp.
References vsIndirectDrawCountBuffer_.
Referenced by EngineCore::Renderer::recordVertexShaderDraws(), EngineCore::Renderer::recordVertexShaderDrawsDepthOnly(), and EngineCore::Renderer::renderToXr().
|
nodiscard |
Definition at line 1119 of file RenderProcess.cpp.
References vsInstanceAllocationsBuffer_.
Referenced by updateComputeVSBinningAllocatorDescriptorSets(), and updateComputeVSInstanceUnpackingDescriptorSets().
|
nodiscard |
Definition at line 1127 of file RenderProcess.cpp.
References vsInstanceIdsBuffer_.
Referenced by updateComputeVSInstanceUnpackingDescriptorSets(), and updateRendererDescriptorSets().
|
nodiscard |
Definition at line 1115 of file RenderProcess.cpp.
References vsVisibleCountBuffer_.
Referenced by EngineCore::Renderer::renderToXr(), updateComputeObjectCullingDescriptorSets(), updateComputeVSBinningAllocatorDescriptorSets(), and updateComputeVSInstanceUnpackingDescriptorSets().
|
nodiscard |
Vertex shader path buffer getters (instanced drawing pipeline)
Definition at line 1111 of file RenderProcess.cpp.
References vsVisibleInstancesBuffer_.
Referenced by updateComputeObjectCullingDescriptorSets(), and updateComputeVSBinningAllocatorDescriptorSets().
| 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().
| 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().
| 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().
| 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().
| 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)
| rdm | Pointer to the RenderingDataManager |
Definition at line 258 of file RenderProcess.cpp.
References eyeIndex, EngineCore::RenderingDataManager::getDataVersion(), lastSeenDataVersion_, and refreshAllDescriptorSets().
| void EngineCore::RenderProcess::updateComputeBinningAllocatorDescriptorSets | ( | ) | const |
Definition at line 127 of file RenderProcess.cpp.
References EngineCore::ShaderStage::PrimitiveBinning::BINNING_ALLOCATIONS, EngineCore::ShaderStage::PrimitiveBinning::BINNING_CLUSTER_LOD_DATA, EngineCore::ShaderStage::PrimitiveBinning::BINNING_CULLING_SURVIVORS, EngineCore::ShaderStage::PrimitiveBinning::BINNING_LOD_CLUSTER_SURVIVOR_COUNT, EngineCore::ShaderStage::PrimitiveBinning::BINNING_LOD_CLUSTER_SURVIVORS, EngineCore::ShaderStage::PrimitiveBinning::BINNING_PIPELINE_COUNTERS, EngineCore::ShaderStage::PrimitiveBinning::BINNING_PRIMITIVE_MESHLET_DATA, EngineCore::ShaderStage::PrimitiveBinning::BINNING_PRIMITIVE_MESHLET_DATA_LOD, EngineCore::ShaderStage::PrimitiveBinning::BINNING_SURVIVOR_COUNT, COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getAllocationsBuffer(), getEyeIndex(), getLodClusterSurvivorCountBuffer(), getLodClusterSurvivorsBuffer(), getPipelineCountersBuffer(), and renderer.
Referenced by refreshAllDescriptorSets().
| 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().
| 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().
| void EngineCore::RenderProcess::updateComputeMeshletUnpackingDescriptorSets | ( | ) | const |
Definition at line 155 of file RenderProcess.cpp.
References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getAllocationsBuffer(), getBinnedVisibleMeshletIndexBuffer(), getEyeIndex(), getLodClusterSurvivorCountBuffer(), getPipelineBinOffsetsBuffer(), renderer, EngineCore::ShaderStage::MeshletUnpackingV2::UNPACKING_ALLOCATIONS, EngineCore::ShaderStage::MeshletUnpackingV2::UNPACKING_BIN_OFFSETS, EngineCore::ShaderStage::MeshletUnpackingV2::UNPACKING_LOD_CLUSTER_SURVIVOR_COUNT, EngineCore::ShaderStage::MeshletUnpackingV2::UNPACKING_OUTPUT, and EngineCore::ShaderStage::MeshletUnpackingV2::UNPACKING_SURVIVOR_COUNT.
Referenced by refreshAllDescriptorSets().
| 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().
| void EngineCore::RenderProcess::updateComputeObjectCullingDescriptorSets | ( | VkImageView | previousFrameHiZView = VK_NULL_HANDLE | ) | const |
Updates object culling descriptor sets.
| previousFrameHiZView | Hi-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().
| 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().
| void EngineCore::RenderProcess::updateComputeVSBinningAllocatorDescriptorSets | ( | ) | const |
Definition at line 198 of file RenderProcess.cpp.
References COMPUTE_GUARD, context, VulkanHelper::fullBufferInfo(), getEyeIndex(), getVSGeometryCountersBuffer(), getVSInstanceAllocationsBuffer(), getVSVisibleCountBuffer(), getVSVisibleInstancesBuffer(), renderer, EngineCore::ShaderStage::VSBinning::VS_BINNING_ALLOCATIONS, EngineCore::ShaderStage::VSBinning::VS_BINNING_GEOMETRY_COUNTERS, EngineCore::ShaderStage::VSBinning::VS_BINNING_INSTANCE_CULLING_DATA, EngineCore::ShaderStage::VSBinning::VS_BINNING_MESH_GEOMETRY_DATA, EngineCore::ShaderStage::VSBinning::VS_BINNING_VISIBLE_COUNT, and EngineCore::ShaderStage::VSBinning::VS_BINNING_VISIBLE_INSTANCES.
Referenced by refreshAllDescriptorSets().
| 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().
| 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().
| void EngineCore::RenderProcess::updateEyeViewProjectionMatrices | ( | const Headset * | headset | ) |
writes a view projection matrix to an eye
| headset |
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().
| void EngineCore::RenderProcess::updateFragmentTime | ( | float | time | ) |
Sets the time value for time based fragment shader effects.
| time | total time since beginning of play time |
Definition at line 568 of file RenderProcess.cpp.
References staticFragmentUniformData, and TRACY_ZONE_SCOPED_FUNCTION.
Referenced by EngineCore::Renderer::updateCpuRenderResources().
| 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().
| 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.
| headset | Headset 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().
| 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.
| cameraPosition | World-space camera position |
| projMatrix | Projection matrix (for extracting proj[1][1]) |
| nearPlane | Camera near plane distance |
| screenWidth | Render target width |
| screenHeight | Render target height |
| errorThresholdPixels | Target pixel error threshold (default 1.0) |
| ditherEnabled | Whether to use dithered LOD transitions |
Definition at line 1184 of file RenderProcess.cpp.
References lodConfigData_.
Referenced by EngineCore::Renderer::renderToXr().
| void EngineCore::RenderProcess::updateMeshletDataBuffer | ( | ) |
Definition at line 291 of file RenderProcess.cpp.
Referenced by EngineCore::Renderer::updateCpuRenderResources().
| void EngineCore::RenderProcess::updateMeshRenderingData | ( | ) |
Definition at line 270 of file RenderProcess.cpp.
Referenced by EngineCore::Renderer::updateCpuRenderResources().
| 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().
| void EngineCore::RenderProcess::updateSSBO | ( | const Renderer * | renderer | ) |
Definition at line 283 of file RenderProcess.cpp.
References renderer.
Referenced by EngineCore::Renderer::updateCpuRenderResources().
| VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadFrustumUBO | ( | ) |
Definition at line 337 of file RenderProcess.cpp.
References context, frustumData, frustumDataBuffer, and TRACY_ZONE_SCOPED_NAMED.
| VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadHiZViewProjectionUBO | ( | ) |
Uploads Hi-Z view-projection UBO to GPU.
Definition at line 829 of file RenderProcess.cpp.
References context, hiZViewProjectionBuffer_, hiZViewProjectionData_, and TRACY_ZONE_SCOPED_NAMED.
| VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadLodConfigBuffer | ( | ) |
Upload LOD config buffer to GPU.
Definition at line 1196 of file RenderProcess.cpp.
References context, lodConfigBuffer_, and lodConfigData_.
Referenced by EngineCore::Renderer::renderToXr().
| VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadMeshRenderingStagingData | ( | ) |
Definition at line 276 of file RenderProcess.cpp.
| void EngineCore::RenderProcess::uploadNewTextures | ( | const std::vector< Texture * > & | textures, |
| uint32_t | firstIndex ) const |
Definition at line 610 of file RenderProcess.cpp.
References context, graphicsDescriptorSet, and EngineCore::ShaderStage::Graphics::TEXTURE_ARRAY.
| VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadSSBOStagingBuffer | ( | ) |
Definition at line 299 of file RenderProcess.cpp.
| VulkanStagedBufferSyncObjects EngineCore::RenderProcess::uploadUniformBufferData | ( | ) |
Definition at line 600 of file RenderProcess.cpp.
References context, staticVertexUniformData, TRACY_ZONE_SCOPED_NAMED, and viewProjectionBuffer.
|
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().
|
private |
Definition at line 226 of file RenderProcess.h.
Referenced by cleanup(), createBinnedVisibleMeshletIndexBuffer(), getBinnedVisibleMeshletIndexBuffer(), and getBinnedVisibleMeshletIndexBuffer().
|
private |
Definition at line 322 of file RenderProcess.h.
Referenced by RenderProcess().
|
private |
Definition at line 178 of file RenderProcess.h.
Referenced by cleanup(), createBinnedVisibleMeshletIndexBuffer(), createBinningAllocatorBuffers(), createCountDispatcherBuffers(), createCullingFailedBuffers(), createDispatcherDispatchBuffer(), createFrustumUBOBuffer(), createHiZPyramid(), createHiZViewProjectionBuffer(), createIndirectDrawBuffer(), createLodBuffers(), createMeshletCounterBuffer(), createMeshletToObjectMapBuffer(), createMeshRenderingInfoBuffers(), createObjectMeshletDataBuffer(), createPass1CounterBuffer(), createPerObjectSSBOBuffer(), createViewProjectionBuffer(), createVisibleObjectRangesBuffer(), createVSIndirectDrawBuffers(), createVSInstancedDrawingBuffers(), processTextureUpload(), RenderProcess(), updateComputeBinningAllocatorDescriptorSets(), updateComputeMeshletCullingDescriptorSets(), updateComputeMeshletCullingDispatcherDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), updateComputeMeshletUnpackingDispatcherDescriptorSets(), updateComputeObjectCullingDescriptorSets(), updateComputePrepareDrawDescriptorSets(), updateComputeVSBinningAllocatorDescriptorSets(), updateComputeVSInstanceUnpackingDescriptorSets(), updateComputeVSPrepareDrawDescriptorSets(), updateRendererDescriptorSets(), uploadFrustumUBO(), uploadHiZViewProjectionUBO(), uploadLodConfigBuffer(), uploadNewTextures(), and uploadUniformBufferData().
|
private |
Definition at line 230 of file RenderProcess.h.
Referenced by cleanup(), and createCountDispatcherBuffers().
|
private |
Definition at line 231 of file RenderProcess.h.
Referenced by cleanup(), and createCountDispatcherBuffers().
|
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().
|
private |
Atomic counter for failed objects.
Definition at line 243 of file RenderProcess.h.
Referenced by cleanup(), createCullingFailedBuffers(), and getCullingFailedCounterBuffer().
|
private |
Definition at line 239 of file RenderProcess.h.
Referenced by cleanup(), and createDispatcherDispatchBuffer().
|
private |
Definition at line 180 of file RenderProcess.h.
Referenced by createBinnedVisibleMeshletIndexBuffer(), createBinningAllocatorBuffers(), createCullingFailedBuffers(), createFrustumUBOBuffer(), createHiZPyramid(), createHiZViewProjectionBuffer(), createIndirectDrawBuffer(), createLodBuffers(), createMeshletCounterBuffer(), createMeshletToObjectMapBuffer(), createMeshRenderingInfoBuffers(), createObjectMeshletDataBuffer(), createPass1CounterBuffer(), createPerObjectSSBOBuffer(), createViewProjectionBuffer(), createVisibleObjectRangesBuffer(), createVSIndirectDrawBuffers(), createVSInstancedDrawingBuffers(), ensureBufferSizes(), getEyeIndex(), refreshAllDescriptorSets(), RenderProcess(), syncWithRenderingDataManager(), updateComputeVSPrepareDrawDescriptorSets(), and updateFrustumUBOData().
| FrustumPlanes EngineCore::RenderProcess::frustumData {} |
Rendering Resource.
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().
|
private |
Definition at line 223 of file RenderProcess.h.
Referenced by cleanup(), createFrustumUBOBuffer(), getFrustumUBOBuffer(), and uploadFrustumUBO().
|
private |
Definition at line 415 of file RenderProcess.h.
Referenced by getGraphicsCommandBuffer().
|
private |
Definition at line 418 of file RenderProcess.h.
Referenced by cleanup(), and getGraphicsCompleteFence().
|
private |
Definition at line 214 of file RenderProcess.h.
Referenced by addTexturesToUpload(), getGraphicsDescriptorSet(), updateRendererDescriptorSets(), and uploadNewTextures().
|
private |
Definition at line 423 of file RenderProcess.h.
Referenced by getGraphicsFenceSubmitted(), and setGraphicsFenceSubmitted().
|
private |
Definition at line 298 of file RenderProcess.h.
Referenced by updateHiZViewProjectionData().
|
private |
Definition at line 446 of file RenderProcess.h.
Referenced by cleanup(), createHiZPyramid(), getHiZExtent(), getHiZMipLevels(), getHiZPyramidFullView(), getHiZPyramidImage(), and getHiZPyramidMipView().
|
private |
Definition at line 297 of file RenderProcess.h.
Referenced by cleanup(), createHiZViewProjectionBuffer(), getHiZViewProjectionBuffer(), and uploadHiZViewProjectionUBO().
|
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().
|
private |
Definition at line 232 of file RenderProcess.h.
Referenced by cleanup(), createIndirectDrawBuffer(), and getIndirectDrawBuffer().
|
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().
|
private |
Atomic counter for LOD cluster survivors.
Definition at line 267 of file RenderProcess.h.
Referenced by createLodBuffers(), and getLodClusterSurvivorCountBuffer().
|
private |
LOD cluster-based selection buffers.
ClusterSurvivor output from culling
Definition at line 266 of file RenderProcess.h.
Referenced by createLodBuffers(), and getLodClusterSurvivorsBuffer().
|
private |
LodConfigUBO for camera/screen info.
Definition at line 268 of file RenderProcess.h.
Referenced by createLodBuffers(), getLodConfigBuffer(), and uploadLodConfigBuffer().
|
private |
CPU-side LOD config data.
Definition at line 269 of file RenderProcess.h.
Referenced by updateLodConfig(), and uploadLodConfigBuffer().
|
private |
Definition at line 227 of file RenderProcess.h.
Referenced by cleanup(), createMeshletCounterBuffer(), and getMeshletCounterBuffer().
|
private |
Definition at line 220 of file RenderProcess.h.
Referenced by cleanup(), createMeshletToObjectMapBuffer(), getMeshletToObjectMapBuffer(), and getMeshletToObjectMapBuffer().
|
private |
Definition at line 224 of file RenderProcess.h.
Referenced by cleanup(), createMeshRenderingInfoBuffers(), ensureBufferSizes(), and getMeshRenderingBuffer().
|
private |
Definition at line 431 of file RenderProcess.h.
Referenced by cleanup(), and getMirrorViewImageSemaphore().
|
private |
Definition at line 216 of file RenderProcess.h.
Referenced by createObjectMeshletDataBuffer().
|
private |
Definition at line 222 of file RenderProcess.h.
Referenced by cleanup(), createObjectMeshletDataBuffer(), and getObjectMeshletDataBuffer().
|
private |
Definition at line 229 of file RenderProcess.h.
Referenced by cleanup(), createPass1CounterBuffer(), and getPass1CounterBuffer().
| std::vector<PerObjectData> EngineCore::RenderProcess::perObjectData |
Rendering resource.
20.09.2025
Definition at line 280 of file RenderProcess.h.
Referenced by createPerObjectSSBOBuffer(), and ensureBufferSizes().
|
private |
Definition at line 221 of file RenderProcess.h.
Referenced by cleanup(), createPerObjectSSBOBuffer(), ensureBufferSizes(), and getPerObjectSSBOBuffer().
|
private |
Definition at line 211 of file RenderProcess.h.
|
private |
Prefix sum of pipeline counters.
Definition at line 237 of file RenderProcess.h.
Referenced by cleanup(), createBinningAllocatorBuffers(), and getPipelineBinOffsetsBuffer().
|
private |
Per-pipeline meshlet counters (atomic)
Definition at line 236 of file RenderProcess.h.
Referenced by cleanup(), createBinningAllocatorBuffers(), and getPipelineCountersBuffer().
|
private |
Definition at line 271 of file RenderProcess.h.
|
private |
Definition at line 177 of file RenderProcess.h.
Referenced by createIndirectDrawBuffer(), ensureBufferSizes(), RenderProcess(), updateComputeBinningAllocatorDescriptorSets(), updateComputeMeshletCullingDescriptorSets(), updateComputeMeshletCullingDispatcherDescriptorSets(), updateComputeMeshletUnpackingDescriptorSets(), updateComputeMeshletUnpackingDispatcherDescriptorSets(), updateComputeObjectCullingDescriptorSets(), updateComputePrepareDrawDescriptorSets(), updateComputeVSBinningAllocatorDescriptorSets(), updateComputeVSInstanceUnpackingDescriptorSets(), updateComputeVSPrepareDrawDescriptorSets(), updateRendererDescriptorSets(), and updateSSBO().
|
private |
Definition at line 429 of file RenderProcess.h.
Referenced by cleanup(), and getRenderFinishedSemaphore().
|
private |
Definition at line 201 of file RenderProcess.h.
Referenced by RenderProcess().
|
private |
Definition at line 182 of file RenderProcess.h.
Referenced by addStagingBufferForCleanup(), and cleanupStagingBuffer().
|
private |
Definition at line 195 of file RenderProcess.h.
Referenced by updateFragmentTime().
| struct EngineCore::RenderProcess::ViewMatrixUniformData EngineCore::RenderProcess::staticVertexUniformData |
|
private |
Definition at line 209 of file RenderProcess.h.
Referenced by addTexturesToUpload(), cleanup(), and processTextureUpload().
|
private |
Definition at line 414 of file RenderProcess.h.
Referenced by getTransferCommandBuffer().
|
private |
Definition at line 417 of file RenderProcess.h.
Referenced by cleanup(), and getTransferCompleteFence().
|
private |
Definition at line 422 of file RenderProcess.h.
Referenced by getTransferFenceSubmitted(), and setTransferFenceSubmitted().
|
private |
Definition at line 430 of file RenderProcess.h.
Referenced by cleanup(), and getTransferFinishedSemaphore().
|
private |
Definition at line 300 of file RenderProcess.h.
Referenced by createMeshRenderingInfoBuffers(), and ensureBufferSizes().
|
private |
Definition at line 219 of file RenderProcess.h.
Referenced by cleanup(), createViewProjectionBuffer(), getViewProjectionBuffer(), getViewProjectionBuffer(), and uploadUniformBufferData().
|
private |
Definition at line 228 of file RenderProcess.h.
Referenced by cleanup(), createVisibleObjectRangesBuffer(), ensureBufferSizes(), and getVisibleObjectRangesBuffer().
|
private |
Stage 3: VSPrepareDraw outputs.
VkDrawIndexedIndirectCommand array
Definition at line 258 of file RenderProcess.h.
Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSDrawCommandsBuffer().
|
private |
Number of draw commands.
Definition at line 259 of file RenderProcess.h.
Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSDrawCountBuffer().
|
private |
Atomic instance count per geometry type.
Definition at line 252 of file RenderProcess.h.
Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSGeometryCountersBuffer().
|
private |
Legacy: was VkDrawIndexedIndirectCommand array.
Definition at line 262 of file RenderProcess.h.
Referenced by cleanup(), createVSIndirectDrawBuffers(), ensureBufferSizes(), and getVSIndirectDrawBuffer().
|
private |
Legacy: was draw count.
Definition at line 263 of file RenderProcess.h.
Referenced by cleanup(), createVSIndirectDrawBuffers(), and getVSIndirectDrawCountBuffer().
|
private |
Stage 1: VSBinningAllocator outputs.
(primitiveID, geoIndex, writeOffset) per survivor
Definition at line 251 of file RenderProcess.h.
Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSInstanceAllocationsBuffer().
|
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().
|
private |
Number of visible VS path primitives.
Definition at line 248 of file RenderProcess.h.
Referenced by cleanup(), createVSInstancedDrawingBuffers(), and getVSVisibleCountBuffer().
|
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().