aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2022-06-21 01:28:11 +0200
committermakamys <makamys@outlook.com>2022-06-21 02:42:39 +0200
commit722090f48a9fb75304905fdfb323d3c5eb452424 (patch)
treecf389edcf06e9040659e068901c085381a55bb17
parent6a028dc59c739c0bd6fd02ccc3bd7f5f5428ea5a (diff)
downloadNeodymium-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.java19
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;
}