DX12ChunkData.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <d3d12.h>
  3. #include <DX12Buffer.h>
  4. #include <Point.h>
  5. #include "Block.h"
  6. struct ChunkShaderInfo
  7. {
  8. Framework::Point pos;
  9. unsigned int blockCount;
  10. };
  11. class DX12ChunkData : public ReferenceCounter
  12. {
  13. private:
  14. Framework::DX12Buffer* aabbs;
  15. Framework::DX12Buffer* chunkInfoBuffer;
  16. Framework::DX12Buffer* blasScratchBuffer;
  17. Framework::DX12Buffer* blasBuffer;
  18. Framework::DX12Buffer* blockIndexBuffer;
  19. Framework::DX12Buffer* textureIdBuffer;
  20. Framework::Point chunkCenter;
  21. Framework::Array<int> blockIndices;
  22. Framework::Array<int> textureIds;
  23. bool changed;
  24. bool bufferChanged;
  25. public:
  26. DX12ChunkData(Framework::Point center);
  27. ~DX12ChunkData();
  28. Framework::DX12Buffer* zChunkInfoBuffer() const;
  29. Framework::DX12Buffer* zBlasBuffer() const;
  30. Framework::DX12Buffer* zBlockIndexBuffer() const;
  31. Framework::DX12Buffer* zTextureIdBuffer() const;
  32. void setBlock(int index, Block* zBlock);
  33. void updateBuffers(
  34. ID3D12Device5* zDevice, Framework::DX12CommandQueue* zQueue);
  35. };