DX12TLAS.h 1.0 KB

123456789101112131415161718192021222324252627282930313233
  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. D3D12_RAYTRACING_INSTANCE_DESC* mappedDescriptorBuffer;
  20. public:
  21. DLLEXPORT DX12TLAS(
  22. ID3D12Device5* zDevice, DX12DirectCommandQueue* zDirectQueue);
  23. DLLEXPORT virtual ~DX12TLAS();
  24. DLLEXPORT void startUpdate();
  25. DLLEXPORT D3D12_RAYTRACING_INSTANCE_DESC* nextInstanceDesc();
  26. DLLEXPORT void endUpdate();
  27. DLLEXPORT DX12Buffer* zResultBuffer() const;
  28. };
  29. } // namespace Framework