Project

General

Profile

« Previous | Next » 

Revision da9b3f07

Added by Leszek Koltunski almost 7 years ago

Progress with support for Effect classes.

The library compiles now!

View differences:

src/main/java/org/distorted/library/main/EffectQueueMatrix.java
22 22
import android.opengl.GLES30;
23 23
import android.opengl.Matrix;
24 24

  
25
import org.distorted.library.effect.Effect;
25
import org.distorted.library.effect.EffectType;
26 26
import org.distorted.library.effect.MatrixEffect;
27 27
import org.distorted.library.message.EffectMessage;
28 28

  
......
31 31
class EffectQueueMatrix extends EffectQueue
32 32
  {   
33 33
  private static final int NUM_UNIFORMS = MatrixEffect.NUM_UNIFORMS;
34
  private static final int INDEX = Effect.MATRIX;
34
  private static final int INDEX = EffectType.MATRIX.ordinal();
35 35

  
36 36
  private static float[] mMVPMatrix = new float[16];
37 37
  private static float[] mTmpMatrix = new float[16];
......
210 210
      {
211 211
      switch( mEffects[i].getName() )
212 212
        {
213
        case MatrixEffect.ROTATE     : x = mUniforms[NUM_UNIFORMS*i+4];
214
                                       y = mUniforms[NUM_UNIFORMS*i+5];
215
                                       z = mUniforms[NUM_UNIFORMS*i+6];
216

  
217
                                       Matrix.translateM(mViewMatrix, 0, x,-y, z);
218
                                       Matrix.rotateM( mViewMatrix, 0, mUniforms[NUM_UNIFORMS*i], mUniforms[NUM_UNIFORMS*i+1], mUniforms[NUM_UNIFORMS*i+2], mUniforms[NUM_UNIFORMS*i+3]);
219
                                       Matrix.translateM(mViewMatrix, 0,-x, y,-z);
220
                                       break;
221
        case MatrixEffect.QUATERNION : x = mUniforms[NUM_UNIFORMS*i+4];
222
                                       y = mUniforms[NUM_UNIFORMS*i+5];
223
                                       z = mUniforms[NUM_UNIFORMS*i+6];
224

  
225
                                       Matrix.translateM(mViewMatrix, 0, x,-y, z);
226
                                       multiplyByQuat(mViewMatrix, mUniforms[NUM_UNIFORMS*i], mUniforms[NUM_UNIFORMS*i+1], mUniforms[NUM_UNIFORMS*i+2], mUniforms[NUM_UNIFORMS*i+3]);
227
                                       Matrix.translateM(mViewMatrix, 0,-x, y,-z);
228
                                       break;
229
        case MatrixEffect.MOVE       : sx = mUniforms[NUM_UNIFORMS*i  ];
230
                                       sy = mUniforms[NUM_UNIFORMS*i+1];
231
                                       sz = mUniforms[NUM_UNIFORMS*i+2];
232

  
233
                                       Matrix.translateM(mViewMatrix, 0, sx,-sy, sz);
234
                                       break;
235
        case MatrixEffect.SCALE      : sx = mUniforms[NUM_UNIFORMS*i  ];
236
                                       sy = mUniforms[NUM_UNIFORMS*i+1];
237
                                       sz = mUniforms[NUM_UNIFORMS*i+2];
238

  
239
                                       Matrix.scaleM(mViewMatrix, 0, sx, sy, sz);
240
                                       break;
241
        case MatrixEffect.SHEAR      : sx = mUniforms[NUM_UNIFORMS*i  ];
242
                                       sy = mUniforms[NUM_UNIFORMS*i+1];
243
                                       sz = mUniforms[NUM_UNIFORMS*i+2];
244

  
245
                                       x  = mUniforms[NUM_UNIFORMS*i+4];
246
                                       y  = mUniforms[NUM_UNIFORMS*i+5];
247
                                       z  = mUniforms[NUM_UNIFORMS*i+6];
248

  
249
                                       Matrix.translateM(mViewMatrix, 0, x,-y, z);
250

  
251
                                       mViewMatrix[4] += sx*mViewMatrix[0]; // Multiply viewMatrix by 1 x 0 0 , i.e. X-shear.
252
                                       mViewMatrix[5] += sx*mViewMatrix[1]; //                        0 1 0 0
253
                                       mViewMatrix[6] += sx*mViewMatrix[2]; //                        0 0 1 0
254
                                       mViewMatrix[7] += sx*mViewMatrix[3]; //                        0 0 0 1
255

  
256
                                       mViewMatrix[0] += sy*mViewMatrix[4]; // Multiply viewMatrix by 1 0 0 0 , i.e. Y-shear.
257
                                       mViewMatrix[1] += sy*mViewMatrix[5]; //                        y 1 0 0
258
                                       mViewMatrix[2] += sy*mViewMatrix[6]; //                        0 0 1 0
259
                                       mViewMatrix[3] += sy*mViewMatrix[7]; //                        0 0 0 1
260

  
261
                                       mViewMatrix[4] += sz*mViewMatrix[8]; // Multiply viewMatrix by 1 0 0 0 , i.e. Z-shear.
262
                                       mViewMatrix[5] += sz*mViewMatrix[9]; //                        0 1 0 0
263
                                       mViewMatrix[6] += sz*mViewMatrix[10];//                        0 z 1 0
264
                                       mViewMatrix[7] += sz*mViewMatrix[11];//                        0 0 0 1
265

  
266
                                       Matrix.translateM(mViewMatrix, 0,-x, y, -z);
267
                                       break;
213
        case ROTATE     : x = mUniforms[NUM_UNIFORMS*i+4];
214
                          y = mUniforms[NUM_UNIFORMS*i+5];
215
                          z = mUniforms[NUM_UNIFORMS*i+6];
216

  
217
                          Matrix.translateM(mViewMatrix, 0, x,-y, z);
218
                          Matrix.rotateM( mViewMatrix, 0, mUniforms[NUM_UNIFORMS*i], mUniforms[NUM_UNIFORMS*i+1], mUniforms[NUM_UNIFORMS*i+2], mUniforms[NUM_UNIFORMS*i+3]);
219
                          Matrix.translateM(mViewMatrix, 0,-x, y,-z);
220
                          break;
221
        case QUATERNION : x = mUniforms[NUM_UNIFORMS*i+4];
222
                          y = mUniforms[NUM_UNIFORMS*i+5];
223
                          z = mUniforms[NUM_UNIFORMS*i+6];
224

  
225
                          Matrix.translateM(mViewMatrix, 0, x,-y, z);
226
                          multiplyByQuat(mViewMatrix, mUniforms[NUM_UNIFORMS*i], mUniforms[NUM_UNIFORMS*i+1], mUniforms[NUM_UNIFORMS*i+2], mUniforms[NUM_UNIFORMS*i+3]);
227
                          Matrix.translateM(mViewMatrix, 0,-x, y,-z);
228
                          break;
229
        case MOVE       : sx = mUniforms[NUM_UNIFORMS*i  ];
230
                          sy = mUniforms[NUM_UNIFORMS*i+1];
231
                          sz = mUniforms[NUM_UNIFORMS*i+2];
232

  
233
                          Matrix.translateM(mViewMatrix, 0, sx,-sy, sz);
234
                          break;
235
        case SCALE      : sx = mUniforms[NUM_UNIFORMS*i  ];
236
                          sy = mUniforms[NUM_UNIFORMS*i+1];
237
                          sz = mUniforms[NUM_UNIFORMS*i+2];
238

  
239
                          Matrix.scaleM(mViewMatrix, 0, sx, sy, sz);
240
                          break;
241
        case SHEAR      : sx = mUniforms[NUM_UNIFORMS*i  ];
242
                          sy = mUniforms[NUM_UNIFORMS*i+1];
243
                          sz = mUniforms[NUM_UNIFORMS*i+2];
244

  
245
                          x  = mUniforms[NUM_UNIFORMS*i+4];
246
                          y  = mUniforms[NUM_UNIFORMS*i+5];
247
                          z  = mUniforms[NUM_UNIFORMS*i+6];
248

  
249
                          Matrix.translateM(mViewMatrix, 0, x,-y, z);
250

  
251
                          mViewMatrix[4] += sx*mViewMatrix[0]; // Multiply viewMatrix by 1 x 0 0 , i.e. X-shear.
252
                          mViewMatrix[5] += sx*mViewMatrix[1]; //                        0 1 0 0
253
                          mViewMatrix[6] += sx*mViewMatrix[2]; //                        0 0 1 0
254
                          mViewMatrix[7] += sx*mViewMatrix[3]; //                        0 0 0 1
255

  
256
                          mViewMatrix[0] += sy*mViewMatrix[4]; // Multiply viewMatrix by 1 0 0 0 , i.e. Y-shear.
257
                          mViewMatrix[1] += sy*mViewMatrix[5]; //                        y 1 0 0
258
                          mViewMatrix[2] += sy*mViewMatrix[6]; //                        0 0 1 0
259
                          mViewMatrix[3] += sy*mViewMatrix[7]; //                        0 0 0 1
260

  
261
                          mViewMatrix[4] += sz*mViewMatrix[8]; // Multiply viewMatrix by 1 0 0 0 , i.e. Z-shear.
262
                          mViewMatrix[5] += sz*mViewMatrix[9]; //                        0 1 0 0
263
                          mViewMatrix[6] += sz*mViewMatrix[10];//                        0 z 1 0
264
                          mViewMatrix[7] += sz*mViewMatrix[11];//                        0 0 0 1
265

  
266
                          Matrix.translateM(mViewMatrix, 0,-x, y, -z);
267
                          break;
268 268
        }
269 269
      }
270 270

  
......
301 301
        for(int j=0; j<mNumListeners; j++)
302 302
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
303 303

  
304
        if( MatrixEffect.isUnity( mEffects[i].getName(), mUniforms, NUM_UNIFORMS*i) )
304
        if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
305 305
          remove(i--);
306 306
        }
307 307
      }

Also available in: Unified diff