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