mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-11 14:01:49 +00:00
fix rare grass-only chunk meshes
This commit is contained in:
parent
79e8528005
commit
2bd52ef616
3 changed files with 15 additions and 1 deletions
|
|
@ -520,6 +520,13 @@ void BlocksRenderer::build(const Chunk* chunk, const ChunksStorage* chunks) {
|
||||||
overflow = false;
|
overflow = false;
|
||||||
vertexOffset = 0;
|
vertexOffset = 0;
|
||||||
indexOffset = indexSize = 0;
|
indexOffset = indexSize = 0;
|
||||||
|
if (voxelsBuffer->pickBlockId(
|
||||||
|
chunk->x * CHUNK_W, 0, chunk->z * CHUNK_D
|
||||||
|
) == BLOCK_VOID) {
|
||||||
|
cancelled = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cancelled = false;
|
||||||
const voxel* voxels = chunk->voxels;
|
const voxel* voxels = chunk->voxels;
|
||||||
render(voxels);
|
render(voxels);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ class BlocksRenderer {
|
||||||
size_t capacity;
|
size_t capacity;
|
||||||
int voxelBufferPadding = 2;
|
int voxelBufferPadding = 2;
|
||||||
bool overflow = false;
|
bool overflow = false;
|
||||||
|
bool cancelled = false;
|
||||||
const Chunk* chunk = nullptr;
|
const Chunk* chunk = nullptr;
|
||||||
std::unique_ptr<VoxelsVolume> voxelsBuffer;
|
std::unique_ptr<VoxelsVolume> voxelsBuffer;
|
||||||
|
|
||||||
|
|
@ -149,4 +150,8 @@ public:
|
||||||
std::shared_ptr<Mesh> render(const Chunk* chunk, const ChunksStorage* chunks);
|
std::shared_ptr<Mesh> render(const Chunk* chunk, const ChunksStorage* chunks);
|
||||||
std::shared_ptr<Mesh> createMesh();
|
std::shared_ptr<Mesh> createMesh();
|
||||||
VoxelsVolume* getVoxelsBuffer() const;
|
VoxelsVolume* getVoxelsBuffer() const;
|
||||||
|
|
||||||
|
bool isCancelled() const {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,9 @@ ChunksRenderer::ChunksRenderer(
|
||||||
"chunks-render-pool",
|
"chunks-render-pool",
|
||||||
[=](){return std::make_shared<RendererWorker>(level, cache, settings);},
|
[=](){return std::make_shared<RendererWorker>(level, cache, settings);},
|
||||||
[=](RendererResult& mesh){
|
[=](RendererResult& mesh){
|
||||||
meshes[mesh.key] = mesh.renderer->createMesh();
|
if (!mesh.renderer->isCancelled()) {
|
||||||
|
meshes[mesh.key] = mesh.renderer->createMesh();
|
||||||
|
}
|
||||||
inwork.erase(mesh.key);
|
inwork.erase(mesh.key);
|
||||||
}, settings->graphics.chunkMaxRenderers.get())
|
}, settings->graphics.chunkMaxRenderers.get())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue