Уменьшение размер промежуточного буфера. Отчистка меша чанка, если тот пуст.

This commit is contained in:
2026-01-28 22:46:35 +03:00
parent da673b0965
commit 07ccd4dd68
6 changed files with 28 additions and 5 deletions

View File

@@ -317,7 +317,7 @@ void ChunkMeshGenerator::run(uint8_t id) {
} else {
for(int y = 0; y < 16; y++)
for(int x = 0; x < 16; x++)
fullNodes[x+0][y+1][0] = 0;
fullNodes[x+1][y+1][0] = 0;
}
} else
goto end;
@@ -875,6 +875,7 @@ void ChunkPreparator::tickSync(const TickSyncData& data) {
// Получаем готовые чанки
{
std::vector<ChunkMeshGenerator::ChunkObj_t> chunks = std::move(*CMG.Output.lock());
uint8_t frameRetirement = (FrameRoulette+FRAME_COUNT_RESOURCE_LATENCY) % FRAME_COUNT_RESOURCE_LATENCY;
for(auto& chunk : chunks) {
auto iterWorld = Requests.find(chunk.WId);
if(iterWorld == Requests.end())
@@ -889,6 +890,14 @@ void ChunkPreparator::tickSync(const TickSyncData& data) {
// Чанк ожидаем
auto& rChunk = ChunksMesh[chunk.WId][chunk.Pos >> 2][Pos::bvec4u(chunk.Pos & 0x3).pack()];
if(rChunk.VoxelPointer)
VPV_ToFree[frameRetirement].emplace_back(std::move(rChunk.VoxelPointer));
if(rChunk.NodePointer) {
VPN_ToFree[frameRetirement].emplace_back(std::move(rChunk.NodePointer), std::move(rChunk.NodeIndexes));
}
rChunk.VoxelPointer = {};
rChunk.NodePointer = {};
rChunk.NodeIndexes = {};
rChunk.Voxels = std::move(chunk.VoxelDefines);
if(!chunk.VoxelVertexs.empty())
rChunk.VoxelPointer = VertexPool_Voxels.pushVertexs(std::move(chunk.VoxelVertexs));