From a82e8706d494d102d890e1aa56b89b63e42e0720 Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Mon, 27 Nov 2023 21:28:14 +0200 Subject: [PATCH 1/6] MSVC build fix --- src/assets/AssetsLoader.cpp | 4 ++-- src/assets/AssetsLoader.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/assets/AssetsLoader.cpp b/src/assets/AssetsLoader.cpp index 75431a03..ce00bd20 100644 --- a/src/assets/AssetsLoader.cpp +++ b/src/assets/AssetsLoader.cpp @@ -17,8 +17,8 @@ void AssetsLoader::addLoader(int tag, aloader_func func) { loaders[tag] = func; } -void AssetsLoader::add(int tag, const std::string filename, const std::string alias) { - entries.push(aloader_entry{ tag, filename, alias }); +void AssetsLoader::add(int tag, const path filename, const std::string alias) { + entries.push(aloader_entry{ tag, filename.string(), alias}); } bool AssetsLoader::hasNext() const { diff --git a/src/assets/AssetsLoader.h b/src/assets/AssetsLoader.h index 7cb4c6e9..dfce4b36 100644 --- a/src/assets/AssetsLoader.h +++ b/src/assets/AssetsLoader.h @@ -30,7 +30,7 @@ class AssetsLoader { public: AssetsLoader(Assets* assets, std::filesystem::path resdir); void addLoader(int tag, aloader_func func); - void add(int tag, const std::string filename, const std::string alias); + void add(int tag, const std::filesystem::path filename, const std::string alias); bool hasNext() const; bool loadNext(); From 694a2eb96e0181374a10690c048c40f4b9e9f472 Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Tue, 28 Nov 2023 11:45:20 +0200 Subject: [PATCH 2/6] Revert "MSVC build fix" This reverts commit a82e8706d494d102d890e1aa56b89b63e42e0720. --- src/assets/AssetsLoader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/AssetsLoader.h b/src/assets/AssetsLoader.h index cac41923..85f7a342 100644 --- a/src/assets/AssetsLoader.h +++ b/src/assets/AssetsLoader.h @@ -30,7 +30,7 @@ class AssetsLoader { public: AssetsLoader(Assets* assets, std::filesystem::path resdir); void addLoader(int tag, aloader_func func); - void add(int tag, const std::filesystem::path filename, const std::string alias); + void add(int tag, const std::string filename, const std::string alias); bool hasNext() const; bool loadNext(); From 26834345db09a30c8b045623212a75ef4372210a Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Tue, 28 Nov 2023 11:49:43 +0200 Subject: [PATCH 3/6] MSVC buid fix --- src/assets/AssetsLoader.cpp | 2 +- src/assets/AssetsLoader.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/AssetsLoader.cpp b/src/assets/AssetsLoader.cpp index 91492b80..7f0eefbb 100644 --- a/src/assets/AssetsLoader.cpp +++ b/src/assets/AssetsLoader.cpp @@ -17,7 +17,7 @@ void AssetsLoader::addLoader(int tag, aloader_func func) { loaders[tag] = func; } -void AssetsLoader::add(int tag, const std::string filename, const std::string alias) { +void AssetsLoader::add(int tag, const path filename, const std::string alias) { entries.push(aloader_entry{ tag, filename, alias }); } diff --git a/src/assets/AssetsLoader.h b/src/assets/AssetsLoader.h index 85f7a342..cac41923 100644 --- a/src/assets/AssetsLoader.h +++ b/src/assets/AssetsLoader.h @@ -30,7 +30,7 @@ class AssetsLoader { public: AssetsLoader(Assets* assets, std::filesystem::path resdir); void addLoader(int tag, aloader_func func); - void add(int tag, const std::string filename, const std::string alias); + void add(int tag, const std::filesystem::path filename, const std::string alias); bool hasNext() const; bool loadNext(); From ff0e61773255c4e7f7ed5102cc0b8c8ab857bc8d Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Tue, 28 Nov 2023 22:07:37 +0200 Subject: [PATCH 4/6] Grass rendering behing water fix --- src/content/Content.cpp | 9 +++++++-- src/content/Content.h | 8 ++++++-- src/definitions.cpp | 7 +++---- src/graphics/BlocksRenderer.cpp | 4 ++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/content/Content.cpp b/src/content/Content.cpp index 0a1f88bc..c74395a3 100644 --- a/src/content/Content.cpp +++ b/src/content/Content.cpp @@ -18,22 +18,27 @@ void ContentBuilder::add(Block* def) { Content* ContentBuilder::build() { vector blockDefsIndices; + DrawGroups* groups = new DrawGroups; for (const string& name : blockIds) { Block* def = blockDefs[name]; def->id = blockDefsIndices.size(); blockDefsIndices.push_back(def); + if (groups->find(def->drawGroup) == groups->end()) { + groups->insert(def->drawGroup); + } } ContentIndices* indices = new ContentIndices(blockDefsIndices); - return new Content(indices, blockDefs); + return new Content(indices, groups, blockDefs); } ContentIndices::ContentIndices(vector blockDefs) : blockDefs(blockDefs) { } -Content::Content(ContentIndices* indices, +Content::Content(ContentIndices* indices, DrawGroups* drawGroups, unordered_map blockDefs) : blockDefs(blockDefs), + drawGroups(drawGroups), indices(indices) { } diff --git a/src/content/Content.h b/src/content/Content.h index 184d866d..70c68cc6 100644 --- a/src/content/Content.h +++ b/src/content/Content.h @@ -4,8 +4,11 @@ #include #include #include +#include #include "../typedefs.h" +typedef std::set DrawGroups; + class Block; class Content; @@ -46,8 +49,9 @@ class Content { std::unordered_map blockDefs; public: ContentIndices* const indices; - - Content(ContentIndices* indices, + DrawGroups* const drawGroups; + + Content(ContentIndices* indices, DrawGroups* drawGroups, std::unordered_map blockDefs); ~Content(); diff --git a/src/definitions.cpp b/src/definitions.cpp index 6378d523..1484b3e6 100644 --- a/src/definitions.cpp +++ b/src/definitions.cpp @@ -9,7 +9,6 @@ // All in-game definitions (blocks, items, etc..) void setup_definitions(ContentBuilder* builder) { Block* block = new Block("core:air", "air"); - block->drawGroup = 1; block->lightPassing = true; block->skyLightPassing = true; block->obstacle = false; @@ -52,7 +51,7 @@ void setup_definitions(ContentBuilder* builder) { builder->add(block); block = new Block("base:water", "water"); - block->drawGroup = 4; + block->drawGroup = 3; block->lightPassing = true; block->skyLightPassing = false; block->obstacle = false; @@ -67,7 +66,7 @@ void setup_definitions(ContentBuilder* builder) { builder->add(block); block = new Block("base:grass", "grass"); - block->drawGroup = 5; + block->drawGroup = 1; block->lightPassing = true; block->obstacle = false; block->model = BlockModel::xsprite; @@ -75,7 +74,7 @@ void setup_definitions(ContentBuilder* builder) { builder->add(block); block = new Block("base:flower", "flower"); - block->drawGroup = 5; + block->drawGroup = 1; block->lightPassing = true; block->obstacle = false; block->model = BlockModel::xsprite; diff --git a/src/graphics/BlocksRenderer.cpp b/src/graphics/BlocksRenderer.cpp index 801e11b7..8cfcaca8 100644 --- a/src/graphics/BlocksRenderer.cpp +++ b/src/graphics/BlocksRenderer.cpp @@ -317,12 +317,12 @@ vec4 BlocksRenderer::pickSoftLight(int x, int y, int z, const ivec3& right, cons void BlocksRenderer::render(const voxel* voxels, int atlas_size) { int begin = chunk->bottom * (CHUNK_W * CHUNK_D); int end = chunk->top * (CHUNK_W * CHUNK_D); - for (ubyte group = 0; group < 8; group++) { + for (const auto drawGroup : *content->drawGroups) { for (int i = begin; i < end; i++) { const voxel& vox = voxels[i]; blockid_t id = vox.id; const Block& def = *blockDefsCache[id]; - if (!id || def.drawGroup != group) + if (!id || def.drawGroup != drawGroup) continue; const UVRegion texfaces[6]{ cache->getRegion(id, 0), cache->getRegion(id, 1), cache->getRegion(id, 2), cache->getRegion(id, 3), From bf69f7df1a7c0471dc48f91e5ce21ede689167b2 Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Wed, 29 Nov 2023 20:46:46 +0200 Subject: [PATCH 5/6] MSVC build fix --- src/voxels/Chunks.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/voxels/Chunks.h b/src/voxels/Chunks.h index 5798555b..687499f2 100644 --- a/src/voxels/Chunks.h +++ b/src/voxels/Chunks.h @@ -8,7 +8,7 @@ class VoxelRenderer; -class AABB; +struct AABB; class Content; class ContentIndices; class Chunk; From e5e1dc0ed3dfee249c9562a067703b4a06726fef Mon Sep 17 00:00:00 2001 From: "@clasher113" Date: Thu, 30 Nov 2023 18:58:26 +0200 Subject: [PATCH 6/6] Memory leak fix --- src/graphics/Framebuffer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/graphics/Framebuffer.cpp b/src/graphics/Framebuffer.cpp index ab980b1b..77ae7462 100644 --- a/src/graphics/Framebuffer.cpp +++ b/src/graphics/Framebuffer.cpp @@ -26,6 +26,7 @@ Framebuffer::Framebuffer(uint width, uint height) : width(width), height(height) Framebuffer::~Framebuffer() { delete texture; glDeleteFramebuffers(1, &fbo); + glDeleteRenderbuffers(1, &depth); } void Framebuffer::bind() {