From cc193e8818c21e77192466e55ea51bb5d8b8e0de Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sun, 22 Jun 2025 23:00:16 -0400 Subject: Remove Occlusion Culling library --- .../skyblocker/utils/render/RenderHelper.java | 13 ++----- .../utils/render/culling/OcclusionCuller.java | 45 ---------------------- .../utils/render/culling/OcclusionCulling.java | 26 ------------- .../utils/render/culling/ReducedWorldProvider.java | 19 --------- .../utils/render/culling/WorldProvider.java | 28 -------------- .../utils/render/culling/package-info.java | 4 -- 6 files changed, 3 insertions(+), 132 deletions(-) delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCuller.java delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCulling.java delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/ReducedWorldProvider.java delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/WorldProvider.java delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/culling/package-info.java (limited to 'src/main/java') diff --git a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java index c87b43ad..d473badf 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java @@ -4,7 +4,6 @@ import com.mojang.blaze3d.systems.RenderSystem; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.annotations.Init; import de.hysky.skyblocker.mixins.accessors.BeaconBlockEntityRendererInvoker; -import de.hysky.skyblocker.utils.render.culling.OcclusionCulling; import de.hysky.skyblocker.utils.render.title.Title; import de.hysky.skyblocker.utils.render.title.TitleContainer; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; @@ -63,15 +62,9 @@ public class RenderHelper { } public static void renderFilled(WorldRenderContext context, double minX, double minY, double minZ, double maxX, double maxY, double maxZ, float[] colorComponents, float alpha, boolean throughWalls) { - if (throughWalls) { - if (FrustumUtils.isVisible(minX, minY, minZ, maxX, maxY, maxZ)) { - renderFilledInternal(context, minX, minY, minZ, maxX, maxY, maxZ, colorComponents, alpha, true); - } - } else { - if (OcclusionCulling.getRegularCuller().isVisible(minX, minY, minZ, maxX, maxY, maxZ)) { - renderFilledInternal(context, minX, minY, minZ, maxX, maxY, maxZ, colorComponents, alpha, false); - } - } + if (FrustumUtils.isVisible(minX, minY, minZ, maxX, maxY, maxZ)) { + renderFilledInternal(context, minX, minY, minZ, maxX, maxY, maxZ, colorComponents, alpha, throughWalls); + } } private static void renderFilledInternal(WorldRenderContext context, double minX, double minY, double minZ, double maxX, double maxY, double maxZ, float[] colorComponents, float alpha, boolean throughWalls) { diff --git a/src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCuller.java b/src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCuller.java deleted file mode 100644 index 3c48a47e..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCuller.java +++ /dev/null @@ -1,45 +0,0 @@ -package de.hysky.skyblocker.utils.render.culling; - -import com.logisticscraft.occlusionculling.OcclusionCullingInstance; -import com.logisticscraft.occlusionculling.cache.ArrayOcclusionCache; -import com.logisticscraft.occlusionculling.util.Vec3d; - -import de.hysky.skyblocker.utils.render.FrustumUtils; -import net.minecraft.client.MinecraftClient; - -public class OcclusionCuller { - private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); - - private final OcclusionCullingInstance instance; - - // Reused objects to reduce allocation overhead - private final Vec3d cameraPos = new Vec3d(0, 0, 0); - private final Vec3d min = new Vec3d(0, 0, 0); - private final Vec3d max = new Vec3d(0, 0, 0); - - OcclusionCuller(int tracingDistance, WorldProvider worldProvider, double aabbExpansion) { - this.instance = new OcclusionCullingInstance(tracingDistance, worldProvider, new ArrayOcclusionCache(tracingDistance), aabbExpansion); - } - - private void updateCameraPos() { - var camera = CLIENT.gameRenderer.getCamera().getPos(); - cameraPos.set(camera.x, camera.y, camera.z); - } - - /** - * This first checks checks if the bounding box is within the camera's FOV, if - * it is then it checks for whether it's occluded or not. - * - * @return A boolean representing whether the bounding box is fully visible or - * not as per the instance's settings. - */ - public boolean isVisible(double x1, double y1, double z1, double x2, double y2, double z2) { - if (!FrustumUtils.isVisible(x1, y1, z1, x2, y2, z2)) return false; - - updateCameraPos(); - min.set(x1, y1, z1); - max.set(x2, y2, z2); - - return instance.isAABBVisible(min, max, cameraPos); - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCulling.java b/src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCulling.java deleted file mode 100644 index eb607aa5..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/culling/OcclusionCulling.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.hysky.skyblocker.utils.render.culling; - -import de.hysky.skyblocker.annotations.Init; - -public class OcclusionCulling { - private static final int TRACING_DISTANCE = 128; - private static OcclusionCuller regularCuller = null; - private static OcclusionCuller reducedCuller = null; - - /** - * Initializes the occlusion culling instances - */ - @Init - public static void init() { - regularCuller = new OcclusionCuller(TRACING_DISTANCE, new WorldProvider(), 2); - reducedCuller = new OcclusionCuller(TRACING_DISTANCE, new ReducedWorldProvider(), 0); - } - - public static OcclusionCuller getRegularCuller() { - return regularCuller; - } - - public static OcclusionCuller getReducedCuller() { - return reducedCuller; - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/culling/ReducedWorldProvider.java b/src/main/java/de/hysky/skyblocker/utils/render/culling/ReducedWorldProvider.java deleted file mode 100644 index ca55ba05..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/culling/ReducedWorldProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.hysky.skyblocker.utils.render.culling; - -import net.minecraft.block.BlockState; -import net.minecraft.registry.tag.BlockTags; -import net.minecraft.util.math.BlockPos; - -public class ReducedWorldProvider extends WorldProvider { - - @Override - public boolean isOpaqueFullCube(int x, int y, int z) { - BlockPos pos = new BlockPos(x, y, z); - BlockState state = this.world.getBlockState(pos); - - //Fixes edge cases where stairs etc aren't treated as being full blocks for the use case - boolean isException = state.isIn(BlockTags.STAIRS) || state.isIn(BlockTags.WALLS) || state.isIn(BlockTags.FENCES); - - return isException || this.world.getBlockState(pos).isOpaqueFullCube(); - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/culling/WorldProvider.java b/src/main/java/de/hysky/skyblocker/utils/render/culling/WorldProvider.java deleted file mode 100644 index 722878b0..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/culling/WorldProvider.java +++ /dev/null @@ -1,28 +0,0 @@ -package de.hysky.skyblocker.utils.render.culling; - -import com.logisticscraft.occlusionculling.DataProvider; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.math.BlockPos; - -public class WorldProvider implements DataProvider { - private final static MinecraftClient CLIENT = MinecraftClient.getInstance(); - protected ClientWorld world = null; - - @Override - public boolean prepareChunk(int chunkX, int chunkZ) { - this.world = CLIENT.world; - return this.world != null; - } - - @Override - public boolean isOpaqueFullCube(int x, int y, int z) { - BlockPos pos = new BlockPos(x, y, z); - return this.world.getBlockState(pos).isOpaqueFullCube(); - } - - @Override - public void cleanup() { - this.world = null; - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/culling/package-info.java b/src/main/java/de/hysky/skyblocker/utils/render/culling/package-info.java deleted file mode 100644 index 1d5cdf98..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/culling/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Package dedicated to occlusion culling utilities - */ -package de.hysky.skyblocker.utils.render.culling; \ No newline at end of file -- cgit