From 3569e1d8898634ebd8d0a9c76e198a5a2ea7053a Mon Sep 17 00:00:00 2001 From: mcrcortex <18544518+MCRcortex@users.noreply.github.com> Date: Tue, 8 Apr 2025 00:43:02 +1000 Subject: [PATCH] fence + getter --- .../me/cortex/voxy/client/core/rendering/RenderService.java | 4 ++++ .../cortex/voxy/client/core/rendering/VoxyRenderSystem.java | 5 ++++- .../core/rendering/building/RenderGenerationService.java | 4 ++++ .../me/cortex/voxy/common/world/ActiveSectionTracker.java | 5 +++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java b/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java index 3fd80000..fb502eba 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/RenderService.java @@ -195,4 +195,8 @@ public class RenderService, J extends Vi public Viewport getViewport() { return this.viewportSelector.getViewport(); } + + public int getMeshQueueCount() { + return this.renderGen.getTaskCount(); + } } diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/VoxyRenderSystem.java b/src/main/java/me/cortex/voxy/client/core/rendering/VoxyRenderSystem.java index b76b150e..743dd52a 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/VoxyRenderSystem.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/VoxyRenderSystem.java @@ -137,13 +137,16 @@ public class VoxyRenderSystem { } if (false) { + //only increase quality while there are very few mesh queues, this stops, + // e.g. while flying and is rendering alot of low quality chunks + boolean canDecreaseSize = this.renderer.getMeshQueueCount() < 5000; float CHANGE_PER_SECOND = 30; //Auto fps targeting if (MinecraftClient.getInstance().getCurrentFps() < 45) { VoxyConfig.CONFIG.subDivisionSize = Math.min(VoxyConfig.CONFIG.subDivisionSize + CHANGE_PER_SECOND / Math.max(1f, MinecraftClient.getInstance().getCurrentFps()), 256); } - if (55 < MinecraftClient.getInstance().getCurrentFps()) { + if (55 < MinecraftClient.getInstance().getCurrentFps() && canDecreaseSize) { VoxyConfig.CONFIG.subDivisionSize = Math.max(VoxyConfig.CONFIG.subDivisionSize - CHANGE_PER_SECOND / Math.max(1f, MinecraftClient.getInstance().getCurrentFps()), 30); } } diff --git a/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderGenerationService.java b/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderGenerationService.java index 41c01640..b20146c7 100644 --- a/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderGenerationService.java +++ b/src/main/java/me/cortex/voxy/client/core/rendering/building/RenderGenerationService.java @@ -213,4 +213,8 @@ public class RenderGenerationService { public void addDebugData(List debug) { debug.add("RSSQ: " + this.taskQueue.size());//render section service queue } + + public int getTaskCount() { + return this.taskQueue.size(); + } } diff --git a/src/main/java/me/cortex/voxy/common/world/ActiveSectionTracker.java b/src/main/java/me/cortex/voxy/common/world/ActiveSectionTracker.java index 41b1bfc2..3e599d28 100644 --- a/src/main/java/me/cortex/voxy/common/world/ActiveSectionTracker.java +++ b/src/main/java/me/cortex/voxy/common/world/ActiveSectionTracker.java @@ -6,6 +6,7 @@ import me.cortex.voxy.common.util.VolatileHolder; import me.cortex.voxy.common.world.other.Mapper; import org.jetbrains.annotations.Nullable; +import java.lang.invoke.VarHandle; import java.util.Arrays; import java.util.concurrent.locks.ReentrantLock; @@ -58,6 +59,7 @@ public class ActiveSectionTracker { lock.lock(); { + VarHandle.fullFence(); holder = cache.get(key); if (holder == null) { holder = new VolatileHolder<>(); @@ -70,6 +72,7 @@ public class ActiveSectionTracker { lock.unlock(); return section; } + VarHandle.fullFence(); } lock.unlock(); @@ -136,6 +139,7 @@ public class ActiveSectionTracker { final var lock = this.locks[index]; lock.lock(); { + VarHandle.fullFence(); if (section.trySetFreed()) { var cached = cache.remove(section.key); var obj = cached.obj; @@ -144,6 +148,7 @@ public class ActiveSectionTracker { } sec = section; } + VarHandle.fullFence(); } lock.unlock();