Foundation
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
GPUSceneImpl Struct Reference

Classes

struct  BlobCopyTask
 
struct  DynamicTextureGPUUpdate
 
struct  DynamicTextureUpload
 
struct  Geometry
 
struct  PendingBufferUpload
 
struct  PendingGeometryUpload
 
struct  PendingTextureUpload
 
struct  Texture
 
struct  UploadBatchState
 

Public Types

enum class  ResourceState : uint8_t { Queued , Uploading , Ready , Failed }
 
using Result = GPUScene::Result
 
using UpdateResult = GPUScene::UpdateResult
 
using GPUSceneTables = GPUScene::GPUSceneTables
 
using MemoryStat = GPUScene::MemoryStat
 
using TLASBuildResult = GPUScene::TLASBuildResult
 

Public Member Functions

void EnsureTLASCapacity (uint32_t totalInstances)
 
uint32_t CountLiveInstances () const
 
uint32_t CountTLASInstances () const
 
GeometryResolveGeometry (GeometryHandle handle)
 
Geometry const * ResolveGeometry (GeometryHandle handle) const
 
void FreeGeometry (uint32_t slot)
 
Vector< Texture > & TextureSlots (bool is3D)
 
Vector< Texture > const & TextureSlots (bool is3D) const
 
BindlessPoolTexturePool (bool is3D)
 
BindlessPool const & TexturePool (bool is3D) const
 
void FreeTextureSlot (bool is3D, uint32_t slot)
 
BindlessPoolSelectTexturePool (RHITextureDimension viewDimension)
 
BindlessPool const & SelectTexturePool (RHITextureDimension viewDimension) const
 
template<typename T >
void EnqueueUpload (MPMCQueue< T > &queue, T &&item)
 
bool UploadBatchBegin ()
 
bool UploadBatchMoveNext (size_t timeout)
 
void PrepareUploads (UploadBatchState &state)
 
void DecodeUploads (UploadBatchState &state, size_t begin, size_t end, JobContext &context)
 
void SubmitUploads (UploadBatchState &state)
 
void UploadBatchEnd (UploadBatchState &state)
 
void SubmitBLAS (UploadBatchState &state, ImmediateSubmitDesc const &submitDesc)
 
void SubmitBLASCompaction (UploadBatchState &state)
 
Result ReserveMesh (FSerializedMesh const &src, GSMesh &outHeader, uint32_t &outOffset)
 
Result ReserveCurve (FSerializedCurve const &src, GSCurveSet &outHeader, uint32_t &outOffset)
 
size_t StageMesh (ImmediateUpload::UploadBatch *batch, FSerializedMesh const &src, GSMesh const &header, uint32_t offset, Vector< BlobCopyTask > &outWrites)
 
size_t StageCurve (ImmediateUpload::UploadBatch *batch, FSerializedCurve const &src, GSCurveSet const &header, uint32_t offset, Vector< BlobCopyTask > &outWrites)
 
size_t StageTextureSubresource (ImmediateUpload::UploadBatch *batch, FSerializedTexture const &source, RHITexture *texture, uint32_t layer, uint32_t mip, Vector< BlobCopyTask > &outWrites)
 
void FlushDirectGeometryUpload ()
 
Span< GSInstanceAllocateInstance (uint32_t count, uint32_t &outOffset)
 
Span< GSMaterialAllocateMaterial (uint32_t count, uint32_t &outOffset)
 
Span< GSLightAllocateLight (uint32_t count, uint32_t &outOffset)
 
 GPUSceneImpl (GPUScene &owner, RHIDevice *device, JobSystem *jobs, Allocator *allocator, GPUSceneDesc const &desc, AllocatorStack *frameScratch)
 
 ~GPUSceneImpl ()
 
Result Upload (FBlobDeserializer *blobs, FSerializedMesh const &source, GeometryHandle &outHandle)
 
Result Upload (FImportedMesh const &source, GeometryHandle &outHandle)
 
