Foundation
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Attributes | Friends | List of all members
GPUScene Class Reference

#include <GPUScene.hpp>

Classes

struct  GPUSceneTables
 
struct  MemoryStat
 
struct  UpdateResult
 

Public Types

enum class  DynamicTextureGPUAccess { UAV , RTV }
 
enum class  Result {
  Ready , InProgress , InvalidInput , InvalidHandle ,
  OutOfMemory , DecodeFailed , Cancelled
}
 
enum class  TLASBuildResult { Built , Empty }
 

Public Member Functions

 GPUScene (RHIDevice *device, JobSystem *jobs, Allocator *allocator, GPUSceneDesc const &desc, AllocatorStack *frameScratch=nullptr)
 
 ~GPUScene ()
 
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=false)
 Allocates a dynamic geometry handle.
 
Result Allocate (uint32_t vertexCount, uint32_t indexCount, uint32_t leafCount, GeometryHandle &outHandle, bool isGpu=false)
 
Result Allocate (RHITextureDesc const &desc, TextureHandle &outHandle, bool isGpu=false, const char *debugName=nullptr)
 
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)
 
bool HasEnvironmentMap () const
 
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)
 
void UpdateUBO (RendererUBO &globals) const
 
GPUSceneTables BeginScene (uint32_t instanceCount, uint32_t materialCount, uint32_t lightCount)
 
void ResolveGeometry (GeometryHandle handle, uint32_t &outPrimitiveOffset, uint32_t &outPrimitiveType, GSInstanceFlags &outPrimitiveFlags) const
 
UpdateResult EndScene (GPUSceneTables &tables)
 
void DbgGetMemoryStatistics (Vector< MemoryStat > &outStats) const
 
String DbgGetBufferStatistics () const
 
uint32_t GetLightCapacity () const
 
TLASBuildResult BuildTLAS (RHICommandList *cmd, bool update=false)
 
bool HasDynamicGeometry () const
 
bool HasDynamicTextures () const
 
bool HasCurveGeometry () const
 
void BeginDynamicUpdate ()
 
void UpdateDynamicMeshCPU (GeometryHandle handle, Span< const FQVertex > vertices={}, Span< const uint32_t > indices={})
 Host-mapped copy. Requires isGpu = false with Allocate.
 
void UpdateDynamicMeshGPU (GeometryHandle handle, bool updateVertices, bool updateIndices)
 Device local writes. Requires isGpu = true with Allocate.
 
void UpdateDynamicCurveCPU (GeometryHandle handle, Span< const FCurveDOTSVertex > vertices={}, Span< const uint32_t > indices={}, Span< const FCurveLeaf > leaves={})
 Host-mapped copy. Requires isGpu = false with Allocate.
 
void UpdateDynamicCurveGPU (GeometryHandle handle, bool updateVertices, bool updateIndices, bool updateLeaves)
 Device local writes. Requires isGpu = true with Allocate.
 
void UpdateDynamicTextureCPU (TextureHandle handle, FTexture const &source)
 Host-mapped copy. Requires isGpu = false with Allocate.
 
uint32_t UpdateDynamicTextureGPU (TextureHandle handle, DynamicTextureGPUAccess access=DynamicTextureGPUAccess::UAV)
 Device local writes. Requires isGpu = true with Allocate.
 
void EndDynamicUpdate ()
 
void UploadDynamicGeometryCPU (RHICommandList *cmd)
 Commits host-side geometry and texture updates. GPU-side updates are not required to be committed, as they are already in device-local memory.
 
void UploadDynamicTexturesCPU (RHICommandList *cmd)
 
void BeginDynamicTextureGPU (RHICommandList *cmd, bool is3D, DynamicTextureGPUAccess access)
 
void EndDynamicTextureGPU (RHICommandList *cmd, bool is3D, DynamicTextureGPUAccess access)
 
RHITextureResolveDynamicTextureGPU (TextureHandle handle, RHITextureUsage requiredUsage) const
 
void CompleteDynamicTextureGPU (TextureHandle handle, DynamicTextureGPUAccess access)
 
void BuildBLAS (RHICommandList *cmd)
 
uint32_t GetDynamicRefitCount () const
 
uint32_t GetDynamicRebuildCount () const
 
void Collect ()
 Garbage-collects geometry and textures no longer referenced by the committed scene tables.
 
