diff --git a/.classpath b/.classpath index 80327ad..be88c88 100644 --- a/.classpath +++ b/.classpath @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index 333ea93..f85b091 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ eclipse { } } -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(19) +sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(21) repositories { mavenCentral() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fae0804..a595206 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java b/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java index 8d3fdf8..5773bd6 100644 --- a/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java +++ b/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java @@ -1,6 +1,5 @@ package speiger.src.coreengine.assets.reloader; -import java.util.ServiceLoader; import java.util.Set; import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java index 3492925..f4eefb9 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/ShaderTracker.java @@ -37,6 +37,17 @@ public class ShaderTracker implements ISimpleRealodableAsset, IManagedAsset { public boolean isActive() { return activeShaderId != 0; } public boolean isShaderActive(ShaderProgram program) { return activeShaderId == shaderId(program); } public int getActiveShader() { return activeShaderId; } + public ShaderProgram getActiveProgram() { + if(isActive()) { + for(int i = 0,m=shaders.size();i uniforms = Object2ObjectMap.builder().map(); - public T register(T uniform) { - uniforms.putIfAbsent(Objects.requireNonNull(uniform.getName()), uniform); + public T register(String uniformId, T uniform) { + uniforms.putIfAbsent(Objects.requireNonNull(uniformId), Objects.requireNonNull(uniform)); return uniform; } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IAutoUniform.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IAutoUniform.java index 30aef4d..b8aea38 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IAutoUniform.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IAutoUniform.java @@ -1,7 +1,5 @@ package speiger.src.coreengine.rendering.shader.uniform; -import speiger.src.coreengine.rendering.shader.ShaderProgram; - public interface IAutoUniform extends IUniform { - public void bind(ShaderProgram program); + public void bind(int programId); } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IUniform.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IUniform.java index b967477..dc96248 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IUniform.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/IUniform.java @@ -3,7 +3,6 @@ package speiger.src.coreengine.rendering.shader.uniform; import speiger.src.coreengine.rendering.shader.ShaderProgram; public interface IUniform { - public String getName(); public void registerShader(ShaderProgram program); public void removeShader(ShaderProgram program); } diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/Uniform.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/Uniform.java index 6aa61b0..a364649 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/Uniform.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/Uniform.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL20; import speiger.src.collections.ints.maps.impl.hash.Int2IntOpenHashMap; import speiger.src.collections.ints.maps.interfaces.Int2IntMap; import speiger.src.coreengine.rendering.shader.ShaderProgram; +import speiger.src.coreengine.rendering.utils.GLStateTracker; import speiger.src.coreengine.utils.io.GameLog; public abstract class Uniform implements IUniform { @@ -16,9 +17,8 @@ public abstract class Uniform implements IUniform { positions.setDefaultReturnValue(-1); } - @Override - public String getName() { - return name; + protected boolean contains(int shaderId) { + return positions.containsKey(shaderId); } protected int getPosition(ShaderProgram program) { @@ -45,6 +45,10 @@ public abstract class Uniform implements IUniform { protected void update() { positions.forEach(this::processChanges); + if(this instanceof IAutoUniform auto) { + int id = GLStateTracker.SHADERS.getActiveShader(); + if(contains(id)) auto.bind(id); + } } protected void processChanges(int programId, int location) { diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/UniformManager.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/UniformManager.java index f5b159d..2cb89b2 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniform/UniformManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniform/UniformManager.java @@ -84,7 +84,7 @@ public class UniformManager { public void bind() { if(autoUniforms.isEmpty()) return; for(int i = 0,m=autoUniforms.size();i