Result Allocate (uint32_t vertexCount, uint32_t indexCount, GeometryHandle &outHandle, bool isGpu)
 
Result Allocate (uint32_t vertexCount, uint32_t indexCount, uint32_t leafCount, GeometryHandle &outHandle, bool isGpu)
 
Result Allocate (RHITextureDesc const &desc, const char *debugName, TextureHandle &outHandle, bool isGpu)
 
Result Upload (FBlobDeserializer *blobs, FSerializedCurve const &source, GeometryHandle &outHandle)
 
Result Upload (FBlobDeserializer *blobs, FSerializedTexture const &source, TextureHandle &outTexture, const char *debugName=nullptr, bool pinned=false)
 
Result Upload (FTexture const &source, TextureHandle &outTexture, const char *debugName=nullptr, bool pinned=false)
 
Result UploadEnvironmentMap (FTexture const &source)
 
Result Upload (RHIBuffer *dst, Span< const unsigned char > data, uint32_t dstOffset=0)
 
Result Query (GeometryHandle handle) const
 
Result Query (TextureHandle texture) const
 
void Join ()
 
Result Poll (size_t timeout)
 
GPUSceneTables BeginScene (uint32_t instanceCount, uint32_t materialCount, uint32_t lightCount)
 
UpdateResult EndScene (GPUSceneTables &tables)
 
void DbgGetMemoryStatistics (Vector< MemoryStat > &outStats) const
 
String DbgGetBufferStatistics () const
 
TLASBuildResult BuildTLAS (RHICommandList *cmd, bool update)
 
void Collect ()
 
void Reset ()
 
uint32_t AllocateDynamicStaging (uint32_t size, uint32_t alignment)
 
void AllocateDynamicBLAS (Geometry &g)
 
bool HasDynamicGeometry () const
 
bool HasDynamicTextures () const
 
bool HasCurveGeometry () const
 
void BeginDynamicUpdate ()
 
void UpdateDynamicMeshGPU (GeometryHandle handle, bool updateVertices, bool updateIndices)
 
void UpdateDynamicCurveGPU (GeometryHandle handle, bool updateVertices, bool updateIndices, bool updateLeaves)
 
void UpdateDynamicMeshCPU (GeometryHandle handle, Span< const FQVertex > vertices, Span< const uint32_t > indices)
 
void UpdateDynamicCurveCPU (GeometryHandle handle, Span< const FCurveDOTSVertex > vertices, Span< const uint32_t > indices, Span< const FCurveLeaf > leaves)
 
void UpdateDynamicTextureCPU (TextureHandle handle, FTexture const &source)
 
uint32_t UpdateDynamicTextureGPU (TextureHandle handle, GPUScene::DynamicTextureGPUAccess access)
 
void EndDynamicUpdate ()
 
void UploadDynamicGeometryCPU (RHICommandList *cmd)
 
void UploadDynamicTexturesCPU (RHICommandList *cmd)
 
void BeginDynamicTextureGPU (RHICommandList *cmd, bool is3D, GPUScene::GPUScene::DynamicTextureGPUAccess access)
 
void EndDynamicTextureGPU (RHICommandList *cmd, bool is3D, GPUScene::DynamicTextureGPUAccess access)
 
RHITextureResolveDynamicTextureGPU (TextureHandle handle, RHITextureUsage requiredUsage)
 
void CompleteDynamicTextureGPU (TextureHandle handle, GPUScene::DynamicTextureGPUAccess access)
 
void BuildBLAS (RHICommandList *cmd)
 

Public Attributes

GPUSceneowner
 
RHIDevicemDevice {nullptr}
 
JobSystemmJobs {nullptr}
 
AllocatormAllocator {GLOBAL_ALLOC}
 
AllocatorStackmStackAlloc {nullptr}
 
Vector< GeometrymGeometry
 
Vector< uint32_t > mGeometryFreelist
 
RHIDeviceScopedHandle< RHIVirtualAllocatormPrimitiveAlloc
 
char * mPrimitiveMapped {nullptr}
 