GSInstance GetInstance (uint32_t index) const
 
uint32_t GetInstanceCount () const
 
uint32_t InstanceFromTLAS (uint32_t tlasID) const
 
GSLight GetLight (uint32_t index) const
 
uint32_t GetLightCount () const
 
GSMaterial GetMaterial (uint32_t index) const
 
uint32_t GetMaterialCount () const
 
RHIBufferGetPrimitiveBuffer () const
 
RHIBufferGetDynamicPrimitiveBuffer () const
 
RHIBufferGetDynamicStagingBuffer () const
 
RHIBufferGetInstanceBuffer () const
 
RHIBufferGetMaterialBuffer () const
 
RHIBufferGetLightBuffer () const
 
RHIBufferGetEmissiveClusterBuffer () const
 
RHIBufferGetLightBVHNodeBuffer () const
 
RHIBufferGetLightBVHLightIndexBuffer () const
 
RHIBufferGetLightBVHBitmaskBuffer () const
 
RHIBufferGetLightBVHGlobalIndexBuffer () const
 
RHIBufferGetLightBVHNodeIndexBuffer () const
 
bool NeedsLightBVHRefit () const
 
uint32_t GetLightBVHRefitLevelCount () const
 
uint32_t GetLightBVHRefitLevelOffset (uint32_t level) const
 
uint32_t GetLightBVHRefitLevelNodeCount (uint32_t level) const
 
uint32_t GetLightBVHFirstNodeIndex () const
 
GSOffsetCount GetLightBVHNodes () const
 
GSOffsetCount GetLightBVHDistantNodes () const
 
BindlessPoolGetTexture2DPool ()
 
BindlessPoolGetTexture3DPool ()
 
BindlessPool const * GetTexture2DPool () const
 
BindlessPool const * GetTexture3DPool () const
 
RHITextureGetFoundationDefaultTexture2D () const
 
RHITextureGetFoundationDefaultTexture2DFloat () const
 
RHIBufferGetFoundationDefaultBufferFloat () const
 
RHIAccelerationStructureGetTLAS () const
 
RHIBufferGetSobolMatricesBuffer () const
 
void Reset ()
 

Static Public Member Functions

static size_t CalculateMeshPrimitiveSize (FSerializedMesh const &src)
 
static size_t CalculateCurvePrimitiveSize (FSerializedCurve const &src)
 

Public Attributes

TextureHandle mFoundationDefaultTexture2DIndex
 
TextureHandle mFoundationDefaultTexture2DFloatIndex
 
TextureHandle mLUTGGXEIndex
 
TextureHandle mLUTGGXEavgIndex
 
TextureHandle mLUTGGXEIORavgIndex
 
TextureHandle mLUTGGXEIORInvavgIndex
 
TextureHandle mLUTGGXEIORIndex
 
TextureHandle mLUTGGXEIORInvIndex
 
TextureHandle mLUTSheenLTCIndex
 
TextureHandle mEnvMapIndex
 
TextureHandle mEnvMapMarginalCDFIndex
 
TextureHandle mEnvMapConditionalCDFIndex
 
uint32_t mEnvMapPrefilteredMips {0u}
 
Array< float3, 9 > mEnvSHCoeffs {}
 
float mEnvMapAverageRadiance {1.0f}
 

Private Attributes

UniquePtr< GPUSceneImplmImpl
 
UpdateResult mLastUpdateResult
 
Vector< GSInstancemCommittedInstances
 
Vector< GSLightmCommittedLights
 
Vector< GSMaterialmCommittedMaterials
 
Vector< uint32_t > mTLASInstanceMap
 
RHIDeviceScopedHandle< RHIBuffermPrimitiveBuffer
 
RHIDeviceScopedHandle< RHIAccelerationStructuremTLAS
 
uint32_t mLastTLASInstancesCount {0}
 
RHIDeviceScopedHandle< RHIBuffermSobolMatricesBuffer
 
RHIDeviceScopedHandle< RHIBuffermFoundationDefaultBufferFloat
 

Friends

struct GPUSceneImpl
 

Member Enumeration Documentation

◆ DynamicTextureGPUAccess

Enumerator
UAV 
RTV 

◆ Result

enum class GPUScene::Result
strong
Enumerator
Ready 
InProgress 
InvalidInput 
InvalidHandle 
OutOfMemory 
DecodeFailed 
Cancelled 

