diff options
| author | makamys <makamys@outlook.com> | 2022-06-07 01:17:55 +0200 |
|---|---|---|
| committer | makamys <makamys@outlook.com> | 2022-06-07 01:24:28 +0200 |
| commit | 3dd5e5cb5981271c1c0a7352076a57603e9d43a7 (patch) | |
| tree | 0433607b681d2ab8d3f9ef09115426754e5a8ee6 /src/main/java/makamys/lodmod/renderer | |
| parent | 8ec6aebebefe045d65aa13e2b59aaf4df0895f7f (diff) | |
| download | Neodymium-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.java | 33 | ||||
| -rw-r--r-- | src/main/java/makamys/lodmod/renderer/LODRenderer.java | 13 |
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; |