bool mDirectGeometryUpload {false}
 
bool mDynamicIsUpdate {false}
 
char * mDynamicStagingMapped {nullptr}
 
RHIDeviceScopedHandle< RHIBuffermDynamicPrimitiveBuffer
 
RHIDeviceScopedHandle< RHIBuffermDynamicStagingBuffer
 
RHIDeviceScopedHandle< RHIVirtualAllocatormDynamicPrimitiveAlloc
 
uint32_t mDynamicStagingFrames {0}
 
uint32_t mDynamicStagingFrameIndex {0}
 
uint32_t mDynamicStagingFrameSize {0}
 
uint32_t mDynamicStagingCursor {0}
 
Vector< RHICommandList::CopyBufferRegionmDynamicUploadRegions
 
Vector< DynamicTextureUploadmDynamicTextureUploads
 
Vector< DynamicTextureGPUUpdatemDynamicTextureGPUUpdates
 
Vector< uint32_t > mDynamicTextures
 
Vector< uint32_t > mDynamicGeometries
 
uint32_t mLastRefitCount {0}
 
uint32_t mLastRebuildCount {0}
 
uint32_t mMeshletGlobalCounter {0}
 
UploadGPURingBuffer< GSInstancemInstanceBuffer
 
UploadGPURingBuffer< GSMaterialmMaterialBuffer
 
bool mLightBVHNeedsRefit {false}
 
UploadGPURingBuffer< GSLightmLightBuffer
 
UploadGPURingBuffer< GSEmissiveClustermEmissiveClusterBuffer
 
UploadGPURingBuffer< GSLightBVHNodemLightBVHNodeBuffer
 
Vector< LightBVHRefitLevelmLightBVHRefitLevels
 
UploadGPURingBuffer< uint32_t > mLightBVHLightIndexBuffer
 
UploadGPURingBuffer< uint2mLightBVHBitmaskBuffer
 
UploadGPURingBuffer< uint32_t > mLightBVHGlobalIndexBuffer
 
UploadGPURingBuffer< uint32_t > mLightBVHNodeIndexBuffer
 
Vector< RHIDeviceScopedHandle< RHIAccelerationStructure > > mBLASes
 
Vector< RHIDeviceScopedHandle< RHIBuffer > > mBLASBuffers
 
Vector< uint32_t > mBLASFreelist
 
Vector< RHIDeviceScopedHandle< RHIAccelerationStructure > > mCurveBLASes
 
Vector< RHIDeviceScopedHandle< RHIBuffer > > mCurveBLASBuffers
 
Vector< uint32_t > mCurveBLASFreelist
 
RHIDeviceScopedHandle< RHIBuffermLightGeometryBuffer
 
RHIDeviceScopedHandle< RHIAccelerationStructuremRectBLAS
 
RHIDeviceScopedHandle< RHIAccelerationStructuremDiskBLAS
 
RHIDeviceScopedHandle< RHIAccelerationStructuremSphereBLAS
 
RHIDeviceScopedHandle< RHIBuffermLightBLASBuffer
 
uint32_t mTLASInstanceStride {0}
 
RHIDeviceScopedHandle< RHIBuffermTLASBuffer
 
RHIDeviceScopedHandle< RHIBuffermScratchBufferTLAS
 
UploadGPURingBuffer< char > mTLASInstances
 
BindlessPool mTexture2DPool
 
BindlessPool mTexture3DPool
 
Vector< TexturemTexture2DSlots
 
Vector< TexturemTexture3DSlots
 
MPMCQueue< PendingGeometryUploadmUploadGeometryQueue
 
MPMCQueue< PendingTextureUploadmUploadTextureQueue
 
MPMCQueue< PendingBufferUploadmUploadBufferQueue
 
Atomic< size_t > mUploadPending {0}
 
UniquePtr< ImmediateUploadmImmediateUpload
 
size_t mImmediateUploadCapacity {}
 
UniquePtr< UploadBatchStatemActiveUpload
 
Mutex mUploadDriveMutex
 
