| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #pragma once
- #include <d3d12.h>
- #include <DX12Buffer.h>
- #include <Point.h>
- #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<int> 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);
- };
|