aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/makamys')
-rw-r--r--src/main/java/makamys/lodmod/LODMod.java8
-rw-r--r--src/main/java/makamys/lodmod/renderer/ChunkMesh.java15
-rw-r--r--src/main/java/makamys/lodmod/renderer/LODChunk.java1
-rw-r--r--src/main/java/makamys/lodmod/renderer/LODRenderer.java15
-rw-r--r--src/main/java/makamys/lodmod/renderer/SimpleChunkMesh.java7
5 files changed, 42 insertions, 4 deletions
diff --git a/src/main/java/makamys/lodmod/LODMod.java b/src/main/java/makamys/lodmod/LODMod.java
index 6b0e2c7..485f867 100644
--- a/src/main/java/makamys/lodmod/LODMod.java
+++ b/src/main/java/makamys/lodmod/LODMod.java
@@ -78,8 +78,12 @@ public class LODMod
ScaledResolution scaledresolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
int w = scaledresolution.getScaledWidth();
int h = scaledresolution.getScaledHeight();
- String s = renderer.getDebugText();
- fontRenderer.drawStringWithShadow(s, w - fontRenderer.getStringWidth(s) - 10, 80, 0xFFFFFF);
+
+ int yOffset = 0;
+ for(String s : renderer.getDebugText()) {
+ fontRenderer.drawStringWithShadow(s, w - fontRenderer.getStringWidth(s) - 10, 80 + yOffset, 0xFFFFFF);
+ yOffset += 10;
+ }
}
}
}
diff --git a/src/main/java/makamys/lodmod/renderer/ChunkMesh.java b/src/main/java/makamys/lodmod/renderer/ChunkMesh.java
index 4175b9f..2251da8 100644
--- a/src/main/java/makamys/lodmod/renderer/ChunkMesh.java
+++ b/src/main/java/makamys/lodmod/renderer/ChunkMesh.java
@@ -17,6 +17,7 @@ import java.util.List;
import org.lwjgl.BufferUtils;
+import makamys.lodmod.LODMod;
import makamys.lodmod.ducks.IWorldRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
@@ -32,6 +33,9 @@ public class ChunkMesh extends Mesh {
int z;
Flags flags;
+ public static int usedRAM = 0;
+ public static int instances = 0;
+
private ChunkMesh(int x, int y, int z, Flags flags, int quadCount, byte[] data, List<String> stringTable) {
this.x = x;
this.y = y;
@@ -40,6 +44,9 @@ public class ChunkMesh extends Mesh {
this.quadCount = quadCount;
this.buffer = createBuffer(data, stringTable);
+
+ usedRAM += buffer.limit();
+ instances++;
}
public ChunkMesh(int x, int y, int z, Flags flags, int quadCount, List<MeshQuad> quads) {
@@ -50,6 +57,14 @@ public class ChunkMesh extends Mesh {
this.quadCount = quadCount;
this.buffer = createBuffer(quads);
+
+ usedRAM += buffer.limit();
+ instances++;
+ }
+
+ void destroy() {
+ usedRAM -= buffer.limit();
+ instances--;
}
private ByteBuffer createBuffer(List<MeshQuad> quads) {
diff --git a/src/main/java/makamys/lodmod/renderer/LODChunk.java b/src/main/java/makamys/lodmod/renderer/LODChunk.java
index 29d4198..e1582b1 100644
--- a/src/main/java/makamys/lodmod/renderer/LODChunk.java
+++ b/src/main/java/makamys/lodmod/renderer/LODChunk.java
@@ -37,6 +37,7 @@ public class LODChunk {
for(int i = 0; i < 2; i++) {
if(chunkMeshes[cy * 2 + i] != null) {
renderer.setMeshVisible(chunkMeshes[cy * 2 + i], false);
+ chunkMeshes[cy * 2 + i].destroy();
chunkMeshes[cy * 2 + i] = null;
}
}
diff --git a/src/main/java/makamys/lodmod/renderer/LODRenderer.java b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
index b28b654..4c5c50f 100644
--- a/src/main/java/makamys/lodmod/renderer/LODRenderer.java
+++ b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
@@ -13,6 +13,7 @@ import net.minecraft.world.gen.ChunkProviderServer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
@@ -338,6 +339,11 @@ public class LODRenderer {
glDeleteProgram(shaderProgram);
glDeleteVertexArrays(VAO);
glDeleteBuffers(VBO);
+
+ SimpleChunkMesh.instances = 0;
+ SimpleChunkMesh.usedRAM = 0;
+ ChunkMesh.instances = 0;
+ ChunkMesh.usedRAM = 0;
}
public void onWorldRendererPost(WorldRenderer wr) {
@@ -561,8 +567,13 @@ public class LODRenderer {
return null;
}
- public String getDebugText() {
- return "VRAM: " + (nextMeshOffset / 1024 / 1024) + "MB / " + (BUFFER_SIZE / 1024 / 1024) + "MB";
+ public List<String> getDebugText() {
+ return Arrays.asList(
+ "VRAM: " + (nextMeshOffset / 1024 / 1024) + "MB / " + (BUFFER_SIZE / 1024 / 1024) + "MB",
+ "Simple meshes: " + SimpleChunkMesh.instances + " (" + SimpleChunkMesh.usedRAM / 1024 / 1024 + "MB)",
+ "Full meshes: " + ChunkMesh.instances + " (" + ChunkMesh.usedRAM / 1024 / 1024 + "MB)",
+ "Total RAM used: " + ((SimpleChunkMesh.usedRAM + ChunkMesh.usedRAM) / 1024 / 1024) + " MB"
+ );
}
public static class LODChunkComparator implements Comparator<LODChunk> {
diff --git a/src/main/java/makamys/lodmod/renderer/SimpleChunkMesh.java b/src/main/java/makamys/lodmod/renderer/SimpleChunkMesh.java
index 190a398..960c48d 100644
--- a/src/main/java/makamys/lodmod/renderer/SimpleChunkMesh.java
+++ b/src/main/java/makamys/lodmod/renderer/SimpleChunkMesh.java
@@ -14,6 +14,7 @@ import java.nio.IntBuffer;
import org.lwjgl.BufferUtils;
+import makamys.lodmod.LODMod;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
@@ -26,6 +27,9 @@ public class SimpleChunkMesh extends Mesh {
private FloatBuffer vertices;
+ public static int usedRAM;
+ public static int instances;
+
public SimpleChunkMesh(Chunk target) {
int divisions = 4;
quadCount = divisions * divisions * 5;
@@ -74,6 +78,9 @@ public class SimpleChunkMesh extends Mesh {
}
}
vertices.flip();
+
+ usedRAM += buffer.limit();
+ instances++;
}
private void addCube(float x, float y, float z, float sizeX, float sizeZ, float sizeY, IIcon icon, int color) {