Mutex mUploadStateMutex
 

Member Typedef Documentation

◆ GPUSceneTables

◆ MemoryStat

◆ Result

◆ TLASBuildResult

◆ UpdateResult

Member Enumeration Documentation

◆ ResourceState

enum class GPUSceneImpl::ResourceState : uint8_t
strong
Enumerator
Queued 
Uploading 
Ready 
Failed 

Constructor & Destructor Documentation

◆ GPUSceneImpl()

GPUSceneImpl::GPUSceneImpl ( GPUScene owner,
RHIDevice device,
JobSystem jobs,
Allocator allocator,
GPUSceneDesc const &  desc,
AllocatorStack frameScratch 
)

◆ ~GPUSceneImpl()

GPUSceneImpl::~GPUSceneImpl ( )

Member Function Documentation

◆ Allocate() [1/3]

GPUScene::Result GPUSceneImpl::Allocate ( RHITextureDesc const &  desc,
const char *  debugName,
TextureHandle outHandle,
bool  isGpu 
)

◆ Allocate() [2/3]

GPUScene::Result GPUSceneImpl::Allocate ( uint32_t  vertexCount,
uint32_t  indexCount,
GeometryHandle outHandle,
bool  isGpu 
)

◆ Allocate() [3/3]

GPUScene::Result GPUSceneImpl::Allocate ( uint32_t  vertexCount,
uint32_t  indexCount,
uint32_t  leafCount,
GeometryHandle outHandle,
bool  isGpu 
)

◆ AllocateDynamicBLAS()

void GPUSceneImpl::AllocateDynamicBLAS ( Geometry g)

◆ AllocateDynamicStaging()

uint32_t GPUSceneImpl::AllocateDynamicStaging ( uint32_t  size,
uint32_t  alignment 
)

◆ AllocateInstance()

Span< GSInstance > GPUSceneImpl::AllocateInstance ( uint32_t  count,
uint32_t &  outOffset 
)

◆ AllocateLight()

Span< GSLight > GPUSceneImpl::AllocateLight ( uint32_t  count,
uint32_t &  outOffset 
)

◆ AllocateMaterial()

Span< GSMaterial > GPUSceneImpl::AllocateMaterial ( uint32_t  count,
uint32_t &  outOffset 
)

◆ BeginDynamicTextureGPU()

void GPUSceneImpl::BeginDynamicTextureGPU ( RHICommandList cmd,
bool  is3D,
GPUScene::GPUScene::DynamicTextureGPUAccess  access 
)

◆ BeginDynamicUpdate()

void GPUSceneImpl::BeginDynamicUpdate ( )

◆ BeginScene()

GPUScene::GPUSceneTables GPUSceneImpl::BeginScene ( uint32_t  instanceCount,
uint32_t  materialCount,
uint32_t  lightCount 
)

◆ BuildBLAS()

void GPUSceneImpl::BuildBLAS ( RHICommandList cmd)

◆ BuildTLAS()

GPUScene::TLASBuildResult GPUSceneImpl::BuildTLAS ( RHICommandList cmd,
bool  update 
)

◆ Collect()

void GPUSceneImpl::Collect ( )

◆ CompleteDynamicTextureGPU()

void GPUSceneImpl::CompleteDynamicTextureGPU ( TextureHandle  handle,
GPUScene::DynamicTextureGPUAccess  access 
)

◆ CountLiveInstances()

uint32_t GPUSceneImpl::CountLiveInstances ( ) const

◆ CountTLASInstances()

uint32_t GPUSceneImpl::CountTLASInstances ( ) const

◆ DbgGetBufferStatistics()

String GPUSceneImpl::DbgGetBufferStatistics ( ) const

◆ DbgGetMemoryStatistics()

void GPUSceneImpl::DbgGetMemoryStatistics ( Vector< MemoryStat > &  outStats) const

◆ DecodeUploads()

void GPUSceneImpl::DecodeUploads ( UploadBatchState state,
size_t  begin,
size_t  end,
JobContext context 
)

