commit 1e672c1d7e6da3a2eb58ed64e1a99f9c47573916
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat May 23 13:50:28 2020 +0100

    Change 'tag' to a more appropriate name - 'association'.

diff --git a/src/main/java/org/distorted/library/effect/Effect.java b/src/main/java/org/distorted/library/effect/Effect.java
index 27c778d..519e4c9 100644
--- a/src/main/java/org/distorted/library/effect/Effect.java
+++ b/src/main/java/org/distorted/library/effect/Effect.java
@@ -48,7 +48,7 @@ public abstract class Effect
   private final static float[] mUnity= new float[MAX_UNITY_DIM*NUM_EFFECTS];
   private final static int[]   mUnityDim = new int[NUM_EFFECTS];
 
-  int mTag;
+  int mAssociation;
 
   static boolean[] mEnabled = new boolean[NUM_EFFECTS];
 
@@ -67,7 +67,7 @@ public abstract class Effect
     mCenterDim = name.getCenterDimension();
     mRegionDim = name.getRegionDimension();
 
-    mTag = 0xffffffff;
+    mAssociation = 0xffffffff;
 
     int n = name.ordinal();
     float[] u = name.getUnity();
@@ -140,9 +140,9 @@ public abstract class Effect
  *
  * @y.exclude
  */
-  public int getTag()
+  public int getAssociation()
     {
-    return mTag;
+    return mAssociation;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/effect/VertexEffect.java b/src/main/java/org/distorted/library/effect/VertexEffect.java
index 9d3bd88..36d303e 100644
--- a/src/main/java/org/distorted/library/effect/VertexEffect.java
+++ b/src/main/java/org/distorted/library/effect/VertexEffect.java
@@ -58,7 +58,7 @@ public abstract class VertexEffect extends Effect
     {
     return
 
-        "if( vName[i]=="+effect+" && (int(a_Tag) & vTag[i]) != 0 )\n" +
+        "if( vName[i]=="+effect+" && (int(a_Association) & vAssociation[i]) != 0 )\n" +
           "{\n" +
            code +"\n" +
           "}\n" +
@@ -190,17 +190,17 @@ public abstract class VertexEffect extends Effect
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
- * Set a tag.
+ * Set Mesh association.
  *
- * A 'tag' of a Vertex Effect joins the effect with a component of a Mesh the effect gets applied to.
- * One can set a Tag of the effect and of a Component, and the Effect will only be active on vertices
- * of Components such that (effect tag) & (component tag) != 0. (see retSection() above)
+ * This creates an association between this Vertex Effect and a Component of a Mesh.
+ * One can set the association of an Effect and of a Component, and the Effect will only be active on
+ * vertices of Components such that (effect assoc) & (component assoc) != 0. (see retSection() above)
  *
  * The point: this way we can configure the system so that each Vertex Effect acts only on a certain
- * subset of the Mesh, thus potentially significantly reducing the number of render calls.
+ * subset of a Mesh, thus potentially significantly reducing the number of render calls.
  */
-  public void setTag(int tag)
+  public void setMeshAssociation(int association)
     {
-    mTag = tag;
+    mAssociation = association;
     }
   }
\ No newline at end of file
diff --git a/src/main/java/org/distorted/library/effectqueue/EffectQueue.java b/src/main/java/org/distorted/library/effectqueue/EffectQueue.java
index d8e47f6..b3208ca 100644
--- a/src/main/java/org/distorted/library/effectqueue/EffectQueue.java
+++ b/src/main/java/org/distorted/library/effectqueue/EffectQueue.java
@@ -51,7 +51,7 @@ public abstract class EffectQueue implements InternalMaster.Slave
   long[] mCurrentDuration;
   Effect[] mEffects;
   int[] mName;
-  int[] mTag;
+  int[] mAssociation;
   long mTime;
 
   private static int[] mMax = new int[EffectType.LENGTH];
@@ -142,7 +142,7 @@ public abstract class EffectQueue implements InternalMaster.Slave
         mCurrentDuration = new long[max];
         mEffects         = new Effect[max];
         mName            = new int[max];
-        mTag             = new int[max];
+        mAssociation     = new int[max];
         }
 
       for(int i=0; i<mNumEffects; i++ )
