diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 27fd9769..b9f217e3 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1975,6 +1975,7 @@ Performance improvements - Clustering terrain draw calls - Reduce allocations in some rendering paths - Leverage standard uniforms buffer + - ShaderUtils memory allocation improvement Lod emitter service checker function Mesh profiling Upgrade target framerate diff --git a/src/main/java/electrosphere/renderer/shader/ShaderUtils.java b/src/main/java/electrosphere/renderer/shader/ShaderUtils.java index cd04c408..59d9222f 100644 --- a/src/main/java/electrosphere/renderer/shader/ShaderUtils.java +++ b/src/main/java/electrosphere/renderer/shader/ShaderUtils.java @@ -10,7 +10,6 @@ import org.joml.Vector3d; import org.joml.Vector3f; import org.joml.Vector3i; import org.joml.Vector4f; -import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL40; import org.lwjgl.system.MemoryStack; @@ -39,7 +38,7 @@ public class ShaderUtils { //matrix4f if(value instanceof Matrix4f){ Matrix4f currentUniform = (Matrix4f)value; - GL40.glUniformMatrix4fv(uniformLocation, false, currentUniform.get(BufferUtils.createFloatBuffer(16))); + GL40.glUniformMatrix4fv(uniformLocation, false, currentUniform.get(stack.mallocFloat(16))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Matrix4f(currentUniform)); //create new matrix4f to break pointer-matching with equals on cache check @@ -47,7 +46,7 @@ public class ShaderUtils { //matrix4d } else if(value instanceof Matrix4d){ Matrix4d currentUniform = (Matrix4d)value; - GL40.glUniformMatrix4fv(uniformLocation, false, currentUniform.get(BufferUtils.createFloatBuffer(16))); + GL40.glUniformMatrix4fv(uniformLocation, false, currentUniform.get(stack.mallocFloat(16))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Matrix4d(currentUniform)); //create new matrix4f to break pointer-matching with equals on cache check @@ -55,7 +54,7 @@ public class ShaderUtils { //vector4f } else if(value instanceof Vector4f){ Vector4f currentUniform = (Vector4f)value; - GL40.glUniform4fv(uniformLocation, currentUniform.get(BufferUtils.createFloatBuffer(4))); + GL40.glUniform4fv(uniformLocation, currentUniform.get(stack.mallocFloat(4))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Vector4f(currentUniform)); //create new vector3f to break pointer-matching with equals on cache check @@ -63,7 +62,7 @@ public class ShaderUtils { //vector3d } else if(value instanceof Vector3f){ Vector3f currentUniform = (Vector3f)value; - GL40.glUniform3fv(uniformLocation, currentUniform.get(BufferUtils.createFloatBuffer(3))); + GL40.glUniform3fv(uniformLocation, currentUniform.get(stack.mallocFloat(3))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Vector3f(currentUniform)); //create new vector3f to break pointer-matching with equals on cache check @@ -71,7 +70,7 @@ public class ShaderUtils { //vector3d } else if(value instanceof Vector3d){ Vector3d currentUniform = (Vector3d)value; - GL40.glUniform3dv(uniformLocation, currentUniform.get(BufferUtils.createDoubleBuffer(3))); + GL40.glUniform3dv(uniformLocation, currentUniform.get(stack.mallocDouble(3))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Vector3d(currentUniform)); //create new vector3d to break pointer-matching with equals on cache check @@ -79,7 +78,7 @@ public class ShaderUtils { //vector2d } else if(value instanceof Vector2d){ Vector2d currentUniform = (Vector2d)value; - GL40.glUniform2dv(uniformLocation, currentUniform.get(BufferUtils.createDoubleBuffer(2))); + GL40.glUniform2dv(uniformLocation, currentUniform.get(stack.mallocDouble(2))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Vector2d(currentUniform)); //create new vector2d to break pointer-matching with equals on cache check @@ -87,7 +86,7 @@ public class ShaderUtils { //Vector3i } else if(value instanceof Vector3i){ Vector3i currentUniform = (Vector3i)value; - GL40.glUniform3uiv(uniformLocation, currentUniform.get(BufferUtils.createIntBuffer(3))); + GL40.glUniform3uiv(uniformLocation, currentUniform.get(stack.mallocInt(3))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Vector3i(currentUniform)); //create new vector2d to break pointer-matching with equals on cache check @@ -95,7 +94,7 @@ public class ShaderUtils { //Vector2i } else if(value instanceof Vector2i){ Vector2i currentUniform = (Vector2i)value; - GL40.glUniform2uiv(uniformLocation, currentUniform.get(BufferUtils.createIntBuffer(2))); + GL40.glUniform2uiv(uniformLocation, currentUniform.get(stack.mallocInt(2))); Globals.renderingEngine.checkError(); uniformMap.put(uniformLocation,new Vector2i(currentUniform)); //create new vector2d to break pointer-matching with equals on cache check