◆ EndDynamicTextureGPU()

void GPUSceneImpl::EndDynamicTextureGPU ( RHICommandList cmd,
bool  is3D,
GPUScene::DynamicTextureGPUAccess  access 
)

◆ EndDynamicUpdate()

void GPUSceneImpl::EndDynamicUpdate ( )

◆ EndScene()

GPUScene::UpdateResult GPUSceneImpl::EndScene ( GPUSceneTables tables)

◆ EnqueueUpload()

template<typename T >
void GPUSceneImpl::EnqueueUpload ( MPMCQueue< T > &  queue,
T &&  item 
)

◆ EnsureTLASCapacity()

void GPUSceneImpl::EnsureTLASCapacity ( uint32_t  totalInstances)

◆ FlushDirectGeometryUpload()

void GPUSceneImpl::FlushDirectGeometryUpload ( )

◆ FreeGeometry()

void GPUSceneImpl::FreeGeometry ( uint32_t  slot)

◆ FreeTextureSlot()

void GPUSceneImpl::FreeTextureSlot ( bool  is3D,
uint32_t  slot 
)

◆ HasCurveGeometry()

bool GPUSceneImpl::HasCurveGeometry ( ) const
inline

◆ HasDynamicGeometry()

bool GPUSceneImpl::HasDynamicGeometry ( ) const
inline

◆ HasDynamicTextures()

bool GPUSceneImpl::HasDynamicTextures ( ) const
inline

◆ Join()

void GPUSceneImpl::Join ( )

◆ Poll()

GPUScene::Result GPUSceneImpl::Poll ( size_t  timeout)

◆ PrepareUploads()

void GPUSceneImpl::PrepareUploads ( UploadBatchState state)

◆ Query() [1/2]

GPUScene::Result GPUSceneImpl::Query ( GeometryHandle  handle) const

◆ Query() [2/2]

GPUScene::Result GPUSceneImpl::Query ( TextureHandle  texture) const

◆ ReserveCurve()

GPUScene::Result GPUSceneImpl::ReserveCurve ( FSerializedCurve const &  src,
GSCurveSet outHeader,
uint32_t &  outOffset 
)

◆ ReserveMesh()

GPUScene::Result GPUSceneImpl::ReserveMesh ( FSerializedMesh const &  src,
GSMesh &  outHeader,
uint32_t &  outOffset 
)

◆ Reset()

void GPUSceneImpl::Reset ( )

◆ ResolveDynamicTextureGPU()

RHITexture * GPUSceneImpl::ResolveDynamicTextureGPU ( TextureHandle  handle,
RHITextureUsage  requiredUsage 
)

◆ ResolveGeometry() [1/2]

GPUSceneImpl::Geometry * GPUSceneImpl::ResolveGeometry ( GeometryHandle  handle)

◆ ResolveGeometry() [2/2]

GPUSceneImpl::Geometry const * GPUSceneImpl::ResolveGeometry ( GeometryHandle  handle) const

◆ SelectTexturePool() [1/2]

BindlessPool & GPUSceneImpl::SelectTexturePool ( RHITextureDimension  viewDimension)

◆ SelectTexturePool() [2/2]

BindlessPool const & GPUSceneImpl::SelectTexturePool ( RHITextureDimension  viewDimension) const

◆ StageCurve()

size_t GPUSceneImpl::StageCurve ( ImmediateUpload::UploadBatch batch,
FSerializedCurve const &  src,
GSCurveSet const &  header,
uint32_t  offset,
Vector< BlobCopyTask > &  outWrites 
)

◆ StageMesh()

size_t GPUSceneImpl::StageMesh ( ImmediateUpload::UploadBatch batch,
FSerializedMesh const &  src,
GSMesh const &  header,
uint32_t  offset,
Vector< BlobCopyTask > &  outWrites 
)

◆ StageTextureSubresource()

