aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys/lodmod/renderer
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2022-06-07 01:17:55 +0200
committermakamys <makamys@outlook.com>2022-06-07 01:24:28 +0200
commit3dd5e5cb5981271c1c0a7352076a57603e9d43a7 (patch)
tree0433607b681d2ab8d3f9ef09115426754e5a8ee6 /src/main/java/makamys/lodmod/renderer
parent8ec6aebebefe045d65aa13e2b59aaf4df0895f7f (diff)
downloadNeodymium-3dd5e5cb5981271c1c0a7352076a57603e9d43a7.tar.gz
Neodymium-3dd5e5cb5981271c1c0a7352076a57603e9d43a7.tar.bz2
Neodymium-3dd5e5cb5981271c1c0a7352076a57603e9d43a7.zip
Add GPU memory debugger
Diffstat (limited to 'src/main/java/makamys/lodmod/renderer')
-rw-r--r--src/main/java/makamys/lodmod/renderer/GPUMemoryManager.java33
-rw-r--r--src/main/java/makamys/lodmod/renderer/LODRenderer.java13
2 files changed, 42 insertions, 4 deletions
diff --git a/src/main/java/makamys/lodmod/renderer/GPUMemoryManager.java b/src/main/java/makamys/lodmod/renderer/GPUMemoryManager.java
index 72f22a2..a04adb2 100644
--- a/src/main/java/makamys/lodmod/renderer/GPUMemoryManager.java
+++ b/src/main/java/makamys/lodmod/renderer/GPUMemoryManager.java
@@ -7,15 +7,13 @@ import static org.lwjgl.opengl.GL15.glBufferData;
import static org.lwjgl.opengl.GL15.glBufferSubData;
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
import static org.lwjgl.opengl.GL15.glGenBuffers;
-import static org.lwjgl.opengl.GL30.glBindVertexArray;
-import static org.lwjgl.opengl.GL30.glGenVertexArrays;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import makamys.lodmod.renderer.Mesh.GPUStatus;
+import makamys.lodmod.util.GuiHelper;
public class GPUMemoryManager {
@@ -118,5 +116,34 @@ public class GPUMemoryManager {
public List<String> getDebugText() {
return Arrays.asList("VRAM: " + (nextMeshOffset / 1024 / 1024) + "MB / " + (BUFFER_SIZE / 1024 / 1024) + "MB");
}
+
+ public void drawInfo() {
+ int scale = 10000;
+ int rowLength = 512;
+ int yOff = 20;
+
+ int meshI = 0;
+ for(Mesh mesh : sentMeshes) {
+
+ int o = mesh.offset / 10000;
+ int o2 = (mesh.offset + mesh.buffer.limit()) / 10000;
+ if(o / rowLength == o2 / rowLength) {
+ if(mesh.gpuStatus != Mesh.GPUStatus.PENDING_DELETE) {
+ GuiHelper.drawRectangle(o % rowLength, o / rowLength + yOff, mesh.buffer.limit() / scale + 1, 1, meshI % 2 == 0 ? 0xFFFFFF : 0x808080);
+ }
+ } else {
+ for(int i = o; i < o2; i++) {
+ int x = i % rowLength;
+ int y = i / rowLength;
+ if(mesh.gpuStatus != Mesh.GPUStatus.PENDING_DELETE) {
+ GuiHelper.drawRectangle(x, y + yOff, 1, 1, 0xFFFFFF);
+ }
+ }
+ }
+ meshI++;
+ }
+ GuiHelper.drawRectangle(0 % rowLength, 0 + yOff, 4, 4, 0x00FF00);
+ GuiHelper.drawRectangle((BUFFER_SIZE / scale) % rowLength, (BUFFER_SIZE / scale) / rowLength + yOff, 4, 4, 0xFF0000);
+ }
}
diff --git a/src/main/java/makamys/lodmod/renderer/LODRenderer.java b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
index 5ed9377..fb49e7b 100644
--- a/src/main/java/makamys/lodmod/renderer/LODRenderer.java
+++ b/src/main/java/makamys/lodmod/renderer/LODRenderer.java
@@ -43,6 +43,7 @@ import org.lwjgl.util.vector.Matrix4f;
import makamys.lodmod.LODMod;
import makamys.lodmod.ducks.IWorldRenderer;
import makamys.lodmod.renderer.Mesh.GPUStatus;
+import makamys.lodmod.util.GuiHelper;
import makamys.lodmod.util.Util;
import static org.lwjgl.opengl.GL11.*;
@@ -60,6 +61,7 @@ public class LODRenderer {
public boolean renderWorld;
public boolean rendererActive;
+ private boolean showMemoryDebugger;
private static int MAX_MESHES = 100000;
@@ -147,6 +149,14 @@ public class LODRenderer {
Minecraft.getMinecraft().entityRenderer.disableLightmap((double)alpha);
}
+ public void onRenderTickEnd() {
+ if(showMemoryDebugger && mem != null) {
+ GuiHelper.begin();
+ mem.drawInfo();
+ GuiHelper.end();
+ }
+ }
+
private void sort() {
Entity player = Minecraft.getMinecraft().renderViewEntity;
for(List<Mesh> list : sentMeshes) {
@@ -250,7 +260,8 @@ public class LODRenderer {
if(Keyboard.isKeyDown(Keyboard.KEY_R) && !wasDown[Keyboard.KEY_R]) {
loadShader();
}
- if(Keyboard.isKeyDown(Keyboard.KEY_G) && !wasDown[Keyboard.KEY_G]) {
+ if(Keyboard.isKeyDown(Keyboard.KEY_M) && !wasDown[Keyboard.KEY_M]) {
+ showMemoryDebugger = !showMemoryDebugger;
//LODChunk chunk = getLODChunk(9, -18);
//setMeshVisible(chunk.chunkMeshes[7], false, true);
//freezeMeshes = false;