From c323b1ad155439edd103997904fc053d2fd4d09c Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 29 Dec 2025 23:32:16 +0300 Subject: [PATCH] fixes --- src/graphics/render/BlocksRenderer.hpp | 2 +- src/graphics/render/ChunksRenderer.cpp | 3 +-- src/voxels/Block.hpp | 2 +- src/voxels/VoxelsVolume.hpp | 33 ++++++++++++++++---------- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/graphics/render/BlocksRenderer.hpp b/src/graphics/render/BlocksRenderer.hpp index 52eebeb26..8af7fab7a 100644 --- a/src/graphics/render/BlocksRenderer.hpp +++ b/src/graphics/render/BlocksRenderer.hpp @@ -144,7 +144,7 @@ private: // Does block allow to see other blocks sides (is it transparent) inline bool isOpen(const glm::ivec3& pos, const Block& def, const Variant& variant) const { - auto vox = voxelsBuffer->pickBlock( + const auto& vox = voxelsBuffer->pickBlock( chunk->x * CHUNK_W + pos.x, pos.y, chunk->z * CHUNK_D + pos.z ); if (vox.id == BLOCK_VOID) { diff --git a/src/graphics/render/ChunksRenderer.cpp b/src/graphics/render/ChunksRenderer.cpp index 717064fb2..48fdc516f 100644 --- a/src/graphics/render/ChunksRenderer.cpp +++ b/src/graphics/render/ChunksRenderer.cpp @@ -123,7 +123,6 @@ std::shared_ptr ChunksRenderer::prepareVoxelsVolume( const Mesh* ChunksRenderer::render( const std::shared_ptr& chunk, bool important, bool lowPriority ) { - important = true; glm::ivec2 key(chunk->x, chunk->z); chunk->flags.modified = false; if (important) { @@ -135,7 +134,7 @@ const Mesh* ChunksRenderer::render( return meshes[key].mesh.get(); } if (inwork.find(key) != inwork.end() || - ((inwork.size() >= threadPool.getWorkTotal() || + ((inwork.size() >= threadPool.getWorkersCount() || enqueuedInFrame >= MAX_CHUNKS_ENQUEUED_IN_FRAME) && lowPriority)) { return nullptr; diff --git a/src/voxels/Block.hpp b/src/voxels/Block.hpp index 29eda2494..c2b567427 100644 --- a/src/voxels/Block.hpp +++ b/src/voxels/Block.hpp @@ -123,7 +123,7 @@ VC_ENUM_METADATA(BlockModelType) {"custom", BlockModelType::CUSTOM}, VC_ENUM_END -enum class CullingMode { +enum class CullingMode : uint8_t { DEFAULT, OPTIONAL, DISABLED, diff --git a/src/voxels/VoxelsVolume.hpp b/src/voxels/VoxelsVolume.hpp index bf57ae9e9..14ac0a4f4 100644 --- a/src/voxels/VoxelsVolume.hpp +++ b/src/voxels/VoxelsVolume.hpp @@ -130,29 +130,36 @@ public: return lights; } - inline blockid_t pickBlockId(int bx, int by, int bz) const { - if (bx < x || by < y || bz < z || bx >= x + w || by >= y + h || - bz >= z + d) { + inline blockid_t pickBlockId(uint bx, uint by, uint bz) const { + bx -= x; + by -= y; + bz -= z; + if (bx >= w || by >= h || bz >= d) { return BLOCK_VOID; } - return voxels[vox_index(bx - x, by - y, bz - z, w, d)].id; + return voxels[vox_index(bx, by, bz, w, d)].id; } - inline voxel pickBlock(int bx, int by, int bz) const { - if (bx < x || by < y || bz < z || bx >= x + w || by >= y + h || - bz >= z + d) { - return {BLOCK_VOID, {}}; + inline const voxel& pickBlock(uint bx, uint by, uint bz) const { + bx -= x; + by -= y; + bz -= z; + if (bx >= w || by >= h || bz >= d) { + static voxel voidVoxel {BLOCK_VOID, {}}; + return voidVoxel; } - return voxels[vox_index(bx - x, by - y, bz - z, w, d)]; + return voxels[vox_index(bx, by, bz, w, d)]; } - inline light_t pickLight(int bx, int by, int bz) const { - if (bx < x || by < y || bz < z || bx >= x + w || by >= y + h || - bz >= z + d) { + inline light_t pickLight(uint bx, uint by, uint bz) const { + bx -= x; + by -= y; + bz -= z; + if (bx >= w || by >= h || bz >= d) { return 0; } - return lights[vox_index(bx - x, by - y, bz - z, w, d)]; + return lights[vox_index(bx, by, bz, w, d)]; } private: int x, y, z;