@@ -150,7 +150,7 @@ public abstract class EffectQueue implements InternalMaster.Slave
         mEffects[i]         = source.mEffects[i];
         mCurrentDuration[i] = source.mCurrentDuration[i];
         mName[i]            = source.mName[i];
-        mTag[i]             = source.mTag[i];
+        mAssociation[i]     = source.mAssociation[i];
         }
       }
     }
@@ -279,7 +279,7 @@ public abstract class EffectQueue implements InternalMaster.Slave
       mEffects[j]         = mEffects[j+1];
       mCurrentDuration[j] = mCurrentDuration[j+1];
       mName[j]            = mName[j+1];
-      mTag[j]             = mTag[j+1];
+      mAssociation[j]     = mAssociation[j+1];
       }
 
     mEffects[mNumEffects] = null;
@@ -430,7 +430,7 @@ public abstract class EffectQueue implements InternalMaster.Slave
                        mCurrentDuration = new long[max];
                        mEffects         = new Effect[max];
                        mName            = new int[max];
-                       mTag             = new int[max];
+                       mAssociation     = new int[max];
                        }
                      mCreated = true;
 
@@ -442,9 +442,9 @@ public abstract class EffectQueue implements InternalMaster.Slave
                        if( position==-1 )
                          {
                          mCurrentDuration[mNumEffects] = 0;
-                         mEffects[mNumEffects] = job.effect;
-                         mName[mNumEffects] = job.effect.getName().ordinal();
-                         mTag[mNumEffects]  = job.effect.getTag();
+                         mEffects[mNumEffects]    = job.effect;
+                         mName[mNumEffects]       = job.effect.getName().ordinal();
+                         mAssociation[mNumEffects]= job.effect.getAssociation();
 
                          mNumEffects++;
                          changed = true;
@@ -456,13 +456,13 @@ public abstract class EffectQueue implements InternalMaster.Slave
                            mCurrentDuration[j] = mCurrentDuration[j-1];
                            mEffects[j]         = mEffects[j-1];
                            mName[j]            = mName[j-1];
-                           mTag[j]             = mTag[j-1];
+                           mAssociation[j]     = mAssociation[j-1];
                            }
 
                          mCurrentDuration[position] = 0;
-                         mEffects[position] = job.effect;
-                         mName[position] = job.effect.getName().ordinal();
-                         mTag[position]  = job.effect.getTag();
+                         mEffects[position]    = job.effect;
+                         mName[position]       = job.effect.getName().ordinal();
+                         mAssociation[position]= job.effect.getAssociation();
 
                          mNumEffects++;
                          changed = true;
diff --git a/src/main/java/org/distorted/library/effectqueue/EffectQueueVertex.java b/src/main/java/org/distorted/library/effectqueue/EffectQueueVertex.java
index 90d1851..d04a21a 100644
--- a/src/main/java/org/distorted/library/effectqueue/EffectQueueVertex.java
+++ b/src/main/java/org/distorted/library/effectqueue/EffectQueueVertex.java
@@ -39,7 +39,7 @@ public class EffectQueueVertex extends EffectQueue
   private static int[] mNumEffectsH = new int[MAIN_VARIANTS];
   private static int[] mNameH       = new int[MAIN_VARIANTS];
   private static int[] mUniformsH   = new int[MAIN_VARIANTS];
