DX12ChunkData.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #pragma once
  2. #include <DX12Buffer.h>
  3. #include <Point.h>
  4. #include "Block.h"
  5. struct ChunkShaderInfo
  6. {
  7. Framework::Point pos;
  8. unsigned int blockCount;
  9. };
  10. struct ID3D12Resource;
  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. unsigned char* lightBuffer;
  24. int lightBufferSize;
  25. Framework::DX12Buffer* dxLightBuffer;
  26. RCArray<DX12Buffer> vertexBuffers;
  27. RCArray<DX12Buffer> indexBuffers;
  28. Framework::DX12Buffer* customBlockTextures;
  29. Framework::DX12Buffer* customBlocksCombinedIndexBuffer;
  30. Framework::DX12Buffer* customBlocksVertexDataBuffer;
  31. Framework::DX12Buffer* customBlocksIndexOffsetBuffer;
  32. Framework::DX12Buffer* customBlockMatrixBuffer;
  33. RCArray<Block> customBlocks;
  34. Framework::Point chunkCenter;
  35. int* blockIndices;
  36. Framework::Array<int> textureIds;
  37. int lastObjectIndex;
  38. int lastCustomObjectIndex;
  39. int lastHitGroupIndex;
  40. int lastCustomHitGroupIndex;
  41. bool changed;
  42. bool bufferChanged;
  43. bool customBufferChanged;
  44. bool customBlocksChanged;
  45. int minZ;
  46. int maxZ;
  47. Critical cs;
  48. bool minMaxChanged;
  49. public:
  50. DX12ChunkData(Framework::Point center);
  51. ~DX12ChunkData();
  52. Framework::DX12Buffer* zChunkInfoBuffer() const;
  53. Framework::DX12Buffer* zBlasBuffer() const;
  54. Framework::DX12Buffer* zBlockIndexBuffer() const;
  55. Framework::DX12Buffer* zTextureIdBuffer() const;
  56. Framework::DX12Buffer* zLightBuffer() const;
  57. Framework::DX12Buffer* zCustomBlocksBlasBuffer() const;
  58. Framework::DX12Buffer* zCustomBlocksTextureBuffer() const;
  59. Framework::DX12Buffer* zCustomBlocksVertexDataBuffer() const;
  60. Framework::DX12Buffer* zCustomBlocksCombinedIndexBuffer() const;
  61. Framework::DX12Buffer* zCustomBlocksIndexOffsetBuffer() const;
  62. void setBlock(int index, Block* zBlock);
  63. void updateLightning(Chunk* zChunk);
  64. void updateBuffers(
  65. ID3D12Device5* zDevice, Framework::DX12CommandQueue* zQueue);
  66. int getLastObjectIndex() const;
  67. int getLastCustomObjectIndex() const;
  68. int getLastHitGroupIndex() const;
  69. int getLastCustomHitGroupIndex() const;
  70. void setLastObjectIndex(int index);
  71. void setLastCustomObjectIndex(int index);
  72. void setLastHitGroupIndex(int index);
  73. void setLastCustomHitGroupIndex(int index);
  74. bool wasBufferChanged() const;
  75. void setBufferChanged(bool changed);
  76. bool isSimpleBlock(Block* zBlock) const;
  77. bool hasCustomBlocks() const;
  78. bool wasCustomBufferChanged() const;
  79. void setCustomBufferChanged(bool changed);
  80. };