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

The rendering data manager is supposed to hold all methods to update the contents of the buffers which are uploaded to the gpu. This could be culling data for example. More...

#include <RenderingDataManager.h>

Collaboration diagram for EngineCore::RenderingDataManager:

Classes

struct  GeometryCacheKey
 Key for geometry cache - uniquely identifies a primitive within a mesh. Uses MeshAsset pointer and primitive index since the same MeshAsset can have multiple primitives. More...
struct  GeometryCacheKeyHash

Public Types

enum class  DefaultTextureType {
  Normal ,
  White ,
  Black
}
 Get a valid texture index, substituting defaults for missing textures. More...

Public Member Functions

 RenderingDataManager (const Engine *engine, ApplicationContext *context)
 ~RenderingDataManager ()
 Destructor - cleans up all GPU buffers.
 RenderingDataManager (const RenderingDataManager &)=delete
RenderingDataManageroperator= (const RenderingDataManager &)=delete
 RenderingDataManager (ApplicationContext *context)
 Constructor for decoupled usage (e.g., testing) where Engine is not available. Dependencies must be set via setters before calling updateIfDirty().
void setSceneManager (SceneManager *sceneManager)
 Set the scene manager for retrieving actors. Required when Engine is null.
void setAssetManager (AssetManager *assetManager)
 Set the asset manager for material lookups. Required when Engine is null.
void setRenderer (Renderer *renderer)
 Set the renderer for pipeline index lookups. Required when Engine is null.
void onRenderableSpawned (MeshComponent *component)
 Event hook which is executed when a renderable component gets added to an actor and can thus be rendered.
void onRenderableDestroyed (MeshComponent *component)
 Event hook which is executed when a renderable component gets removed from an actor and thus has to be removed from the rendering pool.
void onMeshLoaded (MeshAsset *asset)
 Event hook which executes when an Mesh is loaded.
void onMeshUnloaded (MeshAsset *asset)
 Event hook which executes when a Mesh is unloaded.
void onTextureLoaded (TextureAsset *textureAsset, const std::filesystem::path &texturePath)
 Event hook for when a texture has been loaded by the asset pipeline. Creates a Vulkan Texture from the ECS image data and registers it with AssetManager.
void onTextureUnloaded (TextureAsset *textureAsset)
 Event hook for when a texture has been unloaded.
void onMaterialLoaded (MaterialAsset *materialAsset)
 Event hook for when a material has been loaded.
void onMaterialUnloaded (MaterialAsset *materialAsset)
 Event hook for when a material has been unloaded.
bool needsUpdate () const
 Check if the rendering data needs to be rebuilt.
uint64_t getDataVersion () const
 Get the current data version Incremented each time buffers are updated. RenderProcesses use this to know when they need to refresh their descriptor sets.
void clearDirty ()
 Clears the dirty flag after update is complete.
void processPendingMeshLoads ()
 Process pending mesh loads at a safe point in the frame. This should be called BEFORE updateIfDirty() to ensure meshes that finished loading are acknowledged before the render update begins. Meshes that load after this point will be deferred to the next frame.
void processCompletedMeshletGenerations (std::vector< Ecs::CompletedMeshletGeneration > &&completions)
 Process completed meshlet generations and write them to the registry. This should be called at a safe point before rendering begins.
bool updateIfDirty ()
 Triggers an update of all GPU buffers if dirty.
bool updateTransforms ()
 Updates only transform-related buffers (world matrices, bounding spheres)
std::vector< VulkanStagedBufferSyncObjects > & getPendingTransformSyncObjects ()
 Get pending transform sync objects for the transfer phase.
void clearPendingTransformSyncObjects ()
 Clear pending transform sync objects after they've been recorded.
const VulkanBuffergetPrimitiveCullingBuffer () const
const VulkanBuffergetPrimitiveMeshletBuffer () const
const VulkanBuffergetPerObjectDataBuffer () const
const VulkanBuffergetPrimitiveRenderDataBuffer () const
const VulkanBuffergetLocalBoundsBuffer () const
const VulkanBuffergetMeshletBuffer () const
const VulkanBuffergetMeshletBoundsBuffer () const
const VulkanBuffergetVertexBuffer () const
const VulkanBuffergetTriangleBuffer () const
const VulkanBuffergetMeshGeometryDataBuffer () const
const VulkanBuffergetInstanceDataBuffer () const
const VulkanBuffergetInstanceCullingDataBuffer () const
const VulkanBuffergetVSIndexBuffer () const
const VulkanBuffergetSingleMeshletGeometryBuffer () const
uint32_t getSingleMeshletGeometryCount () const
uint32_t getMultiMeshletGeometryCount () const
bool hasVertexShaderPath () const
const VulkanBuffergetClusterLodDataBuffer () const
const VulkanBuffergetClusterGroupDataBuffer () const
uint32_t getClusterCount () const
uint32_t getClusterGroupCount () const
bool hasLodData () const
uint32_t getUniqueGeometryCount () const
 Gets the current count of unique geometries in the buffers.
uint32_t getInstanceCount () const
 Gets the current count of instances in the buffers.
bool isInstancingEnabled () const
 Check if instancing mode is enabled.
void setInstancingEnabled (bool enabled)
 Enable or disable instancing mode.
std::vector< VulkanStagedBufferSyncObjects > & getPendingSyncObjects ()
 Get pending buffer sync objects for the transfer phase These need to be recorded in the transfer command buffer.
void clearPendingSyncObjects ()
 Clear pending sync objects after they've been recorded.
void processPendingDeletions ()
 Process deferred buffer deletions Call this after all frames have completed and descriptor sets are updated.
uint32_t getPrimitiveCount () const
 Gets the current count of primitives in the buffers.
uint32_t getMeshletCount () const
 Gets the current count of meshlets in the buffers.
void collectMaterialsFromScene ()
 Collects all materials from loaded meshes and creates per-pipeline data This builds material-to-pipeline mappings for the rendering pipeline.
PipelineNames getPipelineForPrimitive (uint32_t primitiveId) const
 Gets the pipeline ID (PipelineNames enum) for a given primitive.
void queueTextureForUpload (Texture *texture)
 Queue a texture for GPU upload Called by AssetManager when a new texture is created and needs uploading.
bool hasTexturesToUpload () const
 Check if there are textures waiting to be uploaded to GPU.
std::vector< Texture * > getTexturesToUpload () const
 Get the list of textures waiting for GPU upload.
void clearTexturesToUpload ()
 Clear the texture upload queue after upload is complete.
std::vector< VkDescriptorImageInfo > generateTextureDescriptorInfos () const
 Generate descriptor infos for all GPU-uploaded textures.
uint32_t getTextureCount () const
 Get the count of textures currently on the GPU.
const VulkanBuffergetMaterialBufferForPipeline (PipelineNames pipelineName) const
 Get the material buffer for a specific pipeline type.
void uploadMaterialBuffers ()
 Upload material data from MaterialAssets to GPU buffers.
bool needsMaterialUpdate () const
 Check if material buffers need updating.
void markMaterialsDirty ()
 Mark materials as dirty, requiring buffer re-upload.
const VulkanBuffergetSHProbeBuffer () const
 Get the SH probe buffer for spherical harmonic lighting.
void initializeSHProbeBuffer ()
 Initialize default SH probe data Sets up a single default probe with hardcoded coefficients.
void initializeDefaultTextures ()
 Queue default textures for loading via the texture pipeline.
uint32_t getValidTextureIndex (uint32_t textureIndex, DefaultTextureType defaultType)

Private Member Functions

bool updatePrimitiveData ()
 Regenerates all buffers and the rendering ids of all objects, primitives and meshlets.
bool updatePrimitiveDataInstanced ()
 Instanced version of updatePrimitiveData using geometry deduplication. Separates geometry upload (once per unique mesh) from instance data (once per visible instance).
void invalidateGeometryCache ()
 Clears the geometry cache and marks for full rebuild. Called when meshes are unloaded.
void markDirty ()
 Flags the Rendering Data Manager as dirty so that all buffers managed by this manager are in need of being rebuilt.
void initializeMaterialBuffers ()
 Initialize material buffers for all pipeline types.
void snapshotRenderableMeshes ()
 Take a snapshot of currently render-ready meshes. Called at the start of update cycle to ensure consistent iteration.
bool isMeshInSnapshot (MeshAsset *asset) const
 Check if a mesh asset is in the current render cycle snapshot.

Private Attributes

const Engineengine = nullptr
ApplicationContextcontext = nullptr
SceneManagerinjectedSceneManager = nullptr
AssetManagerinjectedAssetManager = nullptr
RendererinjectedRenderer = nullptr
std::optional< VulkanStagedBufferprimitiveCullingData
 ObjectCullingData per primitive (unused after GPU transform optimization)
std::optional< VulkanStagedBufferprimitiveMeshletData
 PrimitiveMeshletData per primitive.
std::optional< VulkanStagedBufferperObjectDataBuffer
 mat4 world transform per primitive (matches shader PerObjectData)
std::optional< VulkanStagedBufferprimitiveRenderData
 MeshPrimitiveRenderData per primitive (texture/material IDs)
std::optional< VulkanStagedBufferlocalBoundsBuffer
 LocalBoundsData per primitive (static, uploaded once)
std::optional< VulkanStagedBuffermeshletBuffer
 UnifiedMeshlet data.
std::optional< VulkanStagedBuffermeshletBoundsData
 MeshletBounds for meshlet culling.
std::optional< VulkanStagedBuffervertexBuffer
 Optimized vertex data (Vertex structs)