-  private static int[] mTagH        = new int[MAIN_VARIANTS];
+  private static int[] mAssociationH= new int[MAIN_VARIANTS];
   private static int[] mInflateH    = new int[MAIN_VARIANTS];
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -60,11 +60,11 @@ public class EffectQueueVertex extends EffectQueue
 
   static void uniforms(int mProgramH, int variant)
     {
-    mNumEffectsH[variant]= GLES30.glGetUniformLocation( mProgramH, "vNumEffects");
-    mNameH[variant]      = GLES30.glGetUniformLocation( mProgramH, "vName");
-    mUniformsH[variant]  = GLES30.glGetUniformLocation( mProgramH, "vUniforms");
-    mTagH[variant]       = GLES30.glGetUniformLocation( mProgramH, "vTag");
-    mInflateH[variant]   = GLES30.glGetUniformLocation( mProgramH, "u_Inflate");
+    mNumEffectsH[variant] = GLES30.glGetUniformLocation( mProgramH, "vNumEffects");
+    mNameH[variant]       = GLES30.glGetUniformLocation( mProgramH, "vName");
+    mUniformsH[variant]   = GLES30.glGetUniformLocation( mProgramH, "vUniforms");
+    mAssociationH[variant]= GLES30.glGetUniformLocation( mProgramH, "vAssociation");
+    mInflateH[variant]    = GLES30.glGetUniformLocation( mProgramH, "u_Inflate");
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -82,7 +82,7 @@ public class EffectQueueVertex extends EffectQueue
     for(int i=0; i<mNumEffects; i++)
       {
       mCurrentDuration[i] += step;
-      mTag[i] = mEffects[i].getTag();
+      mAssociation[i] = mEffects[i].getAssociation();
 
       if( mEffects[i].compute(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i], step) )
         {
@@ -106,9 +106,9 @@ public class EffectQueueVertex extends EffectQueue
 
     if( mNumEffects>0 )
       {
-      GLES30.glUniform1iv( mNameH[variant]    ,                 mNumEffects, mName    ,0);
-      GLES30.glUniform1iv( mTagH[variant]     ,                 mNumEffects, mTag     ,0);
-      GLES30.glUniform4fv( mUniformsH[variant],(NUM_UNIFORMS/4)*mNumEffects, mUniforms,0);
+      GLES30.glUniform1iv( mNameH[variant]       ,                 mNumEffects, mName       , 0);
+      GLES30.glUniform1iv( mAssociationH[variant],                 mNumEffects, mAssociation, 0);
+      GLES30.glUniform4fv( mUniformsH[variant]   ,(NUM_UNIFORMS/4)*mNumEffects, mUniforms   , 0);
       }
     }
   }
diff --git a/src/main/java/org/distorted/library/mesh/MeshBase.java b/src/main/java/org/distorted/library/mesh/MeshBase.java
index 575523d..e1eab12 100644
--- a/src/main/java/org/distorted/library/mesh/MeshBase.java
+++ b/src/main/java/org/distorted/library/mesh/MeshBase.java
@@ -43,23 +43,23 @@ import java.util.ArrayList;
  */
 public abstract class MeshBase
    {
-   static final float DEFAULT_TAG = 0xffffffff;
+   static final float DEFAULT_ASSOCIATION = 0xffffffff;
 
    // sizes of attributes of an individual vertex.
    private static final int POS_DATA_SIZE= 3; // vertex coordinates: x,y,z
    private static final int NOR_DATA_SIZE= 3; // normal vector: x,y,z
    private static final int INF_DATA_SIZE= 3; // 'inflate' vector: x,y,z
    private static final int TEX_DATA_SIZE= 2; // texture coordinates: s,t
-   private static final int TAG_DATA_SIZE= 1; // tag, a single float
+   private static final int ASS_DATA_SIZE= 1; // association, a single float
 
    static final int POS_ATTRIB   = 0;
    static final int NOR_ATTRIB   = POS_DATA_SIZE;
    static final int INF_ATTRIB   = POS_DATA_SIZE + NOR_DATA_SIZE;
    static final int TEX_ATTRIB   = 0;
-   static final int TAG_ATTRIB   = TEX_DATA_SIZE;
+   static final int ASS_ATTRIB   = TEX_DATA_SIZE;
 
    static final int VERT1_ATTRIBS= POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE;  // number of attributes of a vertex (the part changed by preapply)
-   static final int VERT2_ATTRIBS= TEX_DATA_SIZE + TAG_DATA_SIZE;                  // number of attributes of a vertex (the 'preapply invariant' part)
+   static final int VERT2_ATTRIBS= TEX_DATA_SIZE + ASS_DATA_SIZE;                  // number of attributes of a vertex (the 'preapply invariant' part)
    static final int TRAN_ATTRIBS = POS_DATA_SIZE + NOR_DATA_SIZE + INF_DATA_SIZE;  // number of attributes of a transform feedback vertex
 
    private static final int BYTES_PER_FLOAT = 4;
@@ -68,7 +68,7 @@ public abstract class MeshBase
    private static final int OFFSET_NOR = NOR_ATTRIB*BYTES_PER_FLOAT;
    private static final int OFFSET_INF = INF_ATTRIB*BYTES_PER_FLOAT;
    private static final int OFFSET_TEX = TEX_ATTRIB*BYTES_PER_FLOAT;
-   private static final int OFFSET_TAG = TAG_ATTRIB*BYTES_PER_FLOAT;
+   private static final int OFFSET_TAG = ASS_ATTRIB*BYTES_PER_FLOAT;
 
    private static final int TRAN_SIZE  = TRAN_ATTRIBS*BYTES_PER_FLOAT;
    private static final int VERT1_SIZE = VERT1_ATTRIBS*BYTES_PER_FLOAT;
@@ -400,7 +400,7 @@ public abstract class MeshBase
      GLES30.glVertexAttribPointer(program.mAttribute[2], INF_DATA_SIZE, GLES30.GL_FLOAT, false, VERT1_SIZE, OFFSET_INF);
      GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, index2 );
      GLES30.glVertexAttribPointer(program.mAttribute[3], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, VERT2_SIZE, OFFSET_TEX);
