DX12ChunkData.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. int* blockIndices;
  22. Framework::Array<int> textureIds;
  23. int lastObjectIndex;
  24. int lastHitGroupIndex;
  25. bool changed;
  26. bool bufferChanged;
  27. int minZ;
  28. int maxZ;
  29. Critical cs;
  30. bool minMaxChanged;
  31. public:
  32. DX12ChunkData(Framework::Point center);
  33. ~DX12ChunkData();
  34. Framework::DX12Buffer* zChunkInfoBuffer() const;
  35. Framework::DX12Buffer* zBlasBuffer() const;
  36. Framework::DX12Buffer* zBlockIndexBuffer() const;
  37. Framework::DX12Buffer* zTextureIdBuffer() const;
  38. void setBlock(int index, Block* zBlock);
  39. void updateBuffers(
  40. ID3D12Device5* zDevice, Framework::DX12CommandQueue* zQueue);
  41. int getLastObjectIndex() const;
  42. int getLastHitGroupIndex() const;
  43. void setLastObjectIndex(int index);
  44. void setLastHitGroupIndex(int index);
  45. bool wasBufferChanged() const;
  46. void setBufferChanged(bool changed);
  47. };