From ba79561e7b874453f717ff1174d43e6a599fce5c Mon Sep 17 00:00:00 2001 From: douira Date: Sun, 10 Nov 2024 04:53:29 +0100 Subject: [PATCH] fix incorrect multi forest size calculation --- .../client/render/chunk/lists/PendingTaskCollector.java | 5 +---- .../sodium/client/render/chunk/tree/BaseMultiForest.java | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/PendingTaskCollector.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/PendingTaskCollector.java index d22888391d..57bb7a2c98 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/PendingTaskCollector.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/lists/PendingTaskCollector.java @@ -22,9 +22,6 @@ - experiment with non-linear distance scaling (if < some radius, bonus priority for being close) */ public class PendingTaskCollector implements OcclusionCuller.GraphOcclusionVisitor { - // offset is shifted by 1 to encompass all sections towards the negative - // TODO: is this the correct way of calculating the minimum possible section index? - private static final int DISTANCE_OFFSET = 1; public static final int SECTION_Y_MIN = -128; // used instead of baseOffsetY to accommodate all permissible y values (-2048 to 2048 blocks) // tunable parameters for the priority calculation. @@ -48,7 +45,7 @@ public class PendingTaskCollector implements OcclusionCuller.GraphOcclusionVisit public PendingTaskCollector(Viewport viewport, float buildDistance, boolean frustumTested) { this.creationTime = System.nanoTime(); this.isFrustumTested = frustumTested; - var offsetDistance = Mth.ceil(buildDistance / 16.0f) + DISTANCE_OFFSET; + var offsetDistance = Mth.ceil(buildDistance / 16.0f) + 1; var transform = viewport.getTransform(); diff --git a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java index fdf0af8483..52f9de4e2f 100644 --- a/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java +++ b/common/src/main/java/net/caffeinemc/mods/sodium/client/render/chunk/tree/BaseMultiForest.java @@ -9,7 +9,7 @@ public abstract class BaseMultiForest extends BaseForest { public BaseMultiForest(int baseOffsetX, int baseOffsetY, int baseOffsetZ, float buildDistance) { super(baseOffsetX, baseOffsetY, baseOffsetZ, buildDistance); - this.forestDim = (int) Math.ceil(buildDistance / 64.0); + this.forestDim = (int) Math.ceil((buildDistance / 8.0 + 1) / 64.0); this.trees = this.makeTrees(this.forestDim * this.forestDim * this.forestDim); } @@ -62,6 +62,7 @@ public int getPresence(int x, int y, int z) { var treeIndex = this.getTreeIndexAbsolute(x, y, z); var tree = this.trees[treeIndex]; if (tree != null) { + this.lastTree = tree; return tree.getPresence(x, y, z); } return TraversableTree.OUT_OF_BOUNDS;