size_t GPUSceneImpl::StageTextureSubresource ( ImmediateUpload::UploadBatch batch,
FSerializedTexture const &  source,
RHITexture texture,
uint32_t  layer,
uint32_t  mip,
Vector< BlobCopyTask > &  outWrites 
)

◆ SubmitBLAS()

void GPUSceneImpl::SubmitBLAS ( UploadBatchState state,
ImmediateSubmitDesc const &  submitDesc 
)

◆ SubmitBLASCompaction()

void GPUSceneImpl::SubmitBLASCompaction ( UploadBatchState state)

◆ SubmitUploads()

void GPUSceneImpl::SubmitUploads ( UploadBatchState state)

◆ TexturePool() [1/2]

BindlessPool & GPUSceneImpl::TexturePool ( bool  is3D)
inline

◆ TexturePool() [2/2]

BindlessPool const & GPUSceneImpl::TexturePool ( bool  is3D) const
inline

◆ TextureSlots() [1/2]

Vector< Texture > & GPUSceneImpl::TextureSlots ( bool  is3D)
inline

◆ TextureSlots() [2/2]

Vector< Texture > const & GPUSceneImpl::TextureSlots ( bool  is3D) const
inline

◆ UpdateDynamicCurveCPU()

void GPUSceneImpl::UpdateDynamicCurveCPU ( GeometryHandle  handle,
Span< const FCurveDOTSVertex vertices,
Span< const uint32_t >  indices,
Span< const FCurveLeaf leaves 
)

◆ UpdateDynamicCurveGPU()

void GPUSceneImpl::UpdateDynamicCurveGPU ( GeometryHandle  handle,
bool  updateVertices,
bool  updateIndices,
bool  updateLeaves 
)

◆ UpdateDynamicMeshCPU()

void GPUSceneImpl::UpdateDynamicMeshCPU ( GeometryHandle  handle,
Span< const FQVertex vertices,
Span< const uint32_t >  indices 
)

◆ UpdateDynamicMeshGPU()

void GPUSceneImpl::UpdateDynamicMeshGPU ( GeometryHandle  handle,
bool  updateVertices,
bool  updateIndices 
)

◆ UpdateDynamicTextureCPU()

void GPUSceneImpl::UpdateDynamicTextureCPU ( TextureHandle  handle,
FTexture const &  source 
)

◆ UpdateDynamicTextureGPU()

uint32_t GPUSceneImpl::UpdateDynamicTextureGPU ( TextureHandle  handle,
GPUScene::DynamicTextureGPUAccess  access 
)

◆ Upload() [1/6]

GPUScene::Result GPUSceneImpl::Upload ( FBlobDeserializer blobs,
FSerializedCurve const &  source,
GeometryHandle outHandle 
)

◆ Upload() [2/6]

GPUScene::Result GPUSceneImpl::Upload ( FBlobDeserializer blobs,
FSerializedMesh const &  source,
GeometryHandle outHandle 
)

◆ Upload() [3/6]

GPUScene::Result GPUSceneImpl::Upload ( FBlobDeserializer blobs,
FSerializedTexture const &  source,
TextureHandle outTexture,
const char *  debugName = nullptr,
bool  pinned = false 
)

◆ Upload() [4/6]

GPUScene::Result GPUSceneImpl::Upload ( FImportedMesh const &  source,
GeometryHandle outHandle 
)

◆ Upload() [5/6]

GPUScene::Result GPUSceneImpl::Upload ( FTexture const &  source,
TextureHandle outTexture,
const char *  debugName = nullptr,
bool  pinned = false 
)

◆ Upload() [6/6]

GPUScene::Result GPUSceneImpl::Upload ( RHIBuffer dst,
Span< const unsigned char >  data,
uint32_t  dstOffset = 0 
)

◆ UploadBatchBegin()

bool GPUSceneImpl::UploadBatchBegin ( )

◆ UploadBatchEnd()

void GPUSceneImpl::UploadBatchEnd ( UploadBatchState state)

◆ UploadBatchMoveNext()

bool GPUSceneImpl::UploadBatchMoveNext ( size_t  timeout)

