DX12TLAS.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #pragma once
  2. #include "Array.h"
  3. #include "DX12Buffer.h"
  4. namespace Framework
  5. {
  6. class DX12DirectCommandQueue;
  7. class DX12TLAS : public ReferenceCounter
  8. {
  9. private:
  10. DX12Buffer* scratchBuffer;
  11. DX12Buffer* resultBuffer;
  12. DX12Buffer* descriptorBuffer;
  13. DX12Buffer* previousResultBuffer;
  14. ID3D12Device5* zDevice;
  15. DX12DirectCommandQueue* zDirectQueue;
  16. Array<D3D12_RAYTRACING_INSTANCE_DESC*> overflowInstanceDescs;
  17. ArrayIterator<D3D12_RAYTRACING_INSTANCE_DESC*> overflowInstanceIterator;
  18. __int64 currentInstanceIndex;
  19. __int64 lastInstanceCount;
  20. D3D12_RAYTRACING_INSTANCE_DESC* mappedDescriptorBuffer;
  21. public:
  22. DLLEXPORT DX12TLAS(
  23. ID3D12Device5* zDevice, DX12DirectCommandQueue* zDirectQueue);
  24. DLLEXPORT virtual ~DX12TLAS();
  25. DLLEXPORT void startUpdate();
  26. DLLEXPORT D3D12_RAYTRACING_INSTANCE_DESC* nextInstanceDesc();
  27. DLLEXPORT void endUpdate();
  28. DLLEXPORT DX12Buffer* zResultBuffer() const;
  29. };
  30. } // namespace Framework