#pragma once #include "Array.h" #include "DX12Buffer.h" namespace Framework { class DX12DirectCommandQueue; class DX12TLAS : public ReferenceCounter { private: DX12Buffer* scratchBuffer; DX12Buffer* resultBuffer; DX12Buffer* descriptorBuffer; ID3D12Device5* zDevice; DX12DirectCommandQueue* zDirectQueue; Array overflowInstanceDescs; ArrayIterator overflowInstanceIterator; __int64 currentInstanceIndex; __int64 lastInstanceCount; D3D12_RAYTRACING_INSTANCE_DESC* mappedDescriptorBuffer; ID3D12Resource* lastResultBuffer; ID3D12Resource* lastScratchBuffer; bool bufferChanged; public: DLLEXPORT DX12TLAS( ID3D12Device5* zDevice, DX12DirectCommandQueue* zDirectQueue); DLLEXPORT virtual ~DX12TLAS(); DLLEXPORT void startUpdate(); DLLEXPORT D3D12_RAYTRACING_INSTANCE_DESC* nextInstanceDesc(); DLLEXPORT void endUpdate(); DLLEXPORT DX12Buffer* zResultBuffer() const; DLLEXPORT bool hasBufferChanged() const; DLLEXPORT void setBufferChanged(bool changed); }; } // namespace Framework