◆ UploadDynamicGeometryCPU()

void GPUSceneImpl::UploadDynamicGeometryCPU ( RHICommandList cmd)

◆ UploadDynamicTexturesCPU()

void GPUSceneImpl::UploadDynamicTexturesCPU ( RHICommandList cmd)

◆ UploadEnvironmentMap()

GPUScene::Result GPUSceneImpl::UploadEnvironmentMap ( FTexture const &  source)

Member Data Documentation

◆ mActiveUpload

UniquePtr<UploadBatchState> GPUSceneImpl::mActiveUpload

◆ mAllocator

Allocator* GPUSceneImpl::mAllocator {GLOBAL_ALLOC}

◆ mBLASBuffers

Vector<RHIDeviceScopedHandle<RHIBuffer> > GPUSceneImpl::mBLASBuffers

◆ mBLASes

◆ mBLASFreelist

Vector<uint32_t> GPUSceneImpl::mBLASFreelist

◆ mCurveBLASBuffers

Vector<RHIDeviceScopedHandle<RHIBuffer> > GPUSceneImpl::mCurveBLASBuffers

◆ mCurveBLASes

Vector<RHIDeviceScopedHandle<RHIAccelerationStructure> > GPUSceneImpl::mCurveBLASes

◆ mCurveBLASFreelist

Vector<uint32_t> GPUSceneImpl::mCurveBLASFreelist

◆ mDevice

RHIDevice* GPUSceneImpl::mDevice {nullptr}

◆ mDirectGeometryUpload

bool GPUSceneImpl::mDirectGeometryUpload {false}

◆ mDiskBLAS

◆ mDynamicGeometries

Vector<uint32_t> GPUSceneImpl::mDynamicGeometries

◆ mDynamicIsUpdate

bool GPUSceneImpl::mDynamicIsUpdate {false}

◆ mDynamicPrimitiveAlloc

RHIDeviceScopedHandle<RHIVirtualAllocator> GPUSceneImpl::mDynamicPrimitiveAlloc

◆ mDynamicPrimitiveBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mDynamicPrimitiveBuffer

◆ mDynamicStagingBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mDynamicStagingBuffer

◆ mDynamicStagingCursor

uint32_t GPUSceneImpl::mDynamicStagingCursor {0}

◆ mDynamicStagingFrameIndex

uint32_t GPUSceneImpl::mDynamicStagingFrameIndex {0}

◆ mDynamicStagingFrames

uint32_t GPUSceneImpl::mDynamicStagingFrames {0}

◆ mDynamicStagingFrameSize

uint32_t GPUSceneImpl::mDynamicStagingFrameSize {0}

◆ mDynamicStagingMapped

char* GPUSceneImpl::mDynamicStagingMapped {nullptr}

◆ mDynamicTextureGPUUpdates

Vector<DynamicTextureGPUUpdate> GPUSceneImpl::mDynamicTextureGPUUpdates

◆ mDynamicTextures

Vector<uint32_t> GPUSceneImpl::mDynamicTextures

◆ mDynamicTextureUploads

Vector<DynamicTextureUpload> GPUSceneImpl::mDynamicTextureUploads

◆ mDynamicUploadRegions

Vector<RHICommandList::CopyBufferRegion> GPUSceneImpl::mDynamicUploadRegions

◆ mEmissiveClusterBuffer

UploadGPURingBuffer<GSEmissiveCluster> GPUSceneImpl::mEmissiveClusterBuffer

◆ mGeometry

Vector<Geometry> GPUSceneImpl::mGeometry

◆ mGeometryFreelist

Vector<uint32_t> GPUSceneImpl::mGeometryFreelist

◆ mImmediateUpload

UniquePtr<ImmediateUpload> GPUSceneImpl::mImmediateUpload

◆ mImmediateUploadCapacity

size_t GPUSceneImpl::mImmediateUploadCapacity {}

◆ mInstanceBuffer

