From 56068b4bbb0889432f32b6ea64c83c3535f8ab27 Mon Sep 17 00:00:00 2001 From: austin Date: Wed, 14 May 2025 23:03:16 -0400 Subject: [PATCH] opengl error work --- docs/src/progress/renderertodo.md | 1 + src/main/java/electrosphere/data/item/Item.java | 6 ------ .../java/electrosphere/renderer/model/Mesh.java | 8 -------- .../renderer/shader/ComputeShader.java | 13 ++++++++++++- .../electrosphere/renderer/shader/VisualShader.java | 6 ++++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 30b4d2c0..8bf6f020 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1788,6 +1788,7 @@ Inventory state in non-creatures actually saves/loads to/from disk Fix virtual scrollable mouse alignment for events Remove warnings for fast loading Work on debugging framebuffers +Work to unify opengl error reporting diff --git a/src/main/java/electrosphere/data/item/Item.java b/src/main/java/electrosphere/data/item/Item.java index e98c83ec..8c4985ae 100644 --- a/src/main/java/electrosphere/data/item/Item.java +++ b/src/main/java/electrosphere/data/item/Item.java @@ -6,8 +6,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import electrosphere.client.block.BlockChunkData; -import electrosphere.client.block.cells.BlockTextureAtlas; import electrosphere.controls.cursor.CursorState; import electrosphere.data.block.BlockType; import electrosphere.data.common.CommonEntityType; @@ -17,7 +15,6 @@ import electrosphere.data.graphics.NonproceduralModel; import electrosphere.data.voxel.VoxelType; import electrosphere.engine.Globals; import electrosphere.engine.assetmanager.AssetDataStrings; -import electrosphere.logger.LoggerInterface; import electrosphere.renderer.RenderUtils; /** @@ -179,9 +176,6 @@ public class Item extends CommonEntityType { //set uniforms for the model Map> meshUniformMap = new HashMap>(); Map uniforms = new HashMap(); - if(Globals.blockTextureAtlas.getVoxelTypeOffset(blockType.getId()) == BlockTextureAtlas.MISSING && blockType.getId() != BlockChunkData.BLOCK_TYPE_EMPTY){ - LoggerInterface.loggerEngine.WARNING("Block type " + blockType.getId() + " missing in BlockTextureAtlas"); - } uniforms.put("blockAtlasIndex",Globals.blockTextureAtlas.getVoxelTypeOffset(blockType.getId())); meshUniformMap.put(RenderUtils.MESH_NAME_BLOCK_SINGLE,uniforms); modelData.setUniforms(meshUniformMap); diff --git a/src/main/java/electrosphere/renderer/model/Mesh.java b/src/main/java/electrosphere/renderer/model/Mesh.java index 346c6232..7f9f7479 100644 --- a/src/main/java/electrosphere/renderer/model/Mesh.java +++ b/src/main/java/electrosphere/renderer/model/Mesh.java @@ -321,8 +321,6 @@ public class Mesh { if(currentUniformRaw instanceof Matrix4d){ Matrix4d currentUniform = (Matrix4d)currentUniformRaw; openGLState.getActiveShader().setUniform(openGLState, key, currentUniform); - // GL40.glUniformMatrix4dv(glGetUniformLocation(openGLState.getActiveShader().getId(), key), false, currentUniform.get(new double[16])); - Globals.renderingEngine.checkError(); } if(currentUniformRaw instanceof Vector3d){ throw new Error("Unsupported data type!"); @@ -330,20 +328,14 @@ public class Mesh { if(currentUniformRaw instanceof Vector3f){ Vector3f currentUniform = (Vector3f)currentUniformRaw; openGLState.getActiveShader().setUniform(openGLState, key, currentUniform); - // glUniform3fv(glGetUniformLocation(openGLState.getActiveShader().getId(), key), currentUniform.get(BufferUtils.createFloatBuffer(3))); - Globals.renderingEngine.checkError(); } if(currentUniformRaw instanceof Vector4f){ Vector4f currentUniform = (Vector4f)currentUniformRaw; openGLState.getActiveShader().setUniform(openGLState, key, currentUniform); - // glUniform3fv(glGetUniformLocation(openGLState.getActiveShader().getId(), key), currentUniform.get(BufferUtils.createFloatBuffer(3))); - Globals.renderingEngine.checkError(); } if(currentUniformRaw instanceof Integer){ int currentUniform = (Integer)currentUniformRaw; openGLState.getActiveShader().setUniform(openGLState, key, currentUniform); - // glUniform1i(glGetUniformLocation(openGLState.getActiveShader().getId(), key), currentUniform); - Globals.renderingEngine.checkError(); } } } diff --git a/src/main/java/electrosphere/renderer/shader/ComputeShader.java b/src/main/java/electrosphere/renderer/shader/ComputeShader.java index d5b1cc92..84335374 100644 --- a/src/main/java/electrosphere/renderer/shader/ComputeShader.java +++ b/src/main/java/electrosphere/renderer/shader/ComputeShader.java @@ -106,7 +106,7 @@ public class ComputeShader implements Shader { // //get uniform location - int uniformLocation = GL40.glGetUniformLocation(this.getId(), uniformName); + int uniformLocation = this.getUniformLocation(uniformName); int glErrorCode = Globals.renderingEngine.getError(); if(glErrorCode != 0){ LoggerInterface.loggerRenderer.DEBUG_LOOP(RenderingEngine.getErrorInEnglish(glErrorCode)); @@ -122,6 +122,17 @@ public class ComputeShader implements Shader { } } + /** + * Gets the location of a given uniform + * @param uniformName The name of the uniform + * @return The location of the uniform + */ + public int getUniformLocation(String uniformName){ + int rVal = GL40.glGetUniformLocation(this.getId(), uniformName); + Globals.renderingEngine.checkError(); + return rVal; + } + @Override diff --git a/src/main/java/electrosphere/renderer/shader/VisualShader.java b/src/main/java/electrosphere/renderer/shader/VisualShader.java index 24badf79..294592d3 100644 --- a/src/main/java/electrosphere/renderer/shader/VisualShader.java +++ b/src/main/java/electrosphere/renderer/shader/VisualShader.java @@ -509,7 +509,7 @@ public class VisualShader implements Shader { // //get uniform location - int uniformLocation = GL40.glGetUniformLocation(this.getId(), uniformName); + int uniformLocation = this.getUniformLocation(uniformName); int glErrorCode = Globals.renderingEngine.getError(); if(glErrorCode != 0){ LoggerInterface.loggerRenderer.DEBUG_LOOP(RenderingEngine.getErrorInEnglish(glErrorCode)); @@ -531,7 +531,9 @@ public class VisualShader implements Shader { * @return The location of the uniform */ public int getUniformLocation(String uniformName){ - return GL40.glGetUniformLocation(this.getId(), uniformName); + int rVal = GL40.glGetUniformLocation(this.getId(), uniformName); + Globals.renderingEngine.checkError(); + return rVal; }