| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #pragma once
- #include <DX12Buffer.h>
- #include <Point.h>
- #include "Block.h"
- struct ChunkShaderInfo
- {
- Framework::Point pos;
- unsigned int blockCount;
- };
- struct ID3D12Resource;
- class DX12ChunkData : public ReferenceCounter
- {
- private:
- Framework::DX12Buffer* aabbs;
- Framework::DX12Buffer* chunkInfoBuffer;
- Framework::DX12Buffer* blasScratchBuffer;
- Framework::DX12Buffer* customBlocksBlasScratchBuffer;
- ID3D12Resource* oldBlasBuffer;
- Framework::DX12Buffer* blasBuffer;
- Framework::DX12Buffer* customBlocksBlasBuffer;
- Framework::DX12Buffer* blockIndexBuffer;
- Framework::DX12Buffer* textureIdBuffer;
- unsigned char* lightBuffer;
- int lightBufferSize;
- Framework::DX12Buffer* dxLightBuffer;
- RCArray<DX12Buffer> vertexBuffers;
- RCArray<DX12Buffer> indexBuffers;
- Framework::DX12Buffer* customBlockTextures;
- Framework::DX12Buffer* customBlocksCombinedIndexBuffer;
- Framework::DX12Buffer* customBlocksVertexDataBuffer;
- Framework::DX12Buffer* customBlocksIndexOffsetBuffer;
- Framework::DX12Buffer* customBlocksMatrixBuffer;
- unsigned char* customLightBuffer;
- int customLightBufferSize;
- Framework::DX12Buffer* customBlocksLightBuffer;
- RCArray<Block> customBlocks;
- Framework::Point chunkCenter;
- int* blockIndices;
- Framework::Array<int> textureIds;
- int lastObjectIndex;
- int lastCustomObjectIndex;
- int lastHitGroupIndex;
- int lastCustomHitGroupIndex;
- bool changed;
- bool bufferChanged;
- bool customBufferChanged;
- bool customBlocksChanged;
- 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;
- Framework::DX12Buffer* zLightBuffer() const;
- Framework::DX12Buffer* zCustomBlocksBlasBuffer() const;
- Framework::DX12Buffer* zCustomBlocksTextureBuffer() const;
- Framework::DX12Buffer* zCustomBlocksVertexDataBuffer() const;
- Framework::DX12Buffer* zCustomBlocksCombinedIndexBuffer() const;
- Framework::DX12Buffer* zCustomBlocksIndexOffsetBuffer() const;
- Framework::DX12Buffer* zCustomBlocksLightBuffer() const;
- void setBlock(int index, Block* zBlock);
- void updateLightning(Chunk* zChunk);
- void updateBuffers(
- ID3D12Device5* zDevice, Framework::DX12CommandQueue* zQueue);
- int getLastObjectIndex() const;
- int getLastCustomObjectIndex() const;
- int getLastHitGroupIndex() const;
- int getLastCustomHitGroupIndex() const;
- void setLastObjectIndex(int index);
- void setLastCustomObjectIndex(int index);
- void setLastHitGroupIndex(int index);
- void setLastCustomHitGroupIndex(int index);
- bool wasBufferChanged() const;
- void setBufferChanged(bool changed);
- bool isSimpleBlock(Block* zBlock) const;
- bool hasCustomBlocks() const;
- bool wasCustomBufferChanged() const;
- void setCustomBufferChanged(bool changed);
- };
|