UploadGPURingBuffer<GSInstance> GPUSceneImpl::mInstanceBuffer

◆ mJobs

JobSystem* GPUSceneImpl::mJobs {nullptr}

◆ mLastRebuildCount

uint32_t GPUSceneImpl::mLastRebuildCount {0}

◆ mLastRefitCount

uint32_t GPUSceneImpl::mLastRefitCount {0}

◆ mLightBLASBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mLightBLASBuffer

◆ mLightBuffer

UploadGPURingBuffer<GSLight> GPUSceneImpl::mLightBuffer

◆ mLightBVHBitmaskBuffer

UploadGPURingBuffer<uint2> GPUSceneImpl::mLightBVHBitmaskBuffer

◆ mLightBVHGlobalIndexBuffer

UploadGPURingBuffer<uint32_t> GPUSceneImpl::mLightBVHGlobalIndexBuffer

◆ mLightBVHLightIndexBuffer

UploadGPURingBuffer<uint32_t> GPUSceneImpl::mLightBVHLightIndexBuffer

◆ mLightBVHNeedsRefit

bool GPUSceneImpl::mLightBVHNeedsRefit {false}

◆ mLightBVHNodeBuffer

UploadGPURingBuffer<GSLightBVHNode> GPUSceneImpl::mLightBVHNodeBuffer

◆ mLightBVHNodeIndexBuffer

UploadGPURingBuffer<uint32_t> GPUSceneImpl::mLightBVHNodeIndexBuffer

◆ mLightBVHRefitLevels

Vector<LightBVHRefitLevel> GPUSceneImpl::mLightBVHRefitLevels

◆ mLightGeometryBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mLightGeometryBuffer

◆ mMaterialBuffer

UploadGPURingBuffer<GSMaterial> GPUSceneImpl::mMaterialBuffer

◆ mMeshletGlobalCounter

uint32_t GPUSceneImpl::mMeshletGlobalCounter {0}

◆ mPrimitiveAlloc

RHIDeviceScopedHandle<RHIVirtualAllocator> GPUSceneImpl::mPrimitiveAlloc

◆ mPrimitiveMapped

char* GPUSceneImpl::mPrimitiveMapped {nullptr}

◆ mRectBLAS

◆ mScratchBufferTLAS

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mScratchBufferTLAS

◆ mSphereBLAS

RHIDeviceScopedHandle<RHIAccelerationStructure> GPUSceneImpl::mSphereBLAS

◆ mStackAlloc

AllocatorStack* GPUSceneImpl::mStackAlloc {nullptr}

◆ mTexture2DPool

BindlessPool GPUSceneImpl::mTexture2DPool

◆ mTexture2DSlots

Vector<Texture> GPUSceneImpl::mTexture2DSlots

◆ mTexture3DPool

BindlessPool GPUSceneImpl::mTexture3DPool

◆ mTexture3DSlots

Vector<Texture> GPUSceneImpl::mTexture3DSlots

◆ mTLASBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUSceneImpl::mTLASBuffer

◆ mTLASInstances

UploadGPURingBuffer<char> GPUSceneImpl::mTLASInstances

◆ mTLASInstanceStride

uint32_t GPUSceneImpl::mTLASInstanceStride {0}

◆ mUploadBufferQueue

MPMCQueue<PendingBufferUpload> GPUSceneImpl::mUploadBufferQueue

◆ mUploadDriveMutex

Mutex GPUSceneImpl::mUploadDriveMutex

◆ mUploadGeometryQueue

MPMCQueue<PendingGeometryUpload> GPUSceneImpl::mUploadGeometryQueue

◆ mUploadPending

Atomic<size_t> GPUSceneImpl::mUploadPending {0}

◆ mUploadStateMutex

Mutex GPUSceneImpl::mUploadStateMutex
mutable

◆ mUploadTextureQueue

MPMCQueue<PendingTextureUpload> GPUSceneImpl::mUploadTextureQueue

◆ owner

GPUScene& GPUSceneImpl::owner

The documentation for this struct was generated from the following file: