add 'graphics.particles-batch-vertices' setting

This commit is contained in:
MihailRis 2026-02-02 23:05:44 +03:00
parent 75afce2a68
commit ed2f0cac77
6 changed files with 9 additions and 7 deletions

View file

@ -19,12 +19,12 @@ ParticlesRenderer::ParticlesRenderer(
const Assets& assets, const Assets& assets,
const Level& level, const Level& level,
const Chunks& chunks, const Chunks& chunks,
const GraphicsSettings* settings const GraphicsSettings& settings
) )
: chunks(chunks), : chunks(chunks),
assets(assets), assets(assets),
settings(settings), settings(settings),
batch(std::make_unique<MainBatch>(4096)) { batch(std::make_unique<MainBatch>(settings.particlesBatchVertices.get())) {
} }
ParticlesRenderer::~ParticlesRenderer() = default; ParticlesRenderer::~ParticlesRenderer() = default;
@ -188,7 +188,7 @@ void ParticlesRenderer::render(const Camera& camera) {
aliveEmitters = emitters.size(); aliveEmitters = emitters.size();
visibleParticles = 0; visibleParticles = 0;
bool backlight = settings->backlight.get(); bool backlight = settings.backlight.get();
batch->begin(); batch->begin();
for (auto& [texture, vec] : particles) { for (auto& [texture, vec] : particles) {

View file

@ -18,7 +18,7 @@ struct GraphicsSettings;
class ParticlesRenderer { class ParticlesRenderer {
const Chunks& chunks; const Chunks& chunks;
const Assets& assets; const Assets& assets;
const GraphicsSettings* settings; const GraphicsSettings& settings;
std::unordered_map<const Texture*, std::vector<Particle>> particles; std::unordered_map<const Texture*, std::vector<Particle>> particles;
std::unique_ptr<MainBatch> batch; std::unique_ptr<MainBatch> batch;
@ -34,7 +34,7 @@ public:
const Assets& assets, const Assets& assets,
const Level& level, const Level& level,
const Chunks& chunks, const Chunks& chunks,
const GraphicsSettings* settings const GraphicsSettings& settings
); );
~ParticlesRenderer(); ~ParticlesRenderer();

View file

@ -87,7 +87,7 @@ WorldRenderer::WorldRenderer(
engine.getSettings() engine.getSettings()
)), )),
particles(std::make_unique<ParticlesRenderer>( particles(std::make_unique<ParticlesRenderer>(
assets, level, *player.chunks, &engine.getSettings().graphics assets, level, *player.chunks, engine.getSettings().graphics
)), )),
texts(std::make_unique<TextsRenderer>(*batch3d, assets, *frustumCulling)), texts(std::make_unique<TextsRenderer>(*batch3d, assets, *frustumCulling)),
blockWraps( blockWraps(

View file

@ -22,7 +22,6 @@ class DebugLinesRenderer;
class DrawContext; class DrawContext;
class Engine; class Engine;
class Frustum; class Frustum;
class GBuffer;
class HandsRenderer; class HandsRenderer;
class Level; class Level;
class LevelFrontend; class LevelFrontend;

View file

@ -76,6 +76,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) {
builder.add("chunk-max-vertices", &settings.graphics.chunkMaxVertices); builder.add("chunk-max-vertices", &settings.graphics.chunkMaxVertices);
builder.add("chunk-max-vertices-dense", &settings.graphics.chunkMaxVerticesDense); builder.add("chunk-max-vertices-dense", &settings.graphics.chunkMaxVerticesDense);
builder.add("chunk-max-renderers", &settings.graphics.chunkMaxRenderers); builder.add("chunk-max-renderers", &settings.graphics.chunkMaxRenderers);
builder.add("particles-batch-vertices", &settings.graphics.particlesBatchVertices);
builder.add("advanced-render", &settings.graphics.advancedRender); builder.add("advanced-render", &settings.graphics.advancedRender);
builder.add("ssao", &settings.graphics.ssao); builder.add("ssao", &settings.graphics.ssao);
builder.add("shadows-quality", &settings.graphics.shadowsQuality); builder.add("shadows-quality", &settings.graphics.shadowsQuality);

View file

@ -79,6 +79,8 @@ struct GraphicsSettings {
IntegerSetting chunkMaxVerticesDense {800'000, 0, 8'000'000}; IntegerSetting chunkMaxVerticesDense {800'000, 0, 8'000'000};
/// @brief Limit of chunk renderers count /// @brief Limit of chunk renderers count
IntegerSetting chunkMaxRenderers {6, -4, 32}; IntegerSetting chunkMaxRenderers {6, -4, 32};
/// @brief Particles renderer vertices buffer capacity
IntegerSetting particlesBatchVertices {4'096, 0, 1'000'000};
/// @brief Advanced render pipeline /// @brief Advanced render pipeline
FlagSetting advancedRender {true}; FlagSetting advancedRender {true};
/// @brief Screen space ambient occlusion quality /// @brief Screen space ambient occlusion quality