std::optional< VulkanStagedBuffertriangleBuffer
 Triangle indices for meshlets.
std::optional< VulkanStagedBuffermeshGeometryDataBuffer
 MeshGeometryData per unique geometry.
std::optional< VulkanStagedBufferinstanceDataBuffer
 InstanceData per visible instance.
std::optional< VulkanStagedBufferinstanceCullingDataBuffer
 InstanceCullingData per instance.
std::optional< VulkanStagedBuffervsIndexBuffer_
 Contiguous uint32_t indices for vertex shader.
std::optional< VulkanStagedBuffersingleMeshletGeometryBuffer_
 SingleMeshletGeometryData per single-meshlet geometry.
std::optional< VulkanStagedBufferclusterLodDataBuffer_
 ClusterLodData per cluster.
std::optional< VulkanStagedBufferclusterGroupDataBuffer_
 ClusterGroupData per LOD group.
std::vector< VulkanStagedBufferSyncObjectspendingSyncObjects_
std::vector< VulkanStagedBufferSyncObjectspendingTransformSyncObjects_
uint32_t primitiveCount = 0
uint32_t meshletCount = 0
bool isDirty = false
 a flag which defers the update of the buffer updates to the end of the frame.
uint64_t dataVersion_ = 0
bool instancingEnabled_ = true
 Feature flag for instanced rendering.
bool geometryDirty_ = false
 Unique meshes changed (requires geometry buffer update)
bool instancesDirty_ = false
 Instance list changed (requires instance buffer update)
uint32_t uniqueGeometryCount_ = 0
 Number of unique geometries in buffers.
uint32_t instanceCount_ = 0
 Number of instances in buffers.
uint32_t nextGeometryId_ = 0
 Next geometry ID to assign.
uint32_t nextMeshletId_ = 0
 Next meshlet ID to assign.
size_t committedVertexCount_ = 0
 Vertices already on GPU.
size_t committedTriangleCount_ = 0
 Triangles already on GPU.
size_t committedMeshletCount_ = 0
 Meshlets already on GPU.
size_t committedGeometryCount_ = 0
 Geometries already on GPU.
size_t committedVsIndexCount_ = 0
 VS indices already on GPU.
size_t committedSingleMeshletGeoCount_ = 0
 Single-meshlet geometries already on GPU.
bool geometryNeedsFullRebuild_ = true
 True on startup or after mesh unload.
uint32_t singleMeshletGeometryCount_ = 0
 Geometries with meshletCount == 1 (vertex shader path)
uint32_t multiMeshletGeometryCount_ = 0
 Geometries with meshletCount > 1 (mesh shader path)
uint32_t clusterCount_ = 0
 Total clusters across all LOD levels.
uint32_t clusterGroupCount_ = 0
 Total cluster groups.
std::unordered_map< GeometryCacheKey, MeshGeometryMapping, GeometryCacheKeyHashgeometryCache_
std::unordered_map< uint32_t, PipelineNamesprimitiveToPipeline
 Maps primitive IDs to their pipeline.
std::unordered_map< PipelineNames, uint32_t > pipelinePrimitiveCounts
 Count of primitives per pipeline.
std::unordered_map< entt::entity, std::vector< uint32_t > > entityToPrimitiveIds_
std::unordered_map< uint32_t, MeshComponent * > primitiveIdToComponent_
std::vector< glm::mat4 > cachedTransforms_
bool transformCacheValid_ = false
std::vector< Texture * > texturesToUpload
 Textures waiting for GPU upload.
std::vector< Texture * > gpuTextures
 Textures currently on GPU.
std::unordered_map< PipelineNames, std::optional< VulkanBuffer > > materialBuffersByPipeline
bool materialsDirty_ = true
std::unordered_map< std::string, uint32_t > materialPathToFlatColorIndex_
std::unordered_map< std::string, uint32_t > materialPathToDiffuseIndex_
std::unordered_map< std::string, uint32_t > materialPathToPbrIndex_
std::unordered_map< std::string, uint32_t > materialPathToNormalsIndex_
std::optional< VulkanBuffershProbeBuffer_
 SHProbeData buffer at binding 18.
std::vector< SHProbeDatashProbeData_
 CPU-side SH probe data.
std::vector< MeshAsset * > pendingMeshLoads_
std::unordered_set< MeshAsset * > renderCycleMeshSnapshot_
std::vector< MeshGeometryDataworkingGeometryDataBuffer_
std::vector< UnifiedMeshletworkingMeshletDataBuffer_
std::vector< MeshletBoundsworkingMeshletBoundsBuffer_
std::vector< VertexworkingVertexBuffer_
std::vector< Ecs::PackedTriangleworkingTriangleBuffer_
std::vector< uint32_t > workingVsIndexBuffer_
std::vector< SingleMeshletGeometryDataworkingSingleMeshletGeoData_
std::vector< ClusterLodDataworkingClusterLodData_
std::vector< ClusterGroupDataworkingClusterGroupData_
std::vector< InstanceDataworkingInstanceData_
std::vector< InstanceCullingDataworkingInstanceCullingData_
std::vector< ObjectCullingDataworkingPrimitiveCullingBuffer_
std::vector< LocalBoundsDataworkingLocalBoundsDataBuffer_
std::vector< PrimitiveMeshletDataworkingPrimitiveMeshletBuffer_
std::vector< glm::mat4 > workingPerObjectData_
std::vector< MeshPrimitiveRenderDataworkingPrimitiveRenderData_
std::vector< GpuDiffuseFlatColorMaterialworkingFlatColorMaterials_
std::vector< GpuDiffuseShaderMaterialworkingDiffuseMaterials_
std::vector< GpuPbrMaterialworkingPbrMaterials_
std::vector< GpuNormalsMaterialworkingNormalsMaterials_
bool defaultTexturesLoading_ = false
 True if loadEcsTexture has been called.

Static Private Attributes

static constexpr const char * DEFAULT_NORMAL_TEXTURE_PATH = "Engine/textures/DefaultNormal.png"
static constexpr const char * DEFAULT_WHITE_TEXTURE_PATH = "Engine/textures/DefaultWhite.png"
static constexpr const char * DEFAULT_BLACK_TEXTURE_PATH = "Engine/textures/DefaultBlack.png"

Friends

class Engine

Detailed Description

The rendering data manager is supposed to hold all methods to update the contents of the buffers which are uploaded to the gpu. This could be culling data for example.

Definition at line 34 of file RenderingDataManager.h.

Member Enumeration Documentation

◆ DefaultTextureType

Get a valid texture index, substituting defaults for missing textures.