◆ TLASBuildResult

enum class GPUScene::TLASBuildResult
strong
Enumerator
Built 
Empty 

Constructor & Destructor Documentation

◆ GPUScene()

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

◆ ~GPUScene()

GPUScene::~GPUScene ( )
default

Member Function Documentation

◆ Allocate() [1/3]

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

◆ Allocate() [2/3]

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

Allocates a dynamic geometry handle.

Parameters
isGpuWhether the dynamic geometry is GPU-local. See UpdateDynamicMeshCPU, UpdateDynamicMeshGPU.

◆ Allocate() [3/3]

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

◆ BeginDynamicTextureGPU()

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

◆ BeginDynamicUpdate()

void GPUScene::BeginDynamicUpdate ( )

◆ BeginScene()

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

◆ BuildBLAS()

void GPUScene::BuildBLAS ( RHICommandList cmd)

◆ BuildTLAS()

GPUScene::TLASBuildResult GPUScene::BuildTLAS ( RHICommandList cmd,
bool  update = false 
)

◆ CalculateCurvePrimitiveSize()

size_t GPUScene::CalculateCurvePrimitiveSize ( FSerializedCurve const &  src)
static

◆ CalculateMeshPrimitiveSize()

size_t GPUScene::CalculateMeshPrimitiveSize ( FSerializedMesh const &  src)
static

◆ Collect()

void GPUScene::Collect ( )

Garbage-collects geometry and textures no longer referenced by the committed scene tables.

◆ CompleteDynamicTextureGPU()

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

◆ DbgGetBufferStatistics()

String GPUScene::DbgGetBufferStatistics ( ) const

◆ DbgGetMemoryStatistics()

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

◆ EndDynamicTextureGPU()

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

◆ EndDynamicUpdate()

void GPUScene::EndDynamicUpdate ( )

◆ EndScene()

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

◆ GetDynamicPrimitiveBuffer()

RHIBuffer * GPUScene::GetDynamicPrimitiveBuffer ( ) const

◆ GetDynamicRebuildCount()

uint32_t GPUScene::GetDynamicRebuildCount ( ) const

◆ GetDynamicRefitCount()

uint32_t GPUScene::GetDynamicRefitCount ( ) const

◆ GetDynamicStagingBuffer()

RHIBuffer * GPUScene::GetDynamicStagingBuffer ( ) const

◆ GetEmissiveClusterBuffer()

RHIBuffer * GPUScene::GetEmissiveClusterBuffer ( ) const

◆ GetFoundationDefaultBufferFloat()

RHIBuffer * GPUScene::GetFoundationDefaultBufferFloat ( ) const
inline

◆ GetFoundationDefaultTexture2D()

RHITexture * GPUScene::GetFoundationDefaultTexture2D ( ) const

◆ GetFoundationDefaultTexture2DFloat()

RHITexture * GPUScene::GetFoundationDefaultTexture2DFloat ( ) const

◆ GetInstance()

GSInstance GPUScene::GetInstance ( uint32_t  index) const
inline

◆ GetInstanceBuffer()

RHIBuffer * GPUScene::GetInstanceBuffer ( ) const

◆ GetInstanceCount()

uint32_t GPUScene::GetInstanceCount ( ) const
inline

◆ GetLight()

GSLight GPUScene::GetLight ( uint32_t  index) const
inline

◆ GetLightBuffer()

RHIBuffer * GPUScene::GetLightBuffer ( ) const

◆ GetLightBVHBitmaskBuffer()

RHIBuffer * GPUScene::GetLightBVHBitmaskBuffer ( ) const

◆ GetLightBVHDistantNodes()

GSOffsetCount GPUScene::GetLightBVHDistantNodes ( ) const

◆ GetLightBVHFirstNodeIndex()

uint32_t GPUScene::GetLightBVHFirstNodeIndex ( ) const

◆ GetLightBVHGlobalIndexBuffer()

RHIBuffer * GPUScene::GetLightBVHGlobalIndexBuffer ( ) const

◆ GetLightBVHLightIndexBuffer()

RHIBuffer * GPUScene::GetLightBVHLightIndexBuffer ( ) const

◆ GetLightBVHNodeBuffer()

RHIBuffer * GPUScene::GetLightBVHNodeBuffer ( ) const

