feat: blocks renderer optimization

This commit is contained in:
MihailRis 2025-12-12 19:36:12 +03:00
parent 14a61f7891
commit 9286d48365
3 changed files with 6 additions and 5 deletions

View file

@ -692,8 +692,7 @@ void BlocksRenderer::build(const Chunk* chunk, const Chunks* chunks) {
voxelsBuffer->setPosition(
chunk->x * CHUNK_W - voxelBufferPadding, 0,
chunk->z * CHUNK_D - voxelBufferPadding);
chunks->getVoxels(*voxelsBuffer, settings.graphics.backlight.get());
chunks->getVoxels(*voxelsBuffer, settings.graphics.backlight.get(), chunk->top + 1);
if (voxelsBuffer->pickBlockId(
chunk->x * CHUNK_W, 0, chunk->z * CHUNK_D
) == BLOCK_VOID) {

View file

@ -334,7 +334,8 @@ bool Chunks::putChunk(const std::shared_ptr<Chunk>& chunk) {
// reduce nesting on next modification
// 25.06.2024: not now
// 11.11.2024: not now
void Chunks::getVoxels(VoxelsVolume& volume, bool backlight) const {
// 12.12.2025: not now
void Chunks::getVoxels(VoxelsVolume& volume, bool backlight, int top) const {
voxel* voxels = volume.getVoxels();
light_t* lights = volume.getLights();
int x = volume.getX();
@ -342,7 +343,7 @@ void Chunks::getVoxels(VoxelsVolume& volume, bool backlight) const {
int z = volume.getZ();
int w = volume.getW();
int h = volume.getH();
int h = std::min<int>(volume.getH(), top);
int d = volume.getD();
int scx = floordiv<CHUNK_W>(x);

View file

@ -9,6 +9,7 @@
#include "typedefs.hpp"
#include "voxel.hpp"
#include "constants.hpp"
#include "util/AreaMap2D.hpp"
class VoxelRenderer;
@ -126,7 +127,7 @@ public:
bool isReplaceableBlock(int32_t x, int32_t y, int32_t z);
bool isObstacleBlock(int32_t x, int32_t y, int32_t z);
void getVoxels(VoxelsVolume& volume, bool backlight = false) const;
void getVoxels(VoxelsVolume& volume, bool backlight = false, int top = CHUNK_H) const;
void setCenter(int32_t x, int32_t z);
void resize(uint32_t newW, uint32_t newD);