diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/occlusion/OcclusionCuller.java b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/occlusion/OcclusionCuller.java index 27f5803fcd..ca0e70270a 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/occlusion/OcclusionCuller.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/render/chunk/occlusion/OcclusionCuller.java @@ -182,7 +182,8 @@ private static int nearestToZero(int min, int max) { private static final float CHUNK_SECTION_SIZE = 8.0f /* chunk bounds */ + 1.0f /* maximum model extent */ + 0.125f /* epsilon */; public static boolean isWithinFrustum(Viewport viewport, RenderSection section) { - return viewport.isBoxVisible(section.getCenterX(), section.getCenterY(), section.getCenterZ(), CHUNK_SECTION_SIZE); + return viewport.isBoxVisible(section.getCenterX(), section.getCenterY(), section.getCenterZ(), + CHUNK_SECTION_SIZE, CHUNK_SECTION_SIZE, CHUNK_SECTION_SIZE); } private void init(Visitor visitor, diff --git a/src/main/java/me/jellysquid/mods/sodium/client/render/viewport/Viewport.java b/src/main/java/me/jellysquid/mods/sodium/client/render/viewport/Viewport.java index 14834ebb6f..3bd7bceb39 100644 --- a/src/main/java/me/jellysquid/mods/sodium/client/render/viewport/Viewport.java +++ b/src/main/java/me/jellysquid/mods/sodium/client/render/viewport/Viewport.java @@ -25,19 +25,19 @@ public Viewport(Frustum frustum, Vector3d position) { this.blockCoords = BlockPos.ofFloored(position.x, position.y, position.z); } - public boolean isBoxVisible(int intX, int intY, int intZ, float radius) { - float floatX = (intX - this.transform.intX) - this.transform.fracX; - float floatY = (intY - this.transform.intY) - this.transform.fracY; - float floatZ = (intZ - this.transform.intZ) - this.transform.fracZ; + public boolean isBoxVisible(int intOriginX, int intOriginY, int intOriginZ, float floatSizeX, float floatSizeY, float floatSizeZ) { + float floatOriginX = (intOriginX - this.transform.intX) - this.transform.fracX; + float floatOriginY = (intOriginY - this.transform.intY) - this.transform.fracY; + float floatOriginZ = (intOriginZ - this.transform.intZ) - this.transform.fracZ; return this.frustum.testAab( - floatX - radius, - floatY - radius, - floatZ - radius, + floatOriginX - floatSizeX, + floatOriginY - floatSizeY, + floatOriginZ - floatSizeZ, - floatX + radius, - floatY + radius, - floatZ + radius + floatOriginX + floatSizeX, + floatOriginY + floatSizeY, + floatOriginZ + floatSizeZ ); }