Revision da9b3f07
Added by Leszek Koltunski almost 7 years ago
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
Progress with support for Effect classes.
The library compiles now!