Project

General

Profile

« Previous | Next » 

Revision 7aa0ff7b

Added by Leszek Koltunski 7 days ago

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

View differences:

src/main/java/org/distorted/library/uniformblock/UniformBlockAssociation.java
34 34
 */
35 35
public class UniformBlockAssociation
36 36
  {
37
  private static final int DEFAULT_ASSOCIATION = 0xffffffff;
37
  private static final int DEFAULT_ASSOCIATION = 0x7fffffff; // all effects associated, all components affected
38 38
  private static final int DEFAULT_STRIDE = 4;
39 39
  private static final int LOC_AND = 0;
40 40
  private static final int LOC_EQU = 1;
......
107 107
  public void setEffectAssociationNow(int comp, int andAssociation, int equAssociation)
108 108
    {
109 109
    int index = mStride*comp;
110
    mAssociations[index+LOC_AND] &= 0x8000;
111
    mAssociations[index+LOC_AND] += (andAssociation & 0x7fff);
110
    mAssociations[index+LOC_AND] &= (~DEFAULT_ASSOCIATION);
111
    mAssociations[index+LOC_AND] += (andAssociation & DEFAULT_ASSOCIATION);
112 112
    mAssociations[index+LOC_EQU] = equAssociation;
113 113

  
114 114
    mUBO.invalidate();
......
118 118

  
119 119
  public void setNotAffectedComponentsNow(int[] components)
120 120
    {
121
    for(int c=0; c<mMax; c++) mAssociations[mStride*c+LOC_AND] &= 0x7fff;
121
    for(int c=0; c<mMax; c++) mAssociations[mStride*c+LOC_AND] &= DEFAULT_ASSOCIATION;
122 122

  
123 123
    if( components!=null )
124 124
      {
125
      for(int c : components) mAssociations[mStride*c+LOC_AND] |= 0x8000;
125
      for(int c : components) mAssociations[mStride*c+LOC_AND] |= (~DEFAULT_ASSOCIATION);
126 126
      }
127 127

  
128 128
    mUBO.invalidate();
src/main/res/raw/main_vertex_shader.glsl
131 131
#endif
132 132

  
133 133
#ifdef POSTPROCESS
134
  if( (vComAssoc[component].x & 0x8000) != 0 )
134
  if( (vComAssoc[component].x & 0x80000000) != 0 )
135 135
    {
136 136
    v = vec3(0.0, 0.0, 0.0);
137 137
    }
......
139 139

  
140 140
#if NUM_VERTEX>0
141 141
  int effect=0;
142
  int andC = vComAssoc[component].x & 0x7fff;
142
  int andC = vComAssoc[component].x & 0x7fffffff;
143 143
  int equC = vComAssoc[component].y;
144 144

  
145 145
  for(int i=0; i<vNumEffects; i++)

Also available in: Unified diff