Revision 0a046359
Added by Leszek Koltunski over 7 years ago
src/main/java/org/distorted/library/EffectQueueFragment.java | ||
---|---|---|
37 | 37 |
class EffectQueueFragment extends EffectQueue |
38 | 38 |
{ |
39 | 39 |
private static final int NUM_UNIFORMS = 8; |
40 |
private static final int NUM_CACHE = 4; |
|
40 | 41 |
private static final int INDEX = EffectTypes.FRAGMENT.ordinal(); |
41 | 42 |
private static int mNumEffectsH; |
42 | 43 |
private static int mTypeH; |
... | ... | |
44 | 45 |
|
45 | 46 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
46 | 47 |
|
47 |
EffectQueueFragment(DistortedObject obj)
|
|
48 |
EffectQueueFragment(long id)
|
|
48 | 49 |
{ |
49 |
super(obj,NUM_UNIFORMS,INDEX);
|
|
50 |
super(id,NUM_UNIFORMS,NUM_CACHE,INDEX);
|
|
50 | 51 |
} |
51 | 52 |
|
52 | 53 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
87 | 88 |
else mInter[0][i] = null; |
88 | 89 |
} |
89 | 90 |
|
90 |
if( mInter[1][i]!=null ) |
|
91 |
{ |
|
92 |
mInter[1][i].interpolateMain( mUniforms, NUM_UNIFORMS*i+4, mCurrentDuration[i], step); |
|
93 |
|
|
94 |
mUniforms[NUM_UNIFORMS*i+4] = mUniforms[NUM_UNIFORMS*i+4]-mObjHalfX; |
|
95 |
mUniforms[NUM_UNIFORMS*i+5] =-mUniforms[NUM_UNIFORMS*i+5]+mObjHalfY; |
|
96 |
} |
|
97 |
|
|
98 |
if( mInter[2][i]!=null ) mInter[2][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+1, mCurrentDuration[i], step); |
|
91 |
if( mInter[1][i]!=null ) mInter[1][i].interpolateMain( mCache , NUM_CACHE*i , mCurrentDuration[i], step); |
|
92 |
if( mInter[2][i]!=null ) mInter[2][i].interpolateMain( mUniforms, NUM_UNIFORMS*i+1, mCurrentDuration[i], step); |
|
99 | 93 |
|
100 | 94 |
mCurrentDuration[i] += step; |
101 | 95 |
} |
... | ... | |
112 | 106 |
mUniforms[NUM_UNIFORMS*index+2] = mUniforms[NUM_UNIFORMS*(index+1)+2]; |
113 | 107 |
mUniforms[NUM_UNIFORMS*index+3] = mUniforms[NUM_UNIFORMS*(index+1)+3]; |
114 | 108 |
|
115 |
if( mInter[1][index]==null ) |
|
116 |
{ |
|
117 |
mUniforms[NUM_UNIFORMS*index+4] = mUniforms[NUM_UNIFORMS*(index+1)+4]; |
|
118 |
mUniforms[NUM_UNIFORMS*index+5] = mUniforms[NUM_UNIFORMS*(index+1)+5]; |
|
119 |
mUniforms[NUM_UNIFORMS*index+6] = mUniforms[NUM_UNIFORMS*(index+1)+6]; |
|
120 |
mUniforms[NUM_UNIFORMS*index+7] = mUniforms[NUM_UNIFORMS*(index+1)+7]; |
|
121 |
} |
|
109 |
mCache[NUM_CACHE*index ] = mCache[NUM_CACHE*(index+1) ]; |
|
110 |
mCache[NUM_CACHE*index+1] = mCache[NUM_CACHE*(index+1)+1]; |
|
111 |
mCache[NUM_CACHE*index+2] = mCache[NUM_CACHE*(index+1)+2]; |
|
112 |
mCache[NUM_CACHE*index+3] = mCache[NUM_CACHE*(index+1)+3]; |
|
122 | 113 |
} |
123 | 114 |
|
124 | 115 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
125 | 116 |
|
126 |
synchronized void send()
|
|
117 |
synchronized void send(int halfX, int halfY)
|
|
127 | 118 |
{ |
128 | 119 |
GLES20.glUniform1i( mNumEffectsH, mNumEffects); |
129 |
|
|
120 |
|
|
130 | 121 |
if( mNumEffects>0 ) |
131 |
{ |
|
122 |
{ |
|
123 |
for(int i=0; i<mNumEffects; i++) |
|
124 |
{ |
|
125 |
mUniforms[NUM_UNIFORMS*i+4] = mCache[NUM_CACHE*i ]-halfX; |
|
126 |
mUniforms[NUM_UNIFORMS*i+5] =-mCache[NUM_CACHE*i+1]+halfY; |
|
127 |
mUniforms[NUM_UNIFORMS*i+6] = mCache[NUM_CACHE*i+2]; |
|
128 |
mUniforms[NUM_UNIFORMS*i+7] = mCache[NUM_CACHE*i+3]; |
|
129 |
} |
|
130 |
|
|
132 | 131 |
GLES20.glUniform1iv( mTypeH , mNumEffects, mName ,0); |
133 | 132 |
GLES20.glUniform4fv( mUniformsH,2*mNumEffects, mUniforms,0); |
134 | 133 |
} |
... | ... | |
162 | 161 |
else return -1; |
163 | 162 |
|
164 | 163 |
mInter[1][mNumEffects] = null; |
165 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = Float.MAX_VALUE;
|
|
166 |
mUniforms[NUM_UNIFORMS*mNumEffects+7] = Float.MAX_VALUE;
|
|
164 |
mCache[NUM_CACHE*mNumEffects+2] = Float.MAX_VALUE;
|
|
165 |
mCache[NUM_CACHE*mNumEffects+3] = Float.MAX_VALUE;
|
|
167 | 166 |
|
168 | 167 |
mInter[2][mNumEffects] = null; |
169 | 168 |
|
... | ... | |
200 | 199 |
else if( region instanceof Static4D ) |
201 | 200 |
{ |
202 | 201 |
mInter[1][mNumEffects] = null; |
203 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static4D)region).getX()-mObjHalfX;
|
|
204 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] =-((Static4D)region).getY()+mObjHalfY;
|
|
205 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static4D)region).getZ();
|
|
206 |
mUniforms[NUM_UNIFORMS*mNumEffects+7] = ((Static4D)region).getW();
|
|
202 |
mCache[NUM_CACHE*mNumEffects ] = ((Static4D)region).getX();
|
|
203 |
mCache[NUM_CACHE*mNumEffects+1] = ((Static4D)region).getY();
|
|
204 |
mCache[NUM_CACHE*mNumEffects+2] = ((Static4D)region).getZ();
|
|
205 |
mCache[NUM_CACHE*mNumEffects+3] = ((Static4D)region).getW();
|
|
207 | 206 |
} |
208 | 207 |
else return -1; |
209 | 208 |
|
... | ... | |
255 | 254 |
else if( region instanceof Static4D ) |
256 | 255 |
{ |
257 | 256 |
mInter[1][mNumEffects] = null; |
258 |
mUniforms[NUM_UNIFORMS*mNumEffects+4] = ((Static4D)region).getX()-mObjHalfX;
|
|
259 |
mUniforms[NUM_UNIFORMS*mNumEffects+5] =-((Static4D)region).getY()+mObjHalfY;
|
|
260 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static4D)region).getZ();
|
|
261 |
mUniforms[NUM_UNIFORMS*mNumEffects+7] = ((Static4D)region).getW();
|
|
257 |
mCache[NUM_CACHE*mNumEffects ] = ((Static4D)region).getX();
|
|
258 |
mCache[NUM_CACHE*mNumEffects+1] = ((Static4D)region).getY();
|
|
259 |
mCache[NUM_CACHE*mNumEffects+2] = ((Static4D)region).getZ();
|
|
260 |
mCache[NUM_CACHE*mNumEffects+3] = ((Static4D)region).getW();
|
|
262 | 261 |
} |
263 | 262 |
else return -1; |
264 | 263 |
|
... | ... | |
302 | 301 |
else return -1; |
303 | 302 |
|
304 | 303 |
mInter[1][mNumEffects] = null; |
305 |
mUniforms[NUM_UNIFORMS*mNumEffects+6] = Float.MAX_VALUE;
|
|
306 |
mUniforms[NUM_UNIFORMS*mNumEffects+7] = Float.MAX_VALUE;
|
|
304 |
mCache[NUM_CACHE*mNumEffects+2] = Float.MAX_VALUE;
|
|
305 |
mCache[NUM_CACHE*mNumEffects+3] = Float.MAX_VALUE;
|
|
307 | 306 |
|
308 | 307 |
return addBase(eln); |
309 | 308 |
} |
Also available in: Unified diff
The EffectQueues are now totally independent of the size of the underlying Bitmap.