#pragma once #include #include #include #include "Block.h" struct ChunkShaderInfo { Framework::Point pos; unsigned int blockCount; }; class DX12ChunkData : public ReferenceCounter { private: Framework::DX12Buffer* aabbs; Framework::DX12Buffer* chunkInfoBuffer; Framework::DX12Buffer* blasScratchBuffer; Framework::DX12Buffer* blasBuffer; Framework::DX12Buffer* blockIndexBuffer; Framework::DX12Buffer* textureIdBuffer; Framework::Point chunkCenter; int* blockIndices; Framework::Array textureIds; int lastObjectIndex; int lastHitGroupIndex; bool changed; bool bufferChanged; int minZ; int maxZ; Critical cs; bool minMaxChanged; public: DX12ChunkData(Framework::Point center); ~DX12ChunkData(); Framework::DX12Buffer* zChunkInfoBuffer() const; Framework::DX12Buffer* zBlasBuffer() const; Framework::DX12Buffer* zBlockIndexBuffer() const; Framework::DX12Buffer* zTextureIdBuffer() const; void setBlock(int index, Block* zBlock); void updateBuffers( ID3D12Device5* zDevice, Framework::DX12CommandQueue* zQueue); int getLastObjectIndex() const; int getLastHitGroupIndex() const; void setLastObjectIndex(int index); void setLastHitGroupIndex(int index); bool wasBufferChanged() const; void setBufferChanged(bool changed); };