diff options
author | makamys <makamys@outlook.com> | 2022-06-21 01:28:11 +0200 |
---|---|---|
committer | makamys <makamys@outlook.com> | 2022-06-21 02:42:39 +0200 |
commit | 722090f48a9fb75304905fdfb323d3c5eb452424 (patch) | |
tree | cf389edcf06e9040659e068901c085381a55bb17 | |
parent | 6a028dc59c739c0bd6fd02ccc3bd7f5f5428ea5a (diff) | |
download | Neodymium-722090f48a9fb75304905fdfb323d3c5eb452424.tar.gz Neodymium-722090f48a9fb75304905fdfb323d3c5eb452424.tar.bz2 Neodymium-722090f48a9fb75304905fdfb323d3c5eb452424.zip |
Try to optimize the culling
-rw-r--r-- | src/main/java/makamys/neodymium/renderer/NeoRenderer.java | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/makamys/neodymium/renderer/NeoRenderer.java b/src/main/java/makamys/neodymium/renderer/NeoRenderer.java index 9ca74d4..5ced887 100644 --- a/src/main/java/makamys/neodymium/renderer/NeoRenderer.java +++ b/src/main/java/makamys/neodymium/renderer/NeoRenderer.java @@ -88,6 +88,9 @@ public class NeoRenderer { private double interpX; private double interpY; private double interpZ; + int interpXDiv; + int interpYDiv; + int interpZDiv; private long lastGCTime = -1; private long lastSaveTime = -1; @@ -142,6 +145,10 @@ public class NeoRenderer { interpY = rve.lastTickPosY + (rve.posY - rve.lastTickPosY) * alpha + rve.getEyeHeight(); interpZ = rve.lastTickPosZ + (rve.posZ - rve.lastTickPosZ) * alpha; + interpXDiv = Math.floorDiv((int)Math.floor(interpX), 16); + interpYDiv = Math.floorDiv((int)Math.floor(interpY), 16); + interpZDiv = Math.floorDiv((int)Math.floor(interpZ), 16); + if(frameCount % Config.sortFrequency == 0) { sort(); } @@ -204,17 +211,17 @@ public class NeoRenderer { private boolean isNormalMeshVisible(Mesh mesh) { switch(mesh.normal) { case POSITIVE_X: - return interpX > ((mesh.x + 0) * 16.0); + return interpXDiv >= ((mesh.x + 0)); case NEGATIVE_X: - return interpX < ((mesh.x + 1) * 16.0); + return interpXDiv < ((mesh.x + 1)); case POSITIVE_Y: - return interpY > ((mesh.y + 0) * 16.0); + return interpYDiv >= ((mesh.y + 0)); case NEGATIVE_Y: - return interpY < ((mesh.y + 1) * 16.0); + return interpYDiv < ((mesh.y + 1)); case POSITIVE_Z: - return interpZ > ((mesh.z + 0) * 16.0); + return interpZDiv >= ((mesh.z + 0)); case NEGATIVE_Z: - return interpZ < ((mesh.z + 1) * 16.0); + return interpZDiv < ((mesh.z + 1)); default: return true; } |