-     GLES30.glVertexAttribPointer(program.mAttribute[4], TAG_DATA_SIZE, GLES30.GL_FLOAT, false, VERT2_SIZE, OFFSET_TAG);
+     GLES30.glVertexAttribPointer(program.mAttribute[4], ASS_DATA_SIZE, GLES30.GL_FLOAT, false, VERT2_SIZE, OFFSET_TAG);
      GLES30.glBindBuffer(GLES30.GL_ARRAY_BUFFER, 0);
      }
 
@@ -583,16 +583,16 @@ public abstract class MeshBase
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 /**
- * Set a component's tag.
+ * Set Effect association.
  *
- * A 'tag' of a component associates all vertices which belong to the component with all Vertex Effects
- * with a matching tag - i.e. one can set a tag of an Effect and of a Component, and the Effect will
- * only be active on vertices of Components such that (effect tag) & (component tag) != 0.
+ * This creates an association between a Component of this Mesh and a Vertex Effect.
+ * One can set the association of an Effect and of a Component, and the Effect will only be active on
+ * vertices of Components such that (effect assoc) & (component assoc) != 0. (see VertexEffect.retSection() )
  *
  * The point: this way we can configure the system so that each Vertex Effect acts only on a certain
- * subset of the Mesh, thus potentially significantly reducing the number of render calls.
+ * subset of a Mesh, thus potentially significantly reducing the number of render calls.
  */
-  public void setTag(int component, int tag)
+  public void setEffectAssociation(int component, int association)
     {
     int num = mComponent.size();
 
@@ -601,12 +601,12 @@ public abstract class MeshBase
       int sta = component>0 ? mComponent.get(component-1).mEndIndex+1 : 0;
       int end = mComponent.get(component).mEndIndex;
 
-      sta = sta*VERT2_ATTRIBS + TAG_ATTRIB;
-      end = end*VERT2_ATTRIBS + TAG_ATTRIB;
+      sta = sta*VERT2_ATTRIBS + ASS_ATTRIB;
+      end = end*VERT2_ATTRIBS + ASS_ATTRIB;
 
       for(int i=sta; i<=end; i+=VERT2_ATTRIBS)
         {
-        mVertAttribs2[i] = tag;
+        mVertAttribs2[i] = association;
         }
 
       mVBO2.invalidate();
diff --git a/src/main/java/org/distorted/library/mesh/MeshCubes.java b/src/main/java/org/distorted/library/mesh/MeshCubes.java
index 17ac9af..f0d9fd8 100644
--- a/src/main/java/org/distorted/library/mesh/MeshCubes.java
+++ b/src/main/java/org/distorted/library/mesh/MeshCubes.java
@@ -643,7 +643,7 @@ public class MeshCubes extends MeshBase
        attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB+1] = mTexMappingY[BACK]  + (1.0f-y) * mTexMappingH[BACK];
        }
 
-     attribs2[VERT2_ATTRIBS*currVert + TAG_ATTRIB] = DEFAULT_TAG;
+     attribs2[VERT2_ATTRIBS*currVert + ASS_ATTRIB] = DEFAULT_ASSOCIATION;
 
      currVert++;
      }
