optimizing chunk mesh

This commit is contained in:
2025-05-20 16:15:23 +02:00
parent 84e5e437d0
commit 6fea3147ee
9 changed files with 199 additions and 125 deletions

View File

@@ -6,8 +6,8 @@
#include <ScopGraphics.h>
#include <ScopMaths.h>
constexpr Scop::Vec3ui CHUNK_SIZE = Scop::Vec3ui{ 32, 32, 32 };
constexpr std::uint32_t CHUNK_VOLUME = CHUNK_SIZE.x * CHUNK_SIZE.y * CHUNK_SIZE.z;
constexpr Scop::Vec3ui CHUNK_SIZE = Scop::Vec3ui{ 32, 256, 32 };
constexpr Scop::Vec3ui CHUNK_SIZE_HALF = CHUNK_SIZE / 2 ;
class Chunk
{
@@ -19,13 +19,14 @@ class Chunk
void UploadMesh();
[[nodiscard]] std::uint32_t GetBlock(Scop::Vec3i position) const noexcept;
[[nodiscard]] inline Scop::NonOwningPtr<Scop::Actor> GetActor() const noexcept { return p_actor; }
[[nodiscard]] inline Scop::Vec2i GetPosition() const noexcept { return m_position; }
~Chunk() = default;
private:
std::vector<Scop::Vertex> m_mesh_data;
std::vector<std::uint32_t> m_mesh_index_data;
std::vector<std::uint32_t> m_data;
std::vector<std::vector<std::vector<std::uint32_t>>> m_data;
Scop::Vec2i m_offset; // In chunks
Scop::Vec2i m_position; // In blocks
class World& m_world;