DX12ChunkData.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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* customBlocksBlasScratchBuffer;
  18. ID3D12Resource* oldBlasBuffer;
  19. Framework::DX12Buffer* blasBuffer;
  20. Framework::DX12Buffer* customBlocksBlasBuffer;
  21. Framework::DX12Buffer* blockIndexBuffer;
  22. Framework::DX12Buffer* textureIdBuffer;
  23. RCArray<DX12Buffer> vertexBuffers;
  24. RCArray<DX12Buffer> indexBuffers;
  25. Framework::DX12Buffer* customBlockTextures;
  26. Framework::DX12Buffer* customBlocksCombinedIndexBuffer;
  27. Framework::DX12Buffer* customBlocksVertexDataBuffer;
  28. Framework::DX12Buffer* customBlocksIndexOffsetBuffer;
  29. Framework::DX12Buffer* customBlockMatrixBuffer;
  30. RCArray<Block> customBlocks;
  31. Framework::Point chunkCenter;
  32. int* blockIndices;
  33. Framework::Array<int> textureIds;
  34. int lastObjectIndex;
  35. int lastCustomObjectIndex;
  36. int lastHitGroupIndex;
  37. int lastCustomHitGroupIndex;
  38. bool changed;
  39. bool bufferChanged;
  40. bool customBufferChanged;
  41. bool customBlocksChanged;
  42. int minZ;
  43. int maxZ;
  44. Critical cs;
  45. bool minMaxChanged;
  46. public:
  47. DX12ChunkData(Framework::Point center);
  48. ~DX12ChunkData();
  49. Framework::DX12Buffer* zChunkInfoBuffer() const;
  50. Framework::DX12Buffer* zBlasBuffer() const;
  51. Framework::DX12Buffer* zBlockIndexBuffer() const;
  52. Framework::DX12Buffer* zTextureIdBuffer() const;
  53. Framework::DX12Buffer* zCustomBlocksBlasBuffer() const;
  54. Framework::DX12Buffer* zCustomBlocksTextureBuffer() const;
  55. Framework::DX12Buffer* zCustomBlocksVertexDataBuffer() const;
  56. Framework::DX12Buffer* zCustomBlocksCombinedIndexBuffer() const;
  57. Framework::DX12Buffer* zCustomBlocksIndexOffsetBuffer() const;
  58. void setBlock(int index, Block* zBlock);
  59. void updateBuffers(
  60. ID3D12Device5* zDevice, Framework::DX12CommandQueue* zQueue);
  61. int getLastObjectIndex() const;
  62. int getLastCustomObjectIndex() const;
  63. int getLastHitGroupIndex() const;
  64. int getLastCustomHitGroupIndex() const;
  65. void setLastObjectIndex(int index);
  66. void setLastCustomObjectIndex(int index);
  67. void setLastHitGroupIndex(int index);
  68. void setLastCustomHitGroupIndex(int index);
  69. bool wasBufferChanged() const;
  70. void setBufferChanged(bool changed);
  71. bool isSimpleBlock(Block* zBlock) const;
  72. bool hasCustomBlocks() const;
  73. bool wasCustomBufferChanged() const;
  74. void setCustomBufferChanged(bool changed);
  75. };