javasabr 7 éve
szülő
commit
ab10d6293e

+ 1 - 1
jme3-core/src/main/java/com/jme3/material/Material.java

@@ -797,7 +797,7 @@ public class Material implements CloneableSmartAsset, Cloneable, Savable {
 
             if(type == VarType.ShaderStorageBufferObject) {
 
-                final StorageBlock storageBlock = shader.getStorageBlock(name);
+                final StorageBlock storageBlock = shader.getStorageBlock(param.getPrefixedName());
                 storageBlock.setStorageData(param.getValue());
 
             } else {

+ 5 - 3
jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java

@@ -1205,6 +1205,8 @@ public final class GLRenderer implements Renderer {
 
         bindProgram(shader);
 
+        storageBlock.clearUpdateNeeded();
+
         final ShaderStorageBufferObject storageData = (ShaderStorageBufferObject) storageBlock.getStorageData();
         if (storageData.getUniqueId() == -1 || storageData.isUpdateNeeded()) {
             updateBufferData(storageData);
@@ -1232,9 +1234,9 @@ public final class GLRenderer implements Renderer {
      * @param shader the shader.
      */
     protected void updateShaderStorageBlocks(final Shader shader) {
-        final ListMap<String, StorageBlock> uniforms = shader.getStorageBlockMap();
-        for (int i = 0; i < uniforms.size(); i++) {
-            final StorageBlock storageBlock = uniforms.getValue(i);
+        final ListMap<String, StorageBlock> storageBlocks = shader.getStorageBlockMap();
+        for (int i = 0; i < storageBlocks.size(); i++) {
+            final StorageBlock storageBlock = storageBlocks.getValue(i);
             if (storageBlock.isUpdateNeeded()) {
                 updateShaderStorageBlock(shader, storageBlock);
             }

+ 1 - 1
jme3-core/src/main/java/com/jme3/shader/ShaderStorageBufferObject.java

@@ -117,7 +117,7 @@ public class ShaderStorageBufferObject extends NativeObject {
     @Override
     public void deleteObject(final Object rendererObject) {
 
-        if (rendererObject instanceof Renderer) {
+        if (!(rendererObject instanceof Renderer)) {
             throw new IllegalArgumentException("This ssbo can't be deleted from " + rendererObject);
         }