From 72bbbca989e7e61b25ea106035343c9739d1309d Mon Sep 17 00:00:00 2001 From: austin Date: Fri, 16 Aug 2024 16:46:06 -0400 Subject: [PATCH] fix first person rendering not sending lighting --- assets/Shaders/FragmentShader.fs | 2 ++ assets/Shaders/anime/celShading.fs | 2 ++ assets/Shaders/foliage/foliage.fs | 2 ++ .../Shaders/instanced/colorshift/colorshift.fs | 2 ++ assets/Shaders/instanced/generic/generic.fs | 2 ++ .../instanced/proceduraltree/proceduraltree.fs | 2 ++ buildNumber.properties | 4 ++-- docs/src/progress/currenttarget.md | 1 - docs/src/progress/renderertodo.md | 1 + .../electrosphere/renderer/OpenGLState.java | 17 ++++++++++------- .../pipelines/FirstPersonItemsPipeline.java | 2 +- .../pipelines/MainContentNoOITPipeline.java | 2 -- .../renderer/shader/ShaderProgram.java | 6 +++++- 13 files changed, 31 insertions(+), 14 deletions(-) diff --git a/assets/Shaders/FragmentShader.fs b/assets/Shaders/FragmentShader.fs index 6b5a2bfd..6a777ed6 100644 --- a/assets/Shaders/FragmentShader.fs +++ b/assets/Shaders/FragmentShader.fs @@ -1,5 +1,7 @@ #version 330 core +//FragmentShader.fs + #define NR_POINT_LIGHTS 10 out vec4 FragColor; diff --git a/assets/Shaders/anime/celShading.fs b/assets/Shaders/anime/celShading.fs index 7205c1df..a1547732 100644 --- a/assets/Shaders/anime/celShading.fs +++ b/assets/Shaders/anime/celShading.fs @@ -1,5 +1,7 @@ #version 330 core +//celShading.fs + #define NR_POINT_LIGHTS 10 out vec4 FragColor; diff --git a/assets/Shaders/foliage/foliage.fs b/assets/Shaders/foliage/foliage.fs index a9e0c03a..78ec6de5 100644 --- a/assets/Shaders/foliage/foliage.fs +++ b/assets/Shaders/foliage/foliage.fs @@ -1,5 +1,7 @@ #version 330 core +//foliage.fs + #define NR_POINT_LIGHTS 10 out vec4 FragColor; diff --git a/assets/Shaders/instanced/colorshift/colorshift.fs b/assets/Shaders/instanced/colorshift/colorshift.fs index c94cfe1b..4c8123fa 100644 --- a/assets/Shaders/instanced/colorshift/colorshift.fs +++ b/assets/Shaders/instanced/colorshift/colorshift.fs @@ -1,5 +1,7 @@ #version 330 core +//colorshift.fs + #define NR_POINT_LIGHTS 10 #define SMALL_EPSILON 0.0001 diff --git a/assets/Shaders/instanced/generic/generic.fs b/assets/Shaders/instanced/generic/generic.fs index 4b46ee86..0450bc63 100644 --- a/assets/Shaders/instanced/generic/generic.fs +++ b/assets/Shaders/instanced/generic/generic.fs @@ -1,5 +1,7 @@ #version 330 core +//generic.fs + #define NR_POINT_LIGHTS 10 #define SMALL_EPSILON 0.0001 diff --git a/assets/Shaders/instanced/proceduraltree/proceduraltree.fs b/assets/Shaders/instanced/proceduraltree/proceduraltree.fs index f29c782e..7414ea0a 100644 --- a/assets/Shaders/instanced/proceduraltree/proceduraltree.fs +++ b/assets/Shaders/instanced/proceduraltree/proceduraltree.fs @@ -1,5 +1,7 @@ #version 330 core +//proceduraltree.fs + #define NR_POINT_LIGHTS 10 out vec4 FragColor; diff --git a/buildNumber.properties b/buildNumber.properties index 5757c104..5f32d5a6 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Fri Aug 16 16:06:50 EDT 2024 -buildNumber=254 +#Fri Aug 16 16:31:44 EDT 2024 +buildNumber=256 diff --git a/docs/src/progress/currenttarget.md b/docs/src/progress/currenttarget.md index 48889252..03633389 100644 --- a/docs/src/progress/currenttarget.md +++ b/docs/src/progress/currenttarget.md @@ -19,7 +19,6 @@ Ticketed randomizer node for BTs to more heavily weight attacking and waiting + bug fixes - Fix broken rendering pipeline when creating new level Fix AI tracking deleted entity Fix being unable to jump sometimes (usually when pick up sword) Fix server ground movement tree playing animation over falling animation diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 1a913c14..3e38ce7e 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -596,6 +596,7 @@ Fix attack animation mayyybe caching on non-local clients ?? Fix sword double-swing Fix physics freakout for vertically aligned entities Fix AI components not resetting on turning off ai manager +Fix broken rendering pipeline when creating new level # TODO diff --git a/src/main/java/electrosphere/renderer/OpenGLState.java b/src/main/java/electrosphere/renderer/OpenGLState.java index cad7aefa..140a3eec 100644 --- a/src/main/java/electrosphere/renderer/OpenGLState.java +++ b/src/main/java/electrosphere/renderer/OpenGLState.java @@ -15,6 +15,9 @@ import electrosphere.renderer.shader.ShaderProgram; */ public class OpenGLState { + //tracks whether caching should be used or not (to deduplicate opengl calls) + private static final boolean DISABLE_CACHING = false; + //the max texture allowed by the current environment int MAX_TEXTURE_WIDTH = 0; @@ -71,7 +74,7 @@ public class OpenGLState { * @param y the height */ public void glViewport(int x, int y){ - if(x != viewport.x || y != viewport.y){ + if(DISABLE_CACHING || x != viewport.x || y != viewport.y){ viewport.x = x; viewport.y = y; GL40.glViewport(0, 0, viewport.x, viewport.y); @@ -106,7 +109,7 @@ public class OpenGLState { * @param depthFunction The depth function */ public void glDepthFunc(int depthFunction){ - if(this.depthFunction != depthFunction){ + if(DISABLE_CACHING || this.depthFunction != depthFunction){ this.depthFunction = depthFunction; GL40.glDepthFunc(this.depthFunction); } @@ -117,7 +120,7 @@ public class OpenGLState { * @param texture The active texture */ public void glActiveTexture(int texture){ - if(this.activeTexture != texture){ + if(DISABLE_CACHING || this.activeTexture != texture){ this.activeTexture = texture; GL40.glActiveTexture(this.activeTexture); } @@ -139,7 +142,7 @@ public class OpenGLState { * @param textureType the type of texture (2d, 3d, etc) */ public void glBindTextureUnit(int textureUnit, int texturePointer, int textureType){ - if(!unitToPointerMap.containsKey(textureUnit) || unitToPointerMap.get(textureUnit)!=texturePointer){ + if(DISABLE_CACHING || !unitToPointerMap.containsKey(textureUnit) || unitToPointerMap.get(textureUnit)!=texturePointer){ unitToPointerMap.put(textureUnit,texturePointer); this.glActiveTexture(textureUnit); GL40.glBindTexture(textureType,texturePointer); @@ -152,7 +155,7 @@ public class OpenGLState { * @param framebufferPointer the pointer to the framebuffer */ public void glBindFramebuffer(int framebufferType, int framebufferPointer){ - if(this.framebufferType != framebufferType || this.framebufferPointer != framebufferPointer){ + if(DISABLE_CACHING || this.framebufferType != framebufferType || this.framebufferPointer != framebufferPointer){ this.framebufferType = framebufferType; this.framebufferPointer = framebufferPointer; GL40.glBindFramebuffer(this.framebufferType,this.framebufferPointer); @@ -173,7 +176,7 @@ public class OpenGLState { * @param program The shader program to bind */ public void setActiveShader(RenderPipelineState renderPipelineState, ShaderProgram program){ - if(program != activeShader){ + if(DISABLE_CACHING || program != activeShader){ activeShader = program; GL40.glUseProgram(activeShader.getShaderId()); renderPipelineState.setCurrentShaderPointer(activeShader.getShaderId()); @@ -229,7 +232,7 @@ public class OpenGLState { * @param dfactor The destination factor */ public void glBlendFunci(int drawBufferIndex, int sfactor, int dfactor){ - if(this.blendFuncMap.containsKey(drawBufferIndex)){ + if(!DISABLE_CACHING && this.blendFuncMap.containsKey(drawBufferIndex)){ int[] funcs = this.blendFuncMap.get(drawBufferIndex); int sFactorCurr = funcs[0]; int dFactorCurr = funcs[1]; diff --git a/src/main/java/electrosphere/renderer/pipelines/FirstPersonItemsPipeline.java b/src/main/java/electrosphere/renderer/pipelines/FirstPersonItemsPipeline.java index e091df56..f899c692 100644 --- a/src/main/java/electrosphere/renderer/pipelines/FirstPersonItemsPipeline.java +++ b/src/main/java/electrosphere/renderer/pipelines/FirstPersonItemsPipeline.java @@ -37,7 +37,7 @@ public class FirstPersonItemsPipeline implements RenderPipeline { //setup opengl state renderPipelineState.setUseBones(true); - renderPipelineState.setUseLight(false); + renderPipelineState.setUseLight(true); renderPipelineState.setUseMaterial(true); renderPipelineState.setUseMeshShader(true); renderPipelineState.setUseShadowMap(false); diff --git a/src/main/java/electrosphere/renderer/pipelines/MainContentNoOITPipeline.java b/src/main/java/electrosphere/renderer/pipelines/MainContentNoOITPipeline.java index 5ac07f82..c24e2302 100644 --- a/src/main/java/electrosphere/renderer/pipelines/MainContentNoOITPipeline.java +++ b/src/main/java/electrosphere/renderer/pipelines/MainContentNoOITPipeline.java @@ -34,8 +34,6 @@ public class MainContentNoOITPipeline implements RenderPipeline { openGLState.glBlend(true); openGLState.glBlendFunci(0, GL40.GL_ONE, GL40.GL_ONE); openGLState.glBlendFunci(1, GL40.GL_ZERO, GL40.GL_ONE_MINUS_SRC_COLOR); - GL40.glBlendFunci(0, GL40.GL_ONE, GL40.GL_ONE); - GL40.glBlendFunci(1, GL40.GL_ZERO, GL40.GL_ONE_MINUS_SRC_COLOR); GL40.glBlendEquation(GL40.GL_FUNC_ADD); /// diff --git a/src/main/java/electrosphere/renderer/shader/ShaderProgram.java b/src/main/java/electrosphere/renderer/shader/ShaderProgram.java index b2ef89d0..0e4aae65 100644 --- a/src/main/java/electrosphere/renderer/shader/ShaderProgram.java +++ b/src/main/java/electrosphere/renderer/shader/ShaderProgram.java @@ -45,6 +45,10 @@ import electrosphere.util.FileUtils; * A shader program */ public class ShaderProgram { + + //tracks whether caching should be used or not (to deduplicate opengl calls) + private static final boolean DISABLE_CACHING = false; + // //Program stuff // @@ -742,7 +746,7 @@ public class ShaderProgram { * @param value the value */ public void setUniform(int uniformLocation, Object value){ - if(!uniformMap.containsKey(uniformLocation) || !uniformMap.get(uniformLocation).equals(value)){ + if(DISABLE_CACHING || !uniformMap.containsKey(uniformLocation) || !uniformMap.get(uniformLocation).equals(value)){ uniformMap.put(uniformLocation,value); if(value instanceof Matrix4f){ Matrix4f currentUniform = (Matrix4f)value;