@@ -677,7 +677,7 @@ public class MeshCubes extends MeshBase
 
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB  ] = mTexMappingX[TOP] +       x  * mTexMappingW[TOP];
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB+1] = mTexMappingY[TOP] + (0.5f-z) * mTexMappingH[TOP];
-                   attribs2[VERT2_ATTRIBS*currVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+                   attribs2[VERT2_ATTRIBS*currVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
                    break;
        case SOUTH: row = curr.row+1;
@@ -700,7 +700,7 @@ public class MeshCubes extends MeshBase
 
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB  ] = mTexMappingX[BOTTOM] +       x  * mTexMappingW[BOTTOM];
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB+1] = mTexMappingY[BOTTOM] + (0.5f-z) * mTexMappingH[BOTTOM];
-                   attribs2[VERT2_ATTRIBS*currVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+                   attribs2[VERT2_ATTRIBS*currVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
                    break;
        case WEST : row = (back  ? (curr.row+1):(curr.row));
@@ -723,7 +723,7 @@ public class MeshCubes extends MeshBase
 
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB  ] = mTexMappingX[LEFT] + (0.5f-z) * mTexMappingW[LEFT];
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB+1] = mTexMappingY[LEFT] + (1.0f-y) * mTexMappingH[LEFT];
-                   attribs2[VERT2_ATTRIBS*currVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+                   attribs2[VERT2_ATTRIBS*currVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
                    break;
        case EAST : row = (back  ? (curr.row):(curr.row+1));
@@ -746,7 +746,7 @@ public class MeshCubes extends MeshBase
 
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB  ] = mTexMappingX[RIGHT] + (0.5f-z) * mTexMappingW[RIGHT];
                    attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB+1] = mTexMappingY[RIGHT] + (1.0f-y) * mTexMappingH[RIGHT];
-                   attribs2[VERT2_ATTRIBS*currVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+                   attribs2[VERT2_ATTRIBS*currVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
                    break;
        }
@@ -772,7 +772,7 @@ public class MeshCubes extends MeshBase
 
      attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB  ] = attribs2[VERT2_ATTRIBS*(currVert-1) + TEX_ATTRIB  ];
      attribs2[VERT2_ATTRIBS*currVert + TEX_ATTRIB+1] = attribs2[VERT2_ATTRIBS*(currVert-1) + TEX_ATTRIB+1];
-     attribs2[VERT2_ATTRIBS*currVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+     attribs2[VERT2_ATTRIBS*currVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
      currVert++;
      }
diff --git a/src/main/java/org/distorted/library/mesh/MeshQuad.java b/src/main/java/org/distorted/library/mesh/MeshQuad.java
index 17b6084..35f96a8 100644
--- a/src/main/java/org/distorted/library/mesh/MeshQuad.java
+++ b/src/main/java/org/distorted/library/mesh/MeshQuad.java
@@ -46,7 +46,7 @@ public class MeshQuad extends MeshBase
 
     attribs2[VERT2_ATTRIBS*index + TEX_ATTRIB  ] = x;
     attribs2[VERT2_ATTRIBS*index + TEX_ATTRIB+1] = 1.0f-y;
-    attribs2[VERT2_ATTRIBS*index + TAG_ATTRIB  ] = DEFAULT_TAG;
+    attribs2[VERT2_ATTRIBS*index + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/library/mesh/MeshRectangles.java b/src/main/java/org/distorted/library/mesh/MeshRectangles.java
index f07f5af..9c0acbe 100644
--- a/src/main/java/org/distorted/library/mesh/MeshRectangles.java
+++ b/src/main/java/org/distorted/library/mesh/MeshRectangles.java
@@ -73,7 +73,7 @@ public class MeshRectangles extends MeshBase
 
      attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB  ] = x;
      attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB+1] = 1.0f-y;
-     attribs2[VERT2_ATTRIBS*vertex + TAG_ATTRIB  ] = DEFAULT_TAG;
+     attribs2[VERT2_ATTRIBS*vertex + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
      return vertex+1;
      }
@@ -100,7 +100,7 @@ public class MeshRectangles extends MeshBase
 
        attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB  ] = attribs2[VERT2_ATTRIBS*(vertex-1) + TEX_ATTRIB  ];
        attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB+1] = attribs2[VERT2_ATTRIBS*(vertex-1) + TEX_ATTRIB+1];
-       attribs2[VERT2_ATTRIBS*vertex + TAG_ATTRIB  ] = DEFAULT_TAG;
+       attribs2[VERT2_ATTRIBS*vertex + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
        vertex++;
        }