◆ GetLightBVHNodeIndexBuffer()

RHIBuffer * GPUScene::GetLightBVHNodeIndexBuffer ( ) const

◆ GetLightBVHNodes()

GSOffsetCount GPUScene::GetLightBVHNodes ( ) const

◆ GetLightBVHRefitLevelCount()

uint32_t GPUScene::GetLightBVHRefitLevelCount ( ) const

◆ GetLightBVHRefitLevelNodeCount()

uint32_t GPUScene::GetLightBVHRefitLevelNodeCount ( uint32_t  level) const

◆ GetLightBVHRefitLevelOffset()

uint32_t GPUScene::GetLightBVHRefitLevelOffset ( uint32_t  level) const

◆ GetLightCapacity()

uint32_t GPUScene::GetLightCapacity ( ) const

◆ GetLightCount()

uint32_t GPUScene::GetLightCount ( ) const
inline

◆ GetMaterial()

GSMaterial GPUScene::GetMaterial ( uint32_t  index) const
inline

◆ GetMaterialBuffer()

RHIBuffer * GPUScene::GetMaterialBuffer ( ) const

◆ GetMaterialCount()

uint32_t GPUScene::GetMaterialCount ( ) const
inline

◆ GetPrimitiveBuffer()

RHIBuffer * GPUScene::GetPrimitiveBuffer ( ) const
inline

◆ GetSobolMatricesBuffer()

RHIBuffer * GPUScene::GetSobolMatricesBuffer ( ) const
inline

◆ GetTexture2DPool() [1/2]

BindlessPool * GPUScene::GetTexture2DPool ( )

◆ GetTexture2DPool() [2/2]

BindlessPool const * GPUScene::GetTexture2DPool ( ) const

◆ GetTexture3DPool() [1/2]

BindlessPool * GPUScene::GetTexture3DPool ( )

◆ GetTexture3DPool() [2/2]

BindlessPool const * GPUScene::GetTexture3DPool ( ) const

◆ GetTLAS()

RHIAccelerationStructure * GPUScene::GetTLAS ( ) const
inline

◆ HasCurveGeometry()

bool GPUScene::HasCurveGeometry ( ) const

◆ HasDynamicGeometry()

bool GPUScene::HasDynamicGeometry ( ) const

◆ HasDynamicTextures()

bool GPUScene::HasDynamicTextures ( ) const

◆ HasEnvironmentMap()

bool GPUScene::HasEnvironmentMap ( ) const
inline

◆ InstanceFromTLAS()

uint32_t GPUScene::InstanceFromTLAS ( uint32_t  tlasID) const
inline

◆ Join()

void GPUScene::Join ( )

◆ NeedsLightBVHRefit()

bool GPUScene::NeedsLightBVHRefit ( ) const

◆ Poll()

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

◆ Query() [1/2]

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

◆ Query() [2/2]

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

◆ Reset()

void GPUScene::Reset ( )

◆ ResolveDynamicTextureGPU()

RHITexture * GPUScene::ResolveDynamicTextureGPU ( TextureHandle  handle,
RHITextureUsage  requiredUsage 
) const

◆ ResolveGeometry()

void GPUScene::ResolveGeometry ( GeometryHandle  handle,
uint32_t &  outPrimitiveOffset,
uint32_t &  outPrimitiveType,
GSInstanceFlags &  outPrimitiveFlags 
) const

◆ UpdateDynamicCurveCPU()

void GPUScene::UpdateDynamicCurveCPU ( GeometryHandle  handle,
Span< const FCurveDOTSVertex vertices = {},
Span< const uint32_t >  indices = {},
Span< const FCurveLeaf leaves = {} 
)

Host-mapped copy. Requires isGpu = false with Allocate.

◆ UpdateDynamicCurveGPU()

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

Device local writes. Requires isGpu = true with Allocate.

Note
This in effect only marks the geometry dirty, and is thread-safe to commit.

◆ UpdateDynamicMeshCPU()

void GPUScene::UpdateDynamicMeshCPU ( GeometryHandle  handle,
Span< const FQVertex vertices = {},
Span< const uint32_t >  indices = {} 
)

Host-mapped copy. Requires isGpu = false with Allocate.

◆ UpdateDynamicMeshGPU()

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

Device local writes. Requires isGpu = true with Allocate.

