Revision 0a046359
Added by Leszek Koltunski over 7 years ago
src/main/java/org/distorted/library/EffectQueueVertex.java | ||
---|---|---|
43 | 43 |
class EffectQueueVertex extends EffectQueue |
44 | 44 |
{ |
45 | 45 |
private static final int NUM_UNIFORMS = 12; |
46 |
private static final int NUM_CACHE = 3; |
|
46 | 47 |
private static final int INDEX = EffectTypes.VERTEX.ordinal(); |
47 | 48 |
private static int mNumEffectsH; |
48 | 49 |
private static int mTypeH; |
... | ... | |
50 | 51 |
|
51 | 52 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
52 | 53 |
|
53 |
EffectQueueVertex(DistortedObject obj)
|
|
54 |
EffectQueueVertex(long id)
|
|
54 | 55 |
{ |
55 |
super(obj,NUM_UNIFORMS,INDEX);
|
|
56 |
super(id,NUM_UNIFORMS,NUM_CACHE,INDEX);
|
|
56 | 57 |
} |
57 | 58 |
|
58 | 59 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
102 | 103 |
} |
103 | 104 |
} |
104 | 105 |
|
105 |
if( mInter[1][i]!=null ) // region |
|
106 |
{ |
|
107 |
mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+8, mCurrentDuration[i], step); |
|
108 |
} |
|
109 |
|
|
110 |
if( mInter[2][i]!=null ) // center |
|
111 |
{ |
|
112 |
mInter[2][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+5, mCurrentDuration[i], step); |
|
113 |
|
|
114 |
mUniforms[NUM_UNIFORMS*i+5] = mUniforms[NUM_UNIFORMS*i+5]-mObjHalfX; |
|
115 |
mUniforms[NUM_UNIFORMS*i+6] =-mUniforms[NUM_UNIFORMS*i+6]+mObjHalfY; |
|
116 |
mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-mObjHalfZ; |
|
117 |
} |
|
106 |
if( mInter[1][i]!=null ) mInter[1][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+8, mCurrentDuration[i], step); |
|
107 |
if( mInter[2][i]!=null ) mInter[2][i].interpolateMain(mCache , NUM_CACHE*i , mCurrentDuration[i], step); |
|
118 | 108 |
|
119 | 109 |
mCurrentDuration[i] += step; |
120 | 110 |
} |
... | ... | |
131 | 121 |
mUniforms[NUM_UNIFORMS*index+ 2] = mUniforms[NUM_UNIFORMS*(index+1)+ 2]; |
132 | 122 |
mUniforms[NUM_UNIFORMS*index+ 3] = mUniforms[NUM_UNIFORMS*(index+1)+ 3]; |
133 | 123 |
mUniforms[NUM_UNIFORMS*index+ 4] = mUniforms[NUM_UNIFORMS*(index+1)+ 4]; |
134 |
mUniforms[NUM_UNIFORMS*index+ 5] = mUniforms[NUM_UNIFORMS*(index+1)+ 5]; |
|
135 |
mUniforms[NUM_UNIFORMS*index+ 6] = mUniforms[NUM_UNIFORMS*(index+1)+ 6]; |
|
136 |
mUniforms[NUM_UNIFORMS*index+ 7] = mUniforms[NUM_UNIFORMS*(index+1)+ 7]; |
|
124 |
|
|
125 |
mCache[NUM_CACHE*index ] = mCache[NUM_CACHE*(index+1) ]; |
|
126 |
mCache[NUM_CACHE*index+1] = mCache[NUM_CACHE*(index+1)+1]; |
|
127 |
mCache[NUM_CACHE*index+2] = mCache[NUM_CACHE*(index+1)+2]; |
|
128 |
|
|
137 | 129 |
mUniforms[NUM_UNIFORMS*index+ 8] = mUniforms[NUM_UNIFORMS*(index+1)+ 8]; |
138 | 130 |
mUniforms[NUM_UNIFORMS*index+ 9] = mUniforms[NUM_UNIFORMS*(index+1)+ 9]; |
139 | 131 |
mUniforms[NUM_UNIFORMS*index+10] = mUniforms[NUM_UNIFORMS*(index+1)+10]; |
... | ... | |
142 | 134 |
|
143 | 135 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
144 | 136 |
|
145 |
synchronized void send()
|
|
137 |
synchronized void send(int halfX, int halfY, int halfZ)
|
|
146 | 138 |
{ |
147 | 139 |
GLES20.glUniform1i( mNumEffectsH, mNumEffects); |
148 | 140 |
|
149 | 141 |
if( mNumEffects>0 ) |
150 |
{ |
|
142 |
{ |
|
143 |
for(int i=0; i<mNumEffects; i++) |
|
144 |
{ |
|
145 |
mUniforms[NUM_UNIFORMS*i+5] = mCache[NUM_CACHE*i ]-halfX; |
|
146 |
mUniforms[NUM_UNIFORMS*i+6] =-mCache[NUM_CACHE*i+1]+halfY; |
|
147 |
mUniforms[NUM_UNIFORMS*i+7] = mCache[NUM_CACHE*i+2]-halfZ; |
|
148 |
} |
|
149 |
|
|
151 | 150 |
GLES20.glUniform1iv( mTypeH , mNumEffects, mName ,0); |
152 | 151 |
GLES20.glUniform4fv( mUniformsH,3*mNumEffects, mUniforms,0); |
153 | 152 |
} |
... | ... | |
391 | 390 |
else if( center instanceof Static3D) |
392 | 391 |
{ |
393 | 392 |
mInter[2][mNumEffects] = null; |
394 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)center).getX()-mObjHalfX;
|
|
395 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] =-((Static3D)center).getY()+mObjHalfY;
|
|
396 |
mUniforms[NUM_UNIFORMS*mNumEffects+7] = ((Static3D)center).getZ()-mObjHalfZ;
|
|
393 |
mCache[NUM_CACHE*mNumEffects ] = ((Static3D)center).getX();
|
|
394 |
mCache[NUM_CACHE*mNumEffects+1] = ((Static3D)center).getY();
|
|
395 |
mCache[NUM_CACHE*mNumEffects+2] = ((Static3D)center).getZ();
|
|
397 | 396 |
} |
398 | 397 |
|
399 | 398 |
long ret= addBase(eln); |
Also available in: Unified diff
The EffectQueues are now totally independent of the size of the underlying Bitmap.