Queries AssetManager for the texture descriptor index. If the requested texture is TEXTURE_NOT_PRESENT (0xFFFFFFFF), returns the appropriate default texture index (or 0xFFFFFFFF if defaults aren't loaded yet).

Parameters
textureIndexThe texture index (may be TEXTURE_NOT_PRESENT)
textureTypeType of texture for selecting appropriate default
Returns
Valid texture descriptor index, or 0xFFFFFFFF if unavailable
Enumerator
Normal 
White 
Black 

Definition at line 381 of file RenderingDataManager.h.

Constructor & Destructor Documentation

◆ RenderingDataManager() [1/3]

EngineCore::RenderingDataManager::RenderingDataManager ( const Engine * engine,
ApplicationContext * context )
explicit

Definition at line 27 of file RenderingDataManager.cpp.

References clusterGroupDataBuffer_, clusterLodDataBuffer_, context, Engine, engine, initializeMaterialBuffers(), initializeSHProbeBuffer(), instanceCullingDataBuffer, instanceDataBuffer, localBoundsBuffer, markDirty(), meshGeometryDataBuffer, meshletBoundsData, meshletBuffer, EngineCore::MIN_BUFFER_SIZE, perObjectDataBuffer, primitiveCullingData, primitiveMeshletData, primitiveRenderData, singleMeshletGeometryBuffer_, triangleBuffer, vertexBuffer, and vsIndexBuffer_.

Referenced by operator=(), and RenderingDataManager().

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

◆ ~RenderingDataManager()

◆ RenderingDataManager() [2/3]

EngineCore::RenderingDataManager::RenderingDataManager ( const RenderingDataManager & )
delete

References RenderingDataManager().

Here is the call graph for this function:

◆ RenderingDataManager() [3/3]

EngineCore::RenderingDataManager::RenderingDataManager ( ApplicationContext * context)
explicit

Constructor for decoupled usage (e.g., testing) where Engine is not available. Dependencies must be set via setters before calling updateIfDirty().

Parameters
contextThe Vulkan application context

Definition at line 121 of file RenderingDataManager.cpp.

References clusterGroupDataBuffer_, clusterLodDataBuffer_, context, engine, initializeMaterialBuffers(), initializeSHProbeBuffer(), instanceCullingDataBuffer, instanceDataBuffer, localBoundsBuffer, markDirty(), meshGeometryDataBuffer, meshletBoundsData, meshletBuffer, EngineCore::MIN_BUFFER_SIZE, perObjectDataBuffer, primitiveCullingData, primitiveMeshletData, primitiveRenderData, singleMeshletGeometryBuffer_, triangleBuffer, vertexBuffer, and vsIndexBuffer_.

Here is the call graph for this function:

Member Function Documentation

◆ clearDirty()

void EngineCore::RenderingDataManager::clearDirty ( )
inline

Clears the dirty flag after update is complete.

Definition at line 139 of file RenderingDataManager.h.

References isDirty.

◆ clearPendingSyncObjects()

void EngineCore::RenderingDataManager::clearPendingSyncObjects ( )
inline

Clear pending sync objects after they've been recorded.

Definition at line 249 of file RenderingDataManager.h.

References pendingSyncObjects_.

◆ clearPendingTransformSyncObjects()

void EngineCore::RenderingDataManager::clearPendingTransformSyncObjects ( )
inline

Clear pending transform sync objects after they've been recorded.

Definition at line 186 of file RenderingDataManager.h.

References pendingTransformSyncObjects_.

◆ clearTexturesToUpload()

void EngineCore::RenderingDataManager::clearTexturesToUpload ( )

Clear the texture upload queue after upload is complete.

Definition at line 1955 of file RenderingDataManager.cpp.

References gpuTextures, and texturesToUpload.

◆ collectMaterialsFromScene()

void EngineCore::RenderingDataManager::collectMaterialsFromScene ( )

Collects all materials from loaded meshes and creates per-pipeline data This builds material-to-pipeline mappings for the rendering pipeline.

Definition at line 1733 of file RenderingDataManager.cpp.

References engine, EngineCore::SceneManager::getAllActors(), Asset::AssetManager< Key, AssetClass >::getAsset(), EngineCore::AssetManager::getMaterialAssetManager(), EngineCore::MeshAsset::getMeshPrimitiveData(), injectedAssetManager, injectedSceneManager, EngineCore::NORMALS_SHADER, pipelinePrimitiveCounts, primitive_rendering_id, and primitiveToPipeline.

Here is the call graph for this function:

◆ generateTextureDescriptorInfos()

std::vector< VkDescriptorImageInfo > EngineCore::RenderingDataManager::generateTextureDescriptorInfos ( ) const
nodiscard

Generate descriptor infos for all GPU-uploaded textures.

Returns
Vector of descriptor infos for binding to descriptor sets

Definition at line 1962 of file RenderingDataManager.cpp.

References gpuTextures.

◆ getClusterCount()

uint32_t EngineCore::RenderingDataManager::getClusterCount ( ) const
inlinenodiscard

Definition at line 214 of file RenderingDataManager.h.

References clusterCount_.

◆ getClusterGroupCount()

uint32_t EngineCore::RenderingDataManager::getClusterGroupCount ( ) const
inlinenodiscard

Definition at line 215 of file RenderingDataManager.h.

References clusterGroupCount_.

◆ getClusterGroupDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getClusterGroupDataBuffer ( ) const
inlinenodiscard

Definition at line 213 of file RenderingDataManager.h.

References clusterGroupDataBuffer_.

◆ getClusterLodDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getClusterLodDataBuffer ( ) const
inlinenodiscard

Definition at line 212 of file RenderingDataManager.h.

References clusterLodDataBuffer_.

◆ getDataVersion()

uint64_t EngineCore::RenderingDataManager::getDataVersion ( ) const
inlinenodiscard

Get the current data version Incremented each time buffers are updated. RenderProcesses use this to know when they need to refresh their descriptor sets.

Returns
Current data version number

Definition at line 134 of file RenderingDataManager.h.

References dataVersion_.

Referenced by EngineCore::RenderProcess::syncWithRenderingDataManager().

Here is the caller graph for this function:

◆ getInstanceCount()

uint32_t EngineCore::RenderingDataManager::getInstanceCount ( ) const
inlinenodiscard

Gets the current count of instances in the buffers.

Definition at line 226 of file RenderingDataManager.h.

References instanceCount_.

◆ getInstanceCullingDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getInstanceCullingDataBuffer ( ) const
inlinenodiscard

Definition at line 202 of file RenderingDataManager.h.

References instanceCullingDataBuffer.

◆ getInstanceDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getInstanceDataBuffer ( ) const
inlinenodiscard

Definition at line 201 of file RenderingDataManager.h.

References instanceDataBuffer.

◆ getLocalBoundsBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getLocalBoundsBuffer ( ) const
inlinenodiscard

Definition at line 193 of file RenderingDataManager.h.

References localBoundsBuffer.

◆ getMaterialBufferForPipeline()

const VulkanBuffer & EngineCore::RenderingDataManager::getMaterialBufferForPipeline ( PipelineNames pipelineName) const
nodiscard

Get the material buffer for a specific pipeline type.

Parameters
pipelineNameThe pipeline type enum
Returns
Reference to the material buffer for that pipeline

Definition at line 1986 of file RenderingDataManager.cpp.

References materialBuffersByPipeline.

◆ getMeshGeometryDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getMeshGeometryDataBuffer ( ) const
inlinenodiscard

Definition at line 200 of file RenderingDataManager.h.

References meshGeometryDataBuffer.

◆ getMeshletBoundsBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getMeshletBoundsBuffer ( ) const
inlinenodiscard

Definition at line 195 of file RenderingDataManager.h.

References meshletBoundsData.

◆ getMeshletBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getMeshletBuffer ( ) const
inlinenodiscard

Definition at line 194 of file RenderingDataManager.h.

References meshletBuffer.

◆ getMeshletCount()

uint32_t EngineCore::RenderingDataManager::getMeshletCount ( ) const
inlinenodiscard

Gets the current count of meshlets in the buffers.

Definition at line 265 of file RenderingDataManager.h.

References meshletCount.

◆ getMultiMeshletGeometryCount()

uint32_t EngineCore::RenderingDataManager::getMultiMeshletGeometryCount ( ) const
inlinenodiscard

Definition at line 208 of file RenderingDataManager.h.

References multiMeshletGeometryCount_.

◆ getPendingSyncObjects()

std::vector< VulkanStagedBufferSyncObjects > & EngineCore::RenderingDataManager::getPendingSyncObjects ( )
inlinenodiscard

Get pending buffer sync objects for the transfer phase These need to be recorded in the transfer command buffer.

Returns
Vector of sync objects for staged buffer copies

Definition at line 244 of file RenderingDataManager.h.

References pendingSyncObjects_.

◆ getPendingTransformSyncObjects()

std::vector< VulkanStagedBufferSyncObjects > & EngineCore::RenderingDataManager::getPendingTransformSyncObjects ( )
inlinenodiscard

Get pending transform sync objects for the transfer phase.

Returns
Vector of sync objects for staged buffer copies

Definition at line 181 of file RenderingDataManager.h.

References pendingTransformSyncObjects_.

◆ getPerObjectDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getPerObjectDataBuffer ( ) const
inlinenodiscard

Definition at line 191 of file RenderingDataManager.h.

References perObjectDataBuffer.

◆ getPipelineForPrimitive()

PipelineNames EngineCore::RenderingDataManager::getPipelineForPrimitive ( uint32_t primitiveId) const
nodiscard

Gets the pipeline ID (PipelineNames enum) for a given primitive.

Parameters
primitiveIdThe rendering ID of the primitive
Returns
The pipeline enum value, or NORMALS_SHADER if not found

Definition at line 1800 of file RenderingDataManager.cpp.

References EngineCore::NORMALS_SHADER, primitive_rendering_id, and primitiveToPipeline.

◆ getPrimitiveCount()

uint32_t EngineCore::RenderingDataManager::getPrimitiveCount ( ) const
inlinenodiscard

Gets the current count of primitives in the buffers.

Definition at line 260 of file RenderingDataManager.h.

References primitiveCount.

◆ getPrimitiveCullingBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getPrimitiveCullingBuffer ( ) const
inlinenodiscard

Definition at line 189 of file RenderingDataManager.h.

References primitiveCullingData.

◆ getPrimitiveMeshletBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getPrimitiveMeshletBuffer ( ) const
inlinenodiscard

Definition at line 190 of file RenderingDataManager.h.

References primitiveMeshletData.

◆ getPrimitiveRenderDataBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getPrimitiveRenderDataBuffer ( ) const
inlinenodiscard

Definition at line 192 of file RenderingDataManager.h.

References primitiveRenderData.

◆ getSHProbeBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getSHProbeBuffer ( ) const
nodiscard

Get the SH probe buffer for spherical harmonic lighting.

Returns
Reference to the SH probe buffer

Definition at line 2555 of file RenderingDataManager.cpp.

References shProbeBuffer_.

◆ getSingleMeshletGeometryBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getSingleMeshletGeometryBuffer ( ) const
inlinenodiscard

Definition at line 206 of file RenderingDataManager.h.

References singleMeshletGeometryBuffer_.

◆ getSingleMeshletGeometryCount()

uint32_t EngineCore::RenderingDataManager::getSingleMeshletGeometryCount ( ) const
inlinenodiscard

Definition at line 207 of file RenderingDataManager.h.

References singleMeshletGeometryCount_.

◆ getTextureCount()

uint32_t EngineCore::RenderingDataManager::getTextureCount ( ) const
nodiscard

Get the count of textures currently on the GPU.

Returns
Number of textures that have been uploaded to GPU

Definition at line 1981 of file RenderingDataManager.cpp.

References gpuTextures.

◆ getTexturesToUpload()

std::vector< Texture * > EngineCore::RenderingDataManager::getTexturesToUpload ( ) const
nodiscard

Get the list of textures waiting for GPU upload.

Returns
Vector of texture pointers to upload

Definition at line 1950 of file RenderingDataManager.cpp.

References texturesToUpload.

◆ getTriangleBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getTriangleBuffer ( ) const
inlinenodiscard

Definition at line 197 of file RenderingDataManager.h.

References triangleBuffer.

◆ getUniqueGeometryCount()

uint32_t EngineCore::RenderingDataManager::getUniqueGeometryCount ( ) const
inlinenodiscard

Gets the current count of unique geometries in the buffers.

Definition at line 221 of file RenderingDataManager.h.

References uniqueGeometryCount_.

◆ getValidTextureIndex()

uint32_t EngineCore::RenderingDataManager::getValidTextureIndex ( uint32_t textureIndex,
DefaultTextureType defaultType )
nodiscard

Definition at line 2607 of file RenderingDataManager.cpp.

References Black, DEFAULT_BLACK_TEXTURE_PATH, DEFAULT_NORMAL_TEXTURE_PATH, DEFAULT_WHITE_TEXTURE_PATH, engine, EngineCore::AssetManager::getTextureDescriptorIndex(), injectedAssetManager, Normal, and White.

Here is the call graph for this function:

◆ getVertexBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getVertexBuffer ( ) const
inlinenodiscard

Definition at line 196 of file RenderingDataManager.h.

References vertexBuffer.

◆ getVSIndexBuffer()

const VulkanBuffer & EngineCore::RenderingDataManager::getVSIndexBuffer ( ) const
inlinenodiscard

Definition at line 205 of file RenderingDataManager.h.

References vsIndexBuffer_.

◆ hasLodData()

bool EngineCore::RenderingDataManager::hasLodData ( ) const
inlinenodiscard

Definition at line 216 of file RenderingDataManager.h.

References clusterCount_.

◆ hasTexturesToUpload()

bool EngineCore::RenderingDataManager::hasTexturesToUpload ( ) const
nodiscard

Check if there are textures waiting to be uploaded to GPU.

Returns
true if textures need uploading

Definition at line 1945 of file RenderingDataManager.cpp.

References texturesToUpload.

◆ hasVertexShaderPath()

bool EngineCore::RenderingDataManager::hasVertexShaderPath ( ) const
inlinenodiscard

Definition at line 209 of file RenderingDataManager.h.

References singleMeshletGeometryCount_.

◆ initializeDefaultTextures()

void EngineCore::RenderingDataManager::initializeDefaultTextures ( )

Queue default textures for loading via the texture pipeline.

Submits default PBR fallback textures to AssetManager::loadEcsTexture():

  • DefaultNormal.png - flat normal map (RGB 128,128,255)
  • DefaultWhite.png - white texture for roughness/metallic
  • DefaultBlack.png - black texture for emissive

The textures are loaded asynchronously through the normal texture pipeline. Call this after asset manager is available but before loading models.

Definition at line 2563 of file RenderingDataManager.cpp.

References EngineCore::BaseColor, DEFAULT_BLACK_TEXTURE_PATH, DEFAULT_NORMAL_TEXTURE_PATH, DEFAULT_WHITE_TEXTURE_PATH, defaultTexturesLoading_, engine, EngineCore::TextureHandleRegistry::getOrCreateHandle(), EngineCore::AssetManager::getTextureHandleRegistry(), injectedAssetManager, EngineCore::AssetManager::loadEcsTexture(), and EngineCore::Normal.

Here is the call graph for this function:

◆ initializeMaterialBuffers()

void EngineCore::RenderingDataManager::initializeMaterialBuffers ( )
private

Initialize material buffers for all pipeline types.

Definition at line 1997 of file RenderingDataManager.cpp.

References context, EngineCore::DIFFUSE_FLAT_COLOR, EngineCore::DIFFUSE_SHADER, EngineCore::DYNAMIC_TEXTURES, EngineCore::L0_SHADER, EngineCore::L1_SHADER, EngineCore::L2_SHADER, materialBuffersByPipeline, EngineCore::MOVABLE_DIFFUSE_SHADER, EngineCore::NORMALS_SHADER, and EngineCore::STATIC_LIGHTMAP.

Referenced by RenderingDataManager(), and RenderingDataManager().

Here is the caller graph for this function:

◆ initializeSHProbeBuffer()

void EngineCore::RenderingDataManager::initializeSHProbeBuffer ( )

Initialize default SH probe data Sets up a single default probe with hardcoded coefficients.

Definition at line 2503 of file RenderingDataManager.cpp.

References EngineCore::SHProbeData::ambientTerm, EngineCore::SHProbeData::coefficients, context, EngineCore::SHProbeData::scale, shProbeBuffer_, and shProbeData_.

Referenced by RenderingDataManager(), and RenderingDataManager().

Here is the caller graph for this function:

◆ invalidateGeometryCache()

void EngineCore::RenderingDataManager::invalidateGeometryCache ( )
private

Clears the geometry cache and marks for full rebuild. Called when meshes are unloaded.

Definition at line 1464 of file RenderingDataManager.cpp.

References geometryCache_, geometryDirty_, geometryNeedsFullRebuild_, and markDirty().

Referenced by onMeshUnloaded().

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

◆ isInstancingEnabled()

bool EngineCore::RenderingDataManager::isInstancingEnabled ( ) const
inlinenodiscard

Check if instancing mode is enabled.

Definition at line 231 of file RenderingDataManager.h.

References instancingEnabled_.

◆ isMeshInSnapshot()

bool EngineCore::RenderingDataManager::isMeshInSnapshot ( MeshAsset * asset) const
nodiscardprivate

Check if a mesh asset is in the current render cycle snapshot.

Parameters
assetThe mesh asset to check
Returns
true if the mesh should be included in rendering

Definition at line 1933 of file RenderingDataManager.cpp.

References renderCycleMeshSnapshot_.

Referenced by updatePrimitiveData().

Here is the caller graph for this function:

◆ markDirty()

void EngineCore::RenderingDataManager::markDirty ( )
private

Flags the Rendering Data Manager as dirty so that all buffers managed by this manager are in need of being rebuilt.

Definition at line 1809 of file RenderingDataManager.cpp.

References isDirty, and transformCacheValid_.

Referenced by invalidateGeometryCache(), onMaterialLoaded(), onMaterialUnloaded(), onRenderableDestroyed(), onRenderableSpawned(), onTextureLoaded(), onTextureUnloaded(), processPendingMeshLoads(), RenderingDataManager(), RenderingDataManager(), setInstancingEnabled(), and updateTransforms().

Here is the caller graph for this function:

◆ markMaterialsDirty()

void EngineCore::RenderingDataManager::markMaterialsDirty ( )
inline

Mark materials as dirty, requiring buffer re-upload.

Definition at line 343 of file RenderingDataManager.h.

References materialsDirty_.

◆ needsMaterialUpdate()

bool EngineCore::RenderingDataManager::needsMaterialUpdate ( ) const
inlinenodiscard

Check if material buffers need updating.

Returns
true if materials have changed since last upload

Definition at line 338 of file RenderingDataManager.h.

References materialsDirty_.

◆ needsUpdate()

bool EngineCore::RenderingDataManager::needsUpdate ( ) const
inlinenodiscard

Check if the rendering data needs to be rebuilt.

Returns
true if buffers need updating

Definition at line 126 of file RenderingDataManager.h.

References isDirty.

◆ onMaterialLoaded()

void EngineCore::RenderingDataManager::onMaterialLoaded ( MaterialAsset * materialAsset)

Event hook for when a material has been loaded.

Parameters
materialAssetWhich material pointer has been loaded

Definition at line 1721 of file RenderingDataManager.cpp.

References markDirty().

Here is the call graph for this function:

◆ onMaterialUnloaded()

void EngineCore::RenderingDataManager::onMaterialUnloaded ( MaterialAsset * materialAsset)

Event hook for when a material has been unloaded.

Parameters
materialAssetMaterial pointer for which object has been unloaded

Definition at line 1727 of file RenderingDataManager.cpp.

References markDirty().

Here is the call graph for this function:

◆ onMeshLoaded()

void EngineCore::RenderingDataManager::onMeshLoaded ( MeshAsset * asset)

Event hook which executes when an Mesh is loaded.

Parameters
assetwhich asset pointer is loaded

Definition at line 1623 of file RenderingDataManager.cpp.

References pendingMeshLoads_.

Referenced by processCompletedMeshletGenerations().

Here is the caller graph for this function:

◆ onMeshUnloaded()

void EngineCore::RenderingDataManager::onMeshUnloaded ( MeshAsset * asset)

Event hook which executes when a Mesh is unloaded.

Parameters
assetwhich asset pointer has been unloaded

Definition at line 1631 of file RenderingDataManager.cpp.

References invalidateGeometryCache().

Here is the call graph for this function:

◆ onRenderableDestroyed()

void EngineCore::RenderingDataManager::onRenderableDestroyed ( MeshComponent * component)

Event hook which is executed when a renderable component gets removed from an actor and thus has to be removed from the rendering pool.

Parameters
componentWhich component pointer is being removed

Definition at line 1618 of file RenderingDataManager.cpp.

References markDirty().

Here is the call graph for this function:

◆ onRenderableSpawned()

void EngineCore::RenderingDataManager::onRenderableSpawned ( MeshComponent * component)

Event hook which is executed when a renderable component gets added to an actor and can thus be rendered.

Parameters
componentrenderable component which has been spawned

Definition at line 1613 of file RenderingDataManager.cpp.

References markDirty().

Here is the call graph for this function:

◆ onTextureLoaded()

void EngineCore::RenderingDataManager::onTextureLoaded ( TextureAsset * textureAsset,
const std::filesystem::path & texturePath )

Event hook for when a texture has been loaded by the asset pipeline. Creates a Vulkan Texture from the ECS image data and registers it with AssetManager.

Parameters
textureAssetWhich texture pointer has been loaded
texturePathThe filesystem path of the texture (used as key for descriptor lookup)

Definition at line 1638 of file RenderingDataManager.cpp.

References EngineCore::BaseColor, context, engine, Ecs::RegistryManager::get(), EngineCore::Texture::getDescriptorIndex(), Asset::AssetBase::getEntity(), EngineCore::AssetManager::getTextureDescriptorIndex(), EngineCore::AssetManager::getTextureHandleRegistry(), EngineCore::TextureHandleRegistry::getTextureTypeForPath(), Ecs::ImageData::image, injectedAssetManager, markDirty(), EngineCore::TextureHandleRegistry::onTextureLoaded(), EngineCore::AssetManager::registerTexture(), and EngineCore::Unknown.

Here is the call graph for this function:

◆ onTextureUnloaded()

void EngineCore::RenderingDataManager::onTextureUnloaded ( TextureAsset * textureAsset)

Event hook for when a texture has been unloaded.

Parameters
textureAssetTexture pointer for which object has been unloaded

Definition at line 1716 of file RenderingDataManager.cpp.

References markDirty().

Here is the call graph for this function:

◆ operator=()

RenderingDataManager & EngineCore::RenderingDataManager::operator= ( const RenderingDataManager & )
delete

References context, and RenderingDataManager().

Here is the call graph for this function:

◆ processCompletedMeshletGenerations()

void EngineCore::RenderingDataManager::processCompletedMeshletGenerations ( std::vector< Ecs::CompletedMeshletGeneration > && completions)

Process completed meshlet generations and write them to the registry. This should be called at a safe point before rendering begins.

Parameters
completionsVector of completed meshlet generations to process

Definition at line 1832 of file RenderingDataManager.cpp.

References Ecs::MeshPrimitiveData::boundingSphere, engine, Ecs::RegistryManager::get(), Asset::AssetManager< Key, AssetClass >::getAsset(), EngineCore::AssetManager::getMeshAssetManager(), injectedAssetManager, onMeshLoaded(), and Ecs::MeshPrimitiveData::primitives.

Here is the call graph for this function:

◆ processPendingDeletions()

void EngineCore::RenderingDataManager::processPendingDeletions ( )

Process deferred buffer deletions Call this after all frames have completed and descriptor sets are updated.

Definition at line 2480 of file RenderingDataManager.cpp.

References instanceCullingDataBuffer, instanceDataBuffer, meshGeometryDataBuffer, meshletBoundsData, meshletBuffer, perObjectDataBuffer, primitiveCullingData, primitiveMeshletData, primitiveRenderData, singleMeshletGeometryBuffer_, triangleBuffer, vertexBuffer, and vsIndexBuffer_.

◆ processPendingMeshLoads()

void EngineCore::RenderingDataManager::processPendingMeshLoads ( )

Process pending mesh loads at a safe point in the frame. This should be called BEFORE updateIfDirty() to ensure meshes that finished loading are acknowledged before the render update begins. Meshes that load after this point will be deferred to the next frame.

Definition at line 1816 of file RenderingDataManager.cpp.

References markDirty(), and pendingMeshLoads_.

Here is the call graph for this function:

◆ queueTextureForUpload()

void EngineCore::RenderingDataManager::queueTextureForUpload ( Texture * texture)

Queue a texture for GPU upload Called by AssetManager when a new texture is created and needs uploading.

Parameters
textureThe texture to queue for upload

Definition at line 1938 of file RenderingDataManager.cpp.

References texturesToUpload.

◆ setAssetManager()

void EngineCore::RenderingDataManager::setAssetManager ( AssetManager * assetManager)

Set the asset manager for material lookups. Required when Engine is null.

Definition at line 258 of file RenderingDataManager.cpp.

References injectedAssetManager.

◆ setInstancingEnabled()

void EngineCore::RenderingDataManager::setInstancingEnabled ( bool enabled)
inline

Enable or disable instancing mode.

Parameters
enabledWhether to use instanced rendering

Definition at line 237 of file RenderingDataManager.h.

References instancingEnabled_, and markDirty().

Here is the call graph for this function:

◆ setRenderer()

void EngineCore::RenderingDataManager::setRenderer ( Renderer * renderer)

Set the renderer for pipeline index lookups. Required when Engine is null.

Definition at line 263 of file RenderingDataManager.cpp.

References injectedRenderer.

◆ setSceneManager()

void EngineCore::RenderingDataManager::setSceneManager ( SceneManager * sceneManager)

Set the scene manager for retrieving actors. Required when Engine is null.

Definition at line 253 of file RenderingDataManager.cpp.

References injectedSceneManager.

◆ snapshotRenderableMeshes()

void EngineCore::RenderingDataManager::snapshotRenderableMeshes ( )
private

Take a snapshot of currently render-ready meshes. Called at the start of update cycle to ensure consistent iteration.

Definition at line 1906 of file RenderingDataManager.cpp.

References Ecs::RegistryManager::get(), EngineCore::MeshComponent::getMeshAsset(), EngineCore::MeshAsset::getMeshPrimitiveData(), EngineCore::MeshComponent::isVisible(), renderCycleMeshSnapshot_, and TRACY_ZONE_SCOPED_NAMED.

Referenced by updateIfDirty().

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

◆ updateIfDirty()

bool EngineCore::RenderingDataManager::updateIfDirty ( )

Triggers an update of all GPU buffers if dirty.

Returns
true if buffers were recreated and descriptor sets need updating

Definition at line 268 of file RenderingDataManager.cpp.

References instancingEnabled_, isDirty, snapshotRenderableMeshes(), TRACY_ZONE_SCOPED_NAMED, updatePrimitiveData(), updatePrimitiveDataInstanced(), and uploadMaterialBuffers().

Here is the call graph for this function:

◆ updatePrimitiveData()

bool EngineCore::RenderingDataManager::updatePrimitiveData ( )
private

Regenerates all buffers and the rendering ids of all objects, primitives and meshlets.

Returns
true if any buffer was recreated (requiring descriptor set updates)

Definition at line 296 of file RenderingDataManager.cpp.

References Ecs::MeshPrimitive::boundingSphere, Ecs::BoundingSphere::center, EngineCore::MeshPrimitiveRenderData::colorTextureId, context, dataVersion_, DEFAULT_MATERIAL_PIPELINE, EngineCore::DIFFUSE_FLAT_COLOR, EngineCore::DIFFUSE_SHADER, EngineCore::DYNAMIC_TEXTURES, Asset::Path::empty(), engine, EngineCore::Renderer::ensureOutputBufferSizes(), entityToPrimitiveIds_, Ecs::RegistryManager::get(), Asset::AssetManager< Key, AssetClass >::getAsset(), Asset::Path::getAssetHandle(), EngineCore::AssetManager::getMaterialAssetManager(), EngineCore::MeshComponent::getMeshAsset(), EngineCore::MeshAsset::getMeshPrimitiveData(), EngineCore::Renderer::getPipelineIndex(), EngineCore::MeshComponent::getWorldTransform(), injectedAssetManager, injectedRenderer, injectedSceneManager, isMeshInSnapshot(), EngineCore::MeshComponent::isVisible(), EngineCore::L0_SHADER, EngineCore::L1_SHADER, EngineCore::L2_SHADER, localBoundsBuffer, EngineCore::LocalBoundsData::localCenterAndRadius, EngineCore::MeshPrimitiveRenderData::materialId, Ecs::MeshPrimitive::materialPath, materialPathToDiffuseIndex_, materialPathToFlatColorIndex_, materialPathToNormalsIndex_, materialPathToPbrIndex_, meshlet_rendering_id, meshletBoundsData, meshletBuffer, EngineCore::PrimitiveMeshletData::meshletCount, meshletCount, Ecs::MeshPrimitive::meshletData, EngineCore::MeshletBounds::meshletIndex, EngineCore::PrimitiveMeshletData::meshletStartIndex, EngineCore::MOVABLE_DIFFUSE_SHADER, EngineCore::NORMALS_SHADER, pendingSyncObjects_, perObjectDataBuffer, EngineCore::PrimitiveMeshletData::pipelineID, EngineCore::MeshletBounds::pipelineIndex, EngineCore::UnifiedMeshlet::pipelineIndex, primitive_rendering_id, primitiveCount, primitiveCullingData, primitiveIdToComponent_, EngineCore::UnifiedMeshlet::primitiveIndex, primitiveMeshletData, primitiveRenderData, Ecs::MeshPrimitiveData::primitives, Ecs::BoundingSphere::radius, EngineCore::STATIC_LIGHTMAP, TRACY_ZONE_SCOPED_NAMED, triangleBuffer, EngineCore::UnifiedMeshlet::triangleCount, EngineCore::UnifiedMeshlet::triangleDataOffset, Ecs::MeshPrimitive::unpackedData, vertexBuffer, EngineCore::UnifiedMeshlet::vertexCount, EngineCore::UnifiedMeshlet::vertexDataOffset, EngineCore::MeshletBounds::worldPositionAndRadius, and EngineCore::ObjectCullingData::worldPositionAndRadius.

Referenced by updateIfDirty().

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

◆ updatePrimitiveDataInstanced()

bool EngineCore::RenderingDataManager::updatePrimitiveDataInstanced ( )
private

Instanced version of updatePrimitiveData using geometry deduplication. Separates geometry upload (once per unique mesh) from instance data (once per visible instance).

Returns
true if any buffer was recreated (requiring descriptor set updates)

Definition at line 709 of file RenderingDataManager.cpp.

References Ecs::MeshPrimitive::boundingSphere, Ecs::BoundingSphere::center, EngineCore::MeshGeometryData::clusterCount, clusterCount_, clusterGroupCount_, clusterGroupDataBuffer_, clusterLodDataBuffer_, EngineCore::MeshGeometryData::clusterStartIndex, EngineCore::InstanceData::colorTextureId, EngineCore::MeshPrimitiveRenderData::colorTextureId, committedGeometryCount_, committedMeshletCount_, committedSingleMeshletGeoCount_, committedTriangleCount_, committedVertexCount_, committedVsIndexCount_, context, dataVersion_, EngineCore::Debug, DEFAULT_MATERIAL_PIPELINE, EngineCore::DIFFUSE_FLAT_COLOR, EngineCore::DIFFUSE_SHADER, EngineCore::DYNAMIC_TEXTURES, Asset::Path::empty(), engine, EngineCore::Renderer::ensureOutputBufferSizes(), entityToPrimitiveIds_, EngineCore::SingleMeshletGeometryData::firstIndex, geometryCache_, geometryNeedsFullRebuild_, Ecs::RegistryManager::get(), Asset::AssetManager< Key, AssetClass >::getAsset(), Asset::Path::getAssetHandle(), EngineCore::AssetManager::getMaterialAssetManager(), EngineCore::MeshComponent::getMeshAsset(), EngineCore::MeshAsset::getMeshPrimitiveData(), EngineCore::Renderer::getPipelineIndex(), EngineCore::MeshComponent::getWorldTransform(), EngineCore::MeshGeometryData::groupCount, EngineCore::MeshGeometryData::groupStartIndex, EngineCore::SingleMeshletGeometryData::indexCount, EngineCore::Info, injectedAssetManager, injectedRenderer, injectedSceneManager, instanceCount_, instanceCullingDataBuffer, instanceDataBuffer, EngineCore::InstanceCullingData::instanceId, EngineCore::MeshGeometryMapping::isSingleMeshlet, EngineCore::MeshComponent::isVisible(), EngineCore::L0_SHADER, EngineCore::L1_SHADER, EngineCore::L2_SHADER, localBoundsBuffer, EngineCore::MeshGeometryMapping::localBoundsCenter, EngineCore::MeshGeometryMapping::localBoundsRadius, EngineCore::LocalBoundsData::localCenterAndRadius, Ecs::MeshPrimitive::lodHierarchy, LogLOD, EngineCore::InstanceData::materialId, EngineCore::MeshPrimitiveRenderData::materialId, Ecs::MeshPrimitive::materialPath, materialPathToDiffuseIndex_, materialPathToFlatColorIndex_, materialPathToNormalsIndex_, materialPathToPbrIndex_, meshGeometryDataBuffer, EngineCore::InstanceCullingData::meshGeometryId, EngineCore::InstanceData::meshGeometryId, EngineCore::MeshGeometryMapping::meshGeometryId, meshlet_rendering_id, meshletBoundsData, meshletBuffer, EngineCore::MeshGeometryData::meshletCount, EngineCore::MeshGeometryMapping::meshletCount, EngineCore::PrimitiveMeshletData::meshletCount, meshletCount, Ecs::MeshPrimitive::meshletData, EngineCore::ClusterLodData::meshletIndex, EngineCore::MeshletBounds::meshletIndex, EngineCore::MeshGeometryData::meshletStartIndex, EngineCore::MeshGeometryMapping::meshletStartIndex, EngineCore::PrimitiveMeshletData::meshletStartIndex, EngineCore::MOVABLE_DIFFUSE_SHADER, multiMeshletGeometryCount_, nextGeometryId_, nextMeshletId_, EngineCore::NORMALS_SHADER, EngineCore::ObjectCullingData::objectIndex, pendingSyncObjects_, perObjectDataBuffer, EngineCore::PrimitiveMeshletData::pipelineID, EngineCore::MeshGeometryData::pipelineIndex, EngineCore::MeshGeometryMapping::pipelineIndex, EngineCore::MeshletBounds::pipelineIndex, EngineCore::SingleMeshletGeometryData::pipelineIndex, EngineCore::UnifiedMeshlet::pipelineIndex, primitive_rendering_id, primitiveCount, primitiveCullingData, primitiveIdToComponent_, EngineCore::UnifiedMeshlet::primitiveIndex, primitiveMeshletData, primitiveRenderData, Ecs::BoundingSphere::radius, EngineCore::MeshGeometryData::singleMeshletGeoIndex, singleMeshletGeometryBuffer_, singleMeshletGeometryCount_, EngineCore::STATIC_LIGHTMAP, TRACY_ZONE_SCOPED_NAMED, EngineCore::MeshGeometryMapping::triangleBaseOffset, triangleBuffer, EngineCore::UnifiedMeshlet::triangleCount, EngineCore::UnifiedMeshlet::triangleDataOffset, uniqueGeometryCount_, Ecs::MeshPrimitive::unpackedData, EngineCore::MeshGeometryMapping::vertexBaseOffset, vertexBuffer, EngineCore::UnifiedMeshlet::vertexCount, EngineCore::UnifiedMeshlet::vertexDataOffset, EngineCore::SingleMeshletGeometryData::vertexOffset, VS_LOG, vsIndexBuffer_, EngineCore::MeshGeometryMapping::vsIndexCount, EngineCore::MeshGeometryMapping::vsIndexOffset, EngineCore::Warning, workingClusterGroupData_, workingClusterLodData_, workingGeometryDataBuffer_, workingInstanceCullingData_, workingInstanceData_, workingLocalBoundsDataBuffer_, workingMeshletBoundsBuffer_, workingMeshletDataBuffer_, workingPerObjectData_, workingPrimitiveCullingBuffer_, workingPrimitiveMeshletBuffer_, workingPrimitiveRenderData_, workingSingleMeshletGeoData_, workingTriangleBuffer_, workingVertexBuffer_, workingVsIndexBuffer_, EngineCore::InstanceData::worldMatrix, EngineCore::InstanceCullingData::worldPositionAndRadius, EngineCore::MeshletBounds::worldPositionAndRadius, and EngineCore::ObjectCullingData::worldPositionAndRadius.

Referenced by updateIfDirty().

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

◆ updateTransforms()

bool EngineCore::RenderingDataManager::updateTransforms ( )

Updates only transform-related buffers (world matrices, bounding spheres)

This is called every frame and only performs work if any entity has the Ecs::TransformDirty tag. Much cheaper than full rebuild since it doesn't touch mesh geometry, meshlets, or materials.

Updates:

  • perObjectDataBuffer (mat4 world transforms)
  • primitiveCullingData (world-space bounding spheres)
Returns
true if transforms were updated and sync objects are pending

Definition at line 1473 of file RenderingDataManager.cpp.

References cachedTransforms_, context, entityToPrimitiveIds_, Ecs::RegistryManager::get(), EngineCore::MeshComponent::getMeshAsset(), EngineCore::MeshAsset::getMeshPrimitiveData(), EngineCore::MeshComponent::getWorldTransform(), EngineCore::MeshComponent::isVisible(), markDirty(), Ecs::MeshPrimitive::meshletData, pendingTransformSyncObjects_, perObjectDataBuffer, primitive_rendering_id, primitiveCount, primitiveIdToComponent_, TRACY_ZONE_SCOPED_NAMED, transformCacheValid_, and Ecs::MeshPrimitive::unpackedData.

Here is the call graph for this function:

◆ uploadMaterialBuffers()

void EngineCore::RenderingDataManager::uploadMaterialBuffers ( )

Upload material data from MaterialAssets to GPU buffers.

This method collects material data for each pipeline type, converts it to GPU-compatible structures, and uploads to the corresponding material buffers. Should be called after collectMaterialsFromScene() when materials change.

Date
2026-01-21

Definition at line 2028 of file RenderingDataManager.cpp.

References EngineCore::GpuDiffuseFlatColorMaterial::_padding, EngineCore::GpuPbrMaterial::ambient_term, EngineCore::GpuDiffuseShaderMaterial::baseColorFactor, EngineCore::GpuPbrMaterial::baseColorFactor, EngineCore::GpuDiffuseShaderMaterial::baseColorTextureIndex, EngineCore::GpuPbrMaterial::baseColorTextureIndex, EngineCore::GpuDiffuseFlatColorMaterial::color, EngineCore::VulkanBuffer::create(), EngineCore::GpuNormalsMaterial::debug, EngineCore::GpuPbrMaterial::debug_mode, EngineCore::VulkanBuffer::destroy(), EngineCore::DIFFUSE_FLAT_COLOR, EngineCore::DIFFUSE_SHADER, EngineCore::DYNAMIC_TEXTURES, EngineCore::GpuPbrMaterial::emissiveFactor, EngineCore::GpuPbrMaterial::emissiveTextureIndex, engine, Asset::AssetManager< Key, AssetClass >::forEachAsset(), Asset::Path::getAssetHandle(), EngineCore::MaterialAsset::getBaseColorTextureHandle(), EngineCore::MaterialAsset::getBaseColorTexturePath(), EngineCore::VulkanBuffer::getBufferSize(), EngineCore::MaterialAsset::getData(), EngineCore::MaterialAsset::getEmissiveTextureHandle(), EngineCore::MaterialAsset::getEmissiveTexturePath(), EngineCore::TypedTextureHandle< Type >::getId(), EngineCore::MaterialAsset::getLightmapTextureHandle(), EngineCore::MaterialAsset::getLightmapTexturePath(), Asset::AssetBase::getLoadingState(), EngineCore::AssetManager::getMaterialAssetManager(), EngineCore::MaterialAsset::getMetallicRoughnessTextureHandle(), EngineCore::MaterialAsset::getMetallicRoughnessTexturePath(), EngineCore::MaterialAsset::getNormalTextureHandle(), EngineCore::MaterialAsset::getNormalTexturePath(), EngineCore::TextureHandleRegistry::getPathForHandle(), EngineCore::AssetManager::getTextureDescriptorIndex(), EngineCore::AssetManager::getTextureHandleRegistry(), EngineCore::MaterialAsset::getType(), EngineCore::GpuPbrMaterial::hasLightmap, injectedAssetManager, EngineCore::TypedTextureHandle< Type >::isValid(), EngineCore::L0_SHADER, EngineCore::L1_SHADER, EngineCore::L2_SHADER, EngineCore::GpuPbrMaterial::lightmapTextureIndex, Asset::LOADED, EngineCore::VulkanBuffer::map(), materialBuffersByPipeline, materialPathToDiffuseIndex_, materialPathToFlatColorIndex_, materialPathToNormalsIndex_, materialPathToPbrIndex_, materialsDirty_, EngineCore::GpuPbrMaterial::metallicFactor, EngineCore::MIN_BUFFER_SIZE, EngineCore::MOVABLE_DIFFUSE_SHADER, EngineCore::NORMALS_SHADER, EngineCore::GpuPbrMaterial::normalScale, EngineCore::GpuPbrMaterial::normalTextureIndex, EngineCore::TextureHandleRegistry::resolveDescriptorIndex(), EngineCore::GpuPbrMaterial::roughnessFactor, EngineCore::GpuPbrMaterial::roughnessMetallicTextureIndex, EngineCore::VulkanBuffer::setDebugName(), EngineCore::GpuPbrMaterial::sh_scale, EngineCore::STATIC_LIGHTMAP, EngineCore::GpuPbrMaterial::tone_mapping, EngineCore::VulkanBuffer::unmap(), workingDiffuseMaterials_, workingFlatColorMaterials_, workingNormalsMaterials_, and workingPbrMaterials_.

Referenced by updateIfDirty().

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

◆ Engine

friend class Engine
friend

Definition at line 36 of file RenderingDataManager.h.

References context, Engine, and engine.

Referenced by Engine, and RenderingDataManager().

Member Data Documentation

◆ cachedTransforms_

std::vector<glm::mat4> EngineCore::RenderingDataManager::cachedTransforms_
private

Definition at line 526 of file RenderingDataManager.h.

Referenced by updateTransforms().

◆ clusterCount_

uint32_t EngineCore::RenderingDataManager::clusterCount_ = 0
private

Total clusters across all LOD levels.

Definition at line 484 of file RenderingDataManager.h.

Referenced by getClusterCount(), hasLodData(), and updatePrimitiveDataInstanced().

◆ clusterGroupCount_

uint32_t EngineCore::RenderingDataManager::clusterGroupCount_ = 0
private

Total cluster groups.

Definition at line 485 of file RenderingDataManager.h.

Referenced by getClusterGroupCount(), and updatePrimitiveDataInstanced().

◆ clusterGroupDataBuffer_

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::clusterGroupDataBuffer_
private

◆ clusterLodDataBuffer_

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::clusterLodDataBuffer_
private

◆ committedGeometryCount_

size_t EngineCore::RenderingDataManager::committedGeometryCount_ = 0
private

Geometries already on GPU.

Definition at line 474 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ committedMeshletCount_

size_t EngineCore::RenderingDataManager::committedMeshletCount_ = 0
private

Meshlets already on GPU.

Definition at line 473 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ committedSingleMeshletGeoCount_

size_t EngineCore::RenderingDataManager::committedSingleMeshletGeoCount_ = 0
private

Single-meshlet geometries already on GPU.

Definition at line 476 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ committedTriangleCount_

size_t EngineCore::RenderingDataManager::committedTriangleCount_ = 0
private

Triangles already on GPU.

Definition at line 472 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ committedVertexCount_

size_t EngineCore::RenderingDataManager::committedVertexCount_ = 0
private

Vertices already on GPU.

Definition at line 471 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ committedVsIndexCount_

size_t EngineCore::RenderingDataManager::committedVsIndexCount_ = 0
private

VS indices already on GPU.

Definition at line 475 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ context

◆ dataVersion_

uint64_t EngineCore::RenderingDataManager::dataVersion_ = 0
private

Version counter incremented on each buffer update RenderProcesses compare against this to know when to refresh descriptors

Definition at line 456 of file RenderingDataManager.h.

Referenced by getDataVersion(), updatePrimitiveData(), and updatePrimitiveDataInstanced().

◆ DEFAULT_BLACK_TEXTURE_PATH

const char* EngineCore::RenderingDataManager::DEFAULT_BLACK_TEXTURE_PATH = "Engine/textures/DefaultBlack.png"
staticconstexprprivate

Definition at line 623 of file RenderingDataManager.h.

Referenced by getValidTextureIndex(), and initializeDefaultTextures().

◆ DEFAULT_NORMAL_TEXTURE_PATH

const char* EngineCore::RenderingDataManager::DEFAULT_NORMAL_TEXTURE_PATH = "Engine/textures/DefaultNormal.png"
staticconstexprprivate

Definition at line 621 of file RenderingDataManager.h.

Referenced by getValidTextureIndex(), and initializeDefaultTextures().

◆ DEFAULT_WHITE_TEXTURE_PATH

const char* EngineCore::RenderingDataManager::DEFAULT_WHITE_TEXTURE_PATH = "Engine/textures/DefaultWhite.png"
staticconstexprprivate

Definition at line 622 of file RenderingDataManager.h.

Referenced by getValidTextureIndex(), and initializeDefaultTextures().

◆ defaultTexturesLoading_

bool EngineCore::RenderingDataManager::defaultTexturesLoading_ = false
private

True if loadEcsTexture has been called.

Definition at line 624 of file RenderingDataManager.h.

Referenced by initializeDefaultTextures().

◆ engine

◆ entityToPrimitiveIds_

std::unordered_map<entt::entity, std::vector< uint32_t > > EngineCore::RenderingDataManager::entityToPrimitiveIds_
private

◆ geometryCache_

std::unordered_map<GeometryCacheKey, MeshGeometryMapping, GeometryCacheKeyHash> EngineCore::RenderingDataManager::geometryCache_
private

Geometry cache - maps unique primitives to their shared geometry data This survives instance changes, only updated when meshes are loaded/unloaded

Definition at line 512 of file RenderingDataManager.h.

Referenced by invalidateGeometryCache(), and updatePrimitiveDataInstanced().

◆ geometryDirty_

bool EngineCore::RenderingDataManager::geometryDirty_ = false
private

Unique meshes changed (requires geometry buffer update)

Definition at line 460 of file RenderingDataManager.h.

Referenced by invalidateGeometryCache().

◆ geometryNeedsFullRebuild_

bool EngineCore::RenderingDataManager::geometryNeedsFullRebuild_ = true
private

True on startup or after mesh unload.

Definition at line 477 of file RenderingDataManager.h.

Referenced by invalidateGeometryCache(), and updatePrimitiveDataInstanced().

◆ gpuTextures

std::vector<Texture*> EngineCore::RenderingDataManager::gpuTextures
private

Textures currently on GPU.

Definition at line 532 of file RenderingDataManager.h.

Referenced by clearTexturesToUpload(), generateTextureDescriptorInfos(), and getTextureCount().

◆ injectedAssetManager

◆ injectedRenderer

Renderer* EngineCore::RenderingDataManager::injectedRenderer = nullptr
private

◆ injectedSceneManager

SceneManager* EngineCore::RenderingDataManager::injectedSceneManager = nullptr
private

◆ instanceCount_

uint32_t EngineCore::RenderingDataManager::instanceCount_ = 0
private

Number of instances in buffers.

Definition at line 465 of file RenderingDataManager.h.

Referenced by getInstanceCount(), and updatePrimitiveDataInstanced().

◆ instanceCullingDataBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::instanceCullingDataBuffer
private

◆ instanceDataBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::instanceDataBuffer
private

◆ instancesDirty_

bool EngineCore::RenderingDataManager::instancesDirty_ = false
private

Instance list changed (requires instance buffer update)

Definition at line 461 of file RenderingDataManager.h.

◆ instancingEnabled_

bool EngineCore::RenderingDataManager::instancingEnabled_ = true
private

Feature flag for instanced rendering.

Definition at line 459 of file RenderingDataManager.h.

Referenced by isInstancingEnabled(), setInstancingEnabled(), and updateIfDirty().

◆ isDirty

bool EngineCore::RenderingDataManager::isDirty = false
private

a flag which defers the update of the buffer updates to the end of the frame.

Definition at line 452 of file RenderingDataManager.h.

Referenced by clearDirty(), markDirty(), needsUpdate(), and updateIfDirty().

◆ localBoundsBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::localBoundsBuffer
private

◆ materialBuffersByPipeline

std::unordered_map<PipelineNames, std::optional<VulkanBuffer> > EngineCore::RenderingDataManager::materialBuffersByPipeline
private

◆ materialPathToDiffuseIndex_

std::unordered_map<std::string, uint32_t> EngineCore::RenderingDataManager::materialPathToDiffuseIndex_
private

◆ materialPathToFlatColorIndex_

std::unordered_map<std::string, uint32_t> EngineCore::RenderingDataManager::materialPathToFlatColorIndex_
private

Maps material path -> buffer index for each pipeline buffer type Key: material asset handle string, Value: index in the corresponding GPU buffer Materials are collected from MaterialAssetManager directly, decoupled from MeshPrimitiveData

Definition at line 542 of file RenderingDataManager.h.

Referenced by updatePrimitiveData(), updatePrimitiveDataInstanced(), and uploadMaterialBuffers().

◆ materialPathToNormalsIndex_

std::unordered_map<std::string, uint32_t> EngineCore::RenderingDataManager::materialPathToNormalsIndex_
private

◆ materialPathToPbrIndex_

std::unordered_map<std::string, uint32_t> EngineCore::RenderingDataManager::materialPathToPbrIndex_
private

◆ materialsDirty_

bool EngineCore::RenderingDataManager::materialsDirty_ = true
private

True if material buffers need re-upload

Definition at line 538 of file RenderingDataManager.h.

Referenced by markMaterialsDirty(), needsMaterialUpdate(), and uploadMaterialBuffers().

◆ meshGeometryDataBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::meshGeometryDataBuffer
private

◆ meshletBoundsData

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::meshletBoundsData
private

◆ meshletBuffer

◆ meshletCount

uint32_t EngineCore::RenderingDataManager::meshletCount = 0
private

◆ multiMeshletGeometryCount_

uint32_t EngineCore::RenderingDataManager::multiMeshletGeometryCount_ = 0
private

Geometries with meshletCount > 1 (mesh shader path)

Definition at line 481 of file RenderingDataManager.h.

Referenced by getMultiMeshletGeometryCount(), and updatePrimitiveDataInstanced().

◆ nextGeometryId_

uint32_t EngineCore::RenderingDataManager::nextGeometryId_ = 0
private

Next geometry ID to assign.

Definition at line 469 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ nextMeshletId_

uint32_t EngineCore::RenderingDataManager::nextMeshletId_ = 0
private

Next meshlet ID to assign.

Definition at line 470 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ pendingMeshLoads_

std::vector<MeshAsset*> EngineCore::RenderingDataManager::pendingMeshLoads_
private

Definition at line 577 of file RenderingDataManager.h.

Referenced by onMeshLoaded(), and processPendingMeshLoads().

◆ pendingSyncObjects_

std::vector<VulkanStagedBufferSyncObjects> EngineCore::RenderingDataManager::pendingSyncObjects_
private

◆ pendingTransformSyncObjects_

std::vector<VulkanStagedBufferSyncObjects> EngineCore::RenderingDataManager::pendingTransformSyncObjects_
private

◆ perObjectDataBuffer

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

◆ pipelinePrimitiveCounts

std::unordered_map<PipelineNames, uint32_t> EngineCore::RenderingDataManager::pipelinePrimitiveCounts
private

Count of primitives per pipeline.

Definition at line 516 of file RenderingDataManager.h.

Referenced by collectMaterialsFromScene().

◆ primitiveCount

uint32_t EngineCore::RenderingDataManager::primitiveCount = 0
private

◆ primitiveCullingData

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::primitiveCullingData
private

◆ primitiveIdToComponent_

std::unordered_map< uint32_t , MeshComponent*> EngineCore::RenderingDataManager::primitiveIdToComponent_
private

◆ primitiveMeshletData

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::primitiveMeshletData
private

◆ primitiveRenderData

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::primitiveRenderData
private

◆ primitiveToPipeline

std::unordered_map< uint32_t , PipelineNames> EngineCore::RenderingDataManager::primitiveToPipeline
private

Maps primitive IDs to their pipeline.

Definition at line 515 of file RenderingDataManager.h.

Referenced by collectMaterialsFromScene(), and getPipelineForPrimitive().

◆ renderCycleMeshSnapshot_

std::unordered_set<MeshAsset*> EngineCore::RenderingDataManager::renderCycleMeshSnapshot_
private

Definition at line 581 of file RenderingDataManager.h.

Referenced by isMeshInSnapshot(), and snapshotRenderableMeshes().

◆ shProbeBuffer_

std::optional<VulkanBuffer> EngineCore::RenderingDataManager::shProbeBuffer_
private

SHProbeData buffer at binding 18.

Definition at line 548 of file RenderingDataManager.h.

Referenced by getSHProbeBuffer(), initializeSHProbeBuffer(), and ~RenderingDataManager().

◆ shProbeData_

std::vector<SHProbeData> EngineCore::RenderingDataManager::shProbeData_
private

CPU-side SH probe data.

Definition at line 549 of file RenderingDataManager.h.

Referenced by initializeSHProbeBuffer().

◆ singleMeshletGeometryBuffer_

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::singleMeshletGeometryBuffer_
private

◆ singleMeshletGeometryCount_

uint32_t EngineCore::RenderingDataManager::singleMeshletGeometryCount_ = 0
private

Geometries with meshletCount == 1 (vertex shader path)

Definition at line 480 of file RenderingDataManager.h.

Referenced by getSingleMeshletGeometryCount(), hasVertexShaderPath(), and updatePrimitiveDataInstanced().

◆ texturesToUpload

std::vector<Texture*> EngineCore::RenderingDataManager::texturesToUpload
private

Textures waiting for GPU upload.

Definition at line 531 of file RenderingDataManager.h.

Referenced by clearTexturesToUpload(), getTexturesToUpload(), hasTexturesToUpload(), and queueTextureForUpload().

◆ transformCacheValid_

bool EngineCore::RenderingDataManager::transformCacheValid_ = false
private

Definition at line 528 of file RenderingDataManager.h.

Referenced by markDirty(), and updateTransforms().

◆ triangleBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::triangleBuffer
private

◆ uniqueGeometryCount_

uint32_t EngineCore::RenderingDataManager::uniqueGeometryCount_ = 0
private

Number of unique geometries in buffers.

Definition at line 464 of file RenderingDataManager.h.

Referenced by getUniqueGeometryCount(), and updatePrimitiveDataInstanced().

◆ vertexBuffer

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::vertexBuffer
private

◆ vsIndexBuffer_

std::optional<VulkanStagedBuffer> EngineCore::RenderingDataManager::vsIndexBuffer_
private

◆ workingClusterGroupData_

std::vector<ClusterGroupData> EngineCore::RenderingDataManager::workingClusterGroupData_
private

Definition at line 601 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingClusterLodData_

std::vector<ClusterLodData> EngineCore::RenderingDataManager::workingClusterLodData_
private

Definition at line 600 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingDiffuseMaterials_

std::vector<GpuDiffuseShaderMaterial> EngineCore::RenderingDataManager::workingDiffuseMaterials_
private

Definition at line 616 of file RenderingDataManager.h.

Referenced by uploadMaterialBuffers().

◆ workingFlatColorMaterials_

std::vector<GpuDiffuseFlatColorMaterial> EngineCore::RenderingDataManager::workingFlatColorMaterials_
private

Definition at line 615 of file RenderingDataManager.h.

Referenced by uploadMaterialBuffers().

◆ workingGeometryDataBuffer_

std::vector<MeshGeometryData> EngineCore::RenderingDataManager::workingGeometryDataBuffer_
private

Definition at line 589 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingInstanceCullingData_

std::vector<InstanceCullingData> EngineCore::RenderingDataManager::workingInstanceCullingData_
private

Definition at line 605 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingInstanceData_

std::vector<InstanceData> EngineCore::RenderingDataManager::workingInstanceData_
private

Definition at line 604 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingLocalBoundsDataBuffer_

std::vector<LocalBoundsData> EngineCore::RenderingDataManager::workingLocalBoundsDataBuffer_
private

Definition at line 609 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingMeshletBoundsBuffer_

std::vector<MeshletBounds> EngineCore::RenderingDataManager::workingMeshletBoundsBuffer_
private

Definition at line 591 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingMeshletDataBuffer_

std::vector<UnifiedMeshlet> EngineCore::RenderingDataManager::workingMeshletDataBuffer_
private

Definition at line 590 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingNormalsMaterials_

std::vector<GpuNormalsMaterial> EngineCore::RenderingDataManager::workingNormalsMaterials_
private

Definition at line 618 of file RenderingDataManager.h.

Referenced by uploadMaterialBuffers().

◆ workingPbrMaterials_

std::vector<GpuPbrMaterial> EngineCore::RenderingDataManager::workingPbrMaterials_
private

Definition at line 617 of file RenderingDataManager.h.

Referenced by uploadMaterialBuffers().

◆ workingPerObjectData_

std::vector<glm::mat4> EngineCore::RenderingDataManager::workingPerObjectData_
private

Definition at line 611 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingPrimitiveCullingBuffer_

std::vector<ObjectCullingData> EngineCore::RenderingDataManager::workingPrimitiveCullingBuffer_
private

Definition at line 608 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingPrimitiveMeshletBuffer_

std::vector<PrimitiveMeshletData> EngineCore::RenderingDataManager::workingPrimitiveMeshletBuffer_
private

Definition at line 610 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingPrimitiveRenderData_

std::vector<MeshPrimitiveRenderData> EngineCore::RenderingDataManager::workingPrimitiveRenderData_
private

Definition at line 612 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingSingleMeshletGeoData_

std::vector<SingleMeshletGeometryData> EngineCore::RenderingDataManager::workingSingleMeshletGeoData_
private

Definition at line 597 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingTriangleBuffer_

std::vector<Ecs::PackedTriangle> EngineCore::RenderingDataManager::workingTriangleBuffer_
private

Definition at line 593 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingVertexBuffer_

std::vector<Vertex> EngineCore::RenderingDataManager::workingVertexBuffer_
private

Definition at line 592 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().

◆ workingVsIndexBuffer_

std::vector<uint32_t> EngineCore::RenderingDataManager::workingVsIndexBuffer_
private

Definition at line 596 of file RenderingDataManager.h.

Referenced by updatePrimitiveDataInstanced().


The documentation for this class was generated from the following files: