shaderUtils memory alloc improvement
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-05-25 00:52:38 -04:00
parent f02d9979e3
commit a21f3f0eeb
2 changed files with 9 additions and 9 deletions

View File

@ -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

View File

@ -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