diff --git a/src/main/java/org/distorted/library/mesh/MeshSphere.java b/src/main/java/org/distorted/library/mesh/MeshSphere.java
index 91c0598..9b4c1ee 100644
--- a/src/main/java/org/distorted/library/mesh/MeshSphere.java
+++ b/src/main/java/org/distorted/library/mesh/MeshSphere.java
@@ -95,7 +95,7 @@ public class MeshSphere extends MeshBase
 
       attribs2[VERT2_ATTRIBS*currentVert + TEX_ATTRIB  ] = attribs2[VERT2_ATTRIBS*(currentVert-1) + TEX_ATTRIB  ];
       attribs2[VERT2_ATTRIBS*currentVert + TEX_ATTRIB+1] = attribs2[VERT2_ATTRIBS*(currentVert-1) + TEX_ATTRIB+1];
-      attribs2[VERT2_ATTRIBS*currentVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+      attribs2[VERT2_ATTRIBS*currentVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
       currentVert++;
       }
@@ -199,7 +199,7 @@ public class MeshSphere extends MeshBase
 
     attribs2[VERT2_ATTRIBS*currentVert + TEX_ATTRIB  ] = (float)texX;
     attribs2[VERT2_ATTRIBS*currentVert + TEX_ATTRIB+1] = (float)texY;
-    attribs2[VERT2_ATTRIBS*currentVert + TAG_ATTRIB  ] = DEFAULT_TAG;
+    attribs2[VERT2_ATTRIBS*currentVert + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
     currentVert++;
 
diff --git a/src/main/java/org/distorted/library/mesh/MeshTriangles.java b/src/main/java/org/distorted/library/mesh/MeshTriangles.java
index dad30a1..09823ac 100644
--- a/src/main/java/org/distorted/library/mesh/MeshTriangles.java
+++ b/src/main/java/org/distorted/library/mesh/MeshTriangles.java
@@ -48,7 +48,7 @@ public class MeshTriangles extends MeshBase
 
      attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB  ] = x;
      attribs2[VERT2_ATTRIBS*vertex + TEX_ATTRIB+1] = y;
-     attribs2[VERT2_ATTRIBS*vertex + TAG_ATTRIB  ] = DEFAULT_TAG;
+     attribs2[VERT2_ATTRIBS*vertex + ASS_ATTRIB  ] = DEFAULT_ASSOCIATION;
 
      return vertex+1;
      }
diff --git a/src/main/res/raw/main_vertex_shader.glsl b/src/main/res/raw/main_vertex_shader.glsl
index 9d06c16..82b8cb8 100644
--- a/src/main/res/raw/main_vertex_shader.glsl
+++ b/src/main/res/raw/main_vertex_shader.glsl
@@ -25,8 +25,9 @@ in vec3 a_Normal;                    // Per-vertex normal vector.
 in vec3 a_Inflate;                   // This vector describes the direction this vertex needs to go when we 'inflate' the whole mesh.
                                      // If the mesh is locally smooth, this is equal to the normal vector. Otherwise (on sharp edges) - no.
 in vec2 a_TexCoordinate;             // Per-vertex texture coordinate.
-in float a_Tag;                      // Per-vertex tag. Connects the vertex (really the mesh component the vertex is a member of) to a vertex effect.
-                                     // An effect will only be active on a vertex iff (a_Tag & vTag[effect]) != 0.  ( see VertexEffect.retSection() )
+in float a_Association;              // Per-vertex association. Connects the vertex (really the mesh component the vertex is a member of)
+                                     // to a vertex effect. An effect will only be active on a vertex iff (a_Association & vAssociation[effect]) != 0.
+                                     // ( see VertexEffect.retSection() )
 
 out vec3 v_Position;                 //
 out vec3 v_endPosition;              // for Transform Feedback only
@@ -48,7 +49,7 @@ uniform int vName[NUM_VERTEX];       // their names.
 uniform vec4 vUniforms[3*NUM_VERTEX];// i-th effect is 3 consecutive vec4's: [3*i], [3*i+1], [3*i+2].
                                      // The first vec4 is the Interpolated values,
                                      // second vec4: first float - cache, next 3: Center, the third -  the Region.
-uniform int vTag[NUM_VERTEX];        // Tags of the vertex effects. Tags are used to connect an effect to a Mesh component.
+uniform int vAssociation[NUM_VERTEX];// Associations of the vertex effects. Those are used to connect an effect to a Mesh component.
 
 //////////////////////////////////////////////////////////////////////////////////////////////
 // HELPER FUNCTIONS
