commit 7aa0ff7b1ffbe7b09d3e27d526f46ff5b9fd0e9a
Author: leszek <leszek@koltunski.pl>
Date:   Wed Jan 1 11:05:48 2025 +0100

    Bugfix: for affected components, we were using bit 16, not the intended bit 32. Bit 16 clashes with associations of vertex effects!

diff --git a/src/main/java/org/distorted/library/uniformblock/UniformBlockAssociation.java b/src/main/java/org/distorted/library/uniformblock/UniformBlockAssociation.java
index 0ca8180..df4dfc6 100644
--- a/src/main/java/org/distorted/library/uniformblock/UniformBlockAssociation.java
+++ b/src/main/java/org/distorted/library/uniformblock/UniformBlockAssociation.java
@@ -34,7 +34,7 @@ import org.distorted.library.mesh.MeshBase;
  */
 public class UniformBlockAssociation
   {
-  private static final int DEFAULT_ASSOCIATION = 0xffffffff;
+  private static final int DEFAULT_ASSOCIATION = 0x7fffffff; // all effects associated, all components affected
   private static final int DEFAULT_STRIDE = 4;
   private static final int LOC_AND = 0;
   private static final int LOC_EQU = 1;
@@ -107,8 +107,8 @@ public class UniformBlockAssociation
   public void setEffectAssociationNow(int comp, int andAssociation, int equAssociation)
     {
     int index = mStride*comp;
-    mAssociations[index+LOC_AND] &= 0x8000;
-    mAssociations[index+LOC_AND] += (andAssociation & 0x7fff);
+    mAssociations[index+LOC_AND] &= (~DEFAULT_ASSOCIATION);
+    mAssociations[index+LOC_AND] += (andAssociation & DEFAULT_ASSOCIATION);
     mAssociations[index+LOC_EQU] = equAssociation;
 
     mUBO.invalidate();
@@ -118,11 +118,11 @@ public class UniformBlockAssociation
 
   public void setNotAffectedComponentsNow(int[] components)
     {
-    for(int c=0; c<mMax; c++) mAssociations[mStride*c+LOC_AND] &= 0x7fff;
+    for(int c=0; c<mMax; c++) mAssociations[mStride*c+LOC_AND] &= DEFAULT_ASSOCIATION;
 
     if( components!=null )
       {
-      for(int c : components) mAssociations[mStride*c+LOC_AND] |= 0x8000;
+      for(int c : components) mAssociations[mStride*c+LOC_AND] |= (~DEFAULT_ASSOCIATION);
       }
 
     mUBO.invalidate();
diff --git a/src/main/res/raw/main_vertex_shader.glsl b/src/main/res/raw/main_vertex_shader.glsl
index bc97986..bf5b542 100644
--- a/src/main/res/raw/main_vertex_shader.glsl
+++ b/src/main/res/raw/main_vertex_shader.glsl
@@ -131,7 +131,7 @@ void main()
 #endif
 
 #ifdef POSTPROCESS
-  if( (vComAssoc[component].x & 0x8000) != 0 )
+  if( (vComAssoc[component].x & 0x80000000) != 0 )
     {
     v = vec3(0.0, 0.0, 0.0);
     }
@@ -139,7 +139,7 @@ void main()
 
 #if NUM_VERTEX>0
   int effect=0;
-  int andC = vComAssoc[component].x & 0x7fff;
+  int andC = vComAssoc[component].x & 0x7fffffff;
   int equC = vComAssoc[component].y;
 
   for(int i=0; i<vNumEffects; i++)
