From 05c51896e09955f3778147eac2072a9f0ee13d93 Mon Sep 17 00:00:00 2001 From: austin Date: Wed, 28 Aug 2024 16:09:53 -0400 Subject: [PATCH] more accurate opengl error tracking --- Jenkinsfile | 8 +++++++- .../electrosphere/renderer/light/LightManager.java | 12 ++++++++---- .../java/electrosphere/renderer/model/Material.java | 6 +++++- src/main/java/electrosphere/renderer/model/Mesh.java | 2 +- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 80850b06..adce97a2 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -45,7 +45,13 @@ pipeline { timeout: 25 ] ) { - sh 'mvn test -P integration' + script { + try { + sh 'mvn test -P integration' + } catch(err) { + sh 'mvn test -P integration -DmaxLogs' + } + } } } post { diff --git a/src/main/java/electrosphere/renderer/light/LightManager.java b/src/main/java/electrosphere/renderer/light/LightManager.java index b7e925c2..9eef5dfb 100644 --- a/src/main/java/electrosphere/renderer/light/LightManager.java +++ b/src/main/java/electrosphere/renderer/light/LightManager.java @@ -13,6 +13,7 @@ import org.lwjgl.opengl.GL31; import electrosphere.engine.Globals; import electrosphere.entity.types.camera.CameraEntityUtils; import electrosphere.logger.LoggerInterface; +import electrosphere.renderer.OpenGLState; import electrosphere.renderer.shader.ShaderProgram; /** @@ -154,19 +155,22 @@ public class LightManager { * Call in each mesh / per each shader * @param shaderIndex */ - public void bindBuffer(int shaderIndex){ + public void bindBuffer(OpenGLState openGLState){ //get position of lights object in shader - int bufferIndex = GL31.glGetUniformBlockIndex(shaderIndex, "Lights"); + int bufferIndex = GL31.glGetUniformBlockIndex(openGLState.getActiveShader().getShaderId(), "Lights"); + Globals.renderingEngine.checkError(); if(bufferIndex == ShaderProgram.INVALID_UNIFORM_NAME){ LoggerInterface.loggerRenderer.INFO("Tried to buffer light manager to shader that does not have it active."); } else { //bind that position to the slot '2' - GL31.glUniformBlockBinding(shaderIndex, bufferIndex, BIND_POINT); + GL31.glUniformBlockBinding(openGLState.getActiveShader().getShaderId(), bufferIndex, BIND_POINT); + Globals.renderingEngine.checkError(); //bind our buffer to slot '2' as well GL31.glBindBufferBase(GL_UNIFORM_BUFFER, BIND_POINT, uboIndex); + Globals.renderingEngine.checkError(); } //alternatively if want to use range, do glBindBufferRange(GL_UNIFORM_BUFFER, 2, uboExampleBlock, 0, 152); - Globals.renderingEngine.checkError(); + // Globals.renderingEngine.checkError(); } /** diff --git a/src/main/java/electrosphere/renderer/model/Material.java b/src/main/java/electrosphere/renderer/model/Material.java index 52e21bba..2855fca3 100644 --- a/src/main/java/electrosphere/renderer/model/Material.java +++ b/src/main/java/electrosphere/renderer/model/Material.java @@ -87,20 +87,24 @@ public class Material { Texture diffuseTexture = Globals.assetManager.fetchTexture(diffuse); if(diffuseTexture != null){ diffuseTexture.bind(openGLState,0); + Globals.renderingEngine.checkError(); openGLState.getActiveShader().setUniform(openGLState, "material.diffuse", 0); + Globals.renderingEngine.checkError(); } } if(specular != null){ Texture specularTexture = Globals.assetManager.fetchTexture(specular); if(specularTexture != null){ specularTexture.bind(openGLState,1); + Globals.renderingEngine.checkError(); openGLState.getActiveShader().setUniform(openGLState, "material.specular", 1); + Globals.renderingEngine.checkError(); } } } else { openGLState.glBindTextureUnit(GL_TEXTURE0, texturePointer, GL_TEXTURE_2D); + Globals.renderingEngine.checkError(); } - Globals.renderingEngine.checkError(); } public void apply_material(OpenGLState openGLState, int diffuse_channel, int specular_channel){ Texture diffuseTexture = Globals.assetManager.fetchTexture(diffuse); diff --git a/src/main/java/electrosphere/renderer/model/Mesh.java b/src/main/java/electrosphere/renderer/model/Mesh.java index 5b4e4c83..34aeaa66 100644 --- a/src/main/java/electrosphere/renderer/model/Mesh.java +++ b/src/main/java/electrosphere/renderer/model/Mesh.java @@ -372,7 +372,7 @@ public class Mesh { //don't buffer as the light manager hasn't initialized } else { LightManager lightManager = Globals.renderingEngine.getLightManager(); - lightManager.bindBuffer(openGLState.getActiveShader().getShaderId()); + lightManager.bindBuffer(openGLState); } Globals.renderingEngine.checkError(); }