From 096092303fc5ec41bcb6bf149c94cc2a817cec76 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 23 Dec 2024 14:07:59 +0300 Subject: [PATCH] add 'graphics.chunk-max-vertices-dense' setting --- src/files/settings_io.cpp | 1 + src/graphics/render/ChunksRenderer.cpp | 19 +++++++++++++------ src/settings.hpp | 2 ++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/files/settings_io.cpp b/src/files/settings_io.cpp index fe251a11..f5f1341b 100644 --- a/src/files/settings_io.cpp +++ b/src/files/settings_io.cpp @@ -73,6 +73,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) { builder.add("frustum-culling", &settings.graphics.frustumCulling); builder.add("skybox-resolution", &settings.graphics.skyboxResolution); builder.add("chunk-max-vertices", &settings.graphics.chunkMaxVertices); + builder.add("chunk-max-vertices-dense", &settings.graphics.chunkMaxVerticesDense); builder.add("chunk-max-renderers", &settings.graphics.chunkMaxRenderers); builder.section("ui"); diff --git a/src/graphics/render/ChunksRenderer.cpp b/src/graphics/render/ChunksRenderer.cpp index fe955bee..f1406ad1 100644 --- a/src/graphics/render/ChunksRenderer.cpp +++ b/src/graphics/render/ChunksRenderer.cpp @@ -24,15 +24,22 @@ class RendererWorker : public util::Worker, RendererResul BlocksRenderer renderer; public: RendererWorker( - const Level& level, + const Level& level, const Chunks& chunks, const ContentGfxCache& cache, const EngineSettings& settings - ) : level(level), - chunks(chunks), - renderer(settings.graphics.chunkMaxVertices.get(), - *level.content, cache, settings) - {} + ) + : level(level), + chunks(chunks), + renderer( + settings.graphics.denseRender.get() + ? settings.graphics.chunkMaxVerticesDense.get() + : settings.graphics.chunkMaxVertices.get(), + *level.content, + cache, + settings + ) { + } RendererResult operator()(const std::shared_ptr& chunk) override { renderer.build(chunk.get(), &chunks); diff --git a/src/settings.hpp b/src/settings.hpp index 48d72b27..53ebf5f9 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -71,6 +71,8 @@ struct GraphicsSettings { IntegerSetting skyboxResolution {64 + 32, 64, 128}; /// @brief Chunk renderer vertices buffer capacity IntegerSetting chunkMaxVertices {200'000, 0, 4'000'000}; + /// @brief Chunk renderer vertices buffer capacity in dense render mode + IntegerSetting chunkMaxVerticesDense {800'000, 0, 8'000'000}; /// @brief Limit of chunk renderers count IntegerSetting chunkMaxRenderers {6, -4, 32}; };