Note
This in effect only marks the geometry dirty, and is thread-safe to commit.

◆ UpdateDynamicTextureCPU()

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

Host-mapped copy. Requires isGpu = false with Allocate.

◆ UpdateDynamicTextureGPU()

uint32_t GPUScene::UpdateDynamicTextureGPU ( TextureHandle  handle,
DynamicTextureGPUAccess  access = DynamicTextureGPUAccess::UAV 
)

Device local writes. Requires isGpu = true with Allocate.

Note
This in effect only marks the texture dirty, and is thread-safe to commit.

◆ UpdateUBO()

void GPUScene::UpdateUBO ( RendererUBO globals) const

◆ Upload() [1/6]

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

◆ Upload() [2/6]

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

◆ Upload() [3/6]

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

◆ Upload() [4/6]

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

◆ Upload() [5/6]

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

◆ Upload() [6/6]

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

◆ UploadDynamicGeometryCPU()

void GPUScene::UploadDynamicGeometryCPU ( RHICommandList cmd)

Commits host-side geometry and texture updates. GPU-side updates are not required to be committed, as they are already in device-local memory.

◆ UploadDynamicTexturesCPU()

void GPUScene::UploadDynamicTexturesCPU ( RHICommandList cmd)

◆ UploadEnvironmentMap()

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

Friends And Related Symbol Documentation

◆ GPUSceneImpl

friend struct GPUSceneImpl
friend

Member Data Documentation

◆ mCommittedInstances

Vector<GSInstance> GPUScene::mCommittedInstances
private

◆ mCommittedLights

Vector<GSLight> GPUScene::mCommittedLights
private

◆ mCommittedMaterials

Vector<GSMaterial> GPUScene::mCommittedMaterials
private

◆ mEnvMapAverageRadiance

float GPUScene::mEnvMapAverageRadiance {1.0f}

◆ mEnvMapConditionalCDFIndex

TextureHandle GPUScene::mEnvMapConditionalCDFIndex

◆ mEnvMapIndex

TextureHandle GPUScene::mEnvMapIndex

◆ mEnvMapMarginalCDFIndex

TextureHandle GPUScene::mEnvMapMarginalCDFIndex

◆ mEnvMapPrefilteredMips

uint32_t GPUScene::mEnvMapPrefilteredMips {0u}

◆ mEnvSHCoeffs

Array<float3, 9> GPUScene::mEnvSHCoeffs {}

◆ mFoundationDefaultBufferFloat

RHIDeviceScopedHandle<RHIBuffer> GPUScene::mFoundationDefaultBufferFloat
private

◆ mFoundationDefaultTexture2DFloatIndex

TextureHandle GPUScene::mFoundationDefaultTexture2DFloatIndex

◆ mFoundationDefaultTexture2DIndex

TextureHandle GPUScene::mFoundationDefaultTexture2DIndex

◆ mImpl

UniquePtr<GPUSceneImpl> GPUScene::mImpl
private

◆ mLastTLASInstancesCount

uint32_t GPUScene::mLastTLASInstancesCount {0}
private

◆ mLastUpdateResult

UpdateResult GPUScene::mLastUpdateResult
private

◆ mLUTGGXEavgIndex

TextureHandle GPUScene::mLUTGGXEavgIndex

◆ mLUTGGXEIndex

TextureHandle GPUScene::mLUTGGXEIndex

◆ mLUTGGXEIORavgIndex

TextureHandle GPUScene::mLUTGGXEIORavgIndex

◆ mLUTGGXEIORIndex

TextureHandle GPUScene::mLUTGGXEIORIndex

◆ mLUTGGXEIORInvavgIndex

TextureHandle GPUScene::mLUTGGXEIORInvavgIndex

◆ mLUTGGXEIORInvIndex

TextureHandle GPUScene::mLUTGGXEIORInvIndex

◆ mLUTSheenLTCIndex

TextureHandle GPUScene::mLUTSheenLTCIndex

◆ mPrimitiveBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUScene::mPrimitiveBuffer
private

◆ mSobolMatricesBuffer

RHIDeviceScopedHandle<RHIBuffer> GPUScene::mSobolMatricesBuffer
private

◆ mTLAS

◆ mTLASInstanceMap

Vector<uint32_t> GPUScene::mTLASInstanceMap
private

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