54 |
54 |
|
55 |
55 |
private static final int[] OBJECTS =
|
56 |
56 |
{
|
57 |
|
-1, 0, 0, 255, 0, 0, // x,y,z, R,G,B
|
58 |
|
0, 0, 0, 255, 255, 0, //
|
59 |
|
+1, 0, 0, 0, 255, 0, //
|
|
57 |
-150, 0, 0, 255, 0, 0, // x,y,z, R,G,B
|
|
58 |
0, 0, 0, 255, 255, 0, //
|
|
59 |
+150, 0, 0, 0, 255, 0, //
|
60 |
60 |
};
|
61 |
61 |
|
62 |
62 |
private static final int NUM_OBJECTS = OBJECTS.length/NUM;
|
... | ... | |
65 |
65 |
private GLSurfaceView mView;
|
66 |
66 |
private DistortedTexture mTex;
|
67 |
67 |
private DistortedNode[] mNode;
|
68 |
|
private Static3D[] mMoveVector;
|
69 |
|
private Static3D[] mChromaVector;
|
70 |
68 |
private Static1D[] mBlurVector;
|
71 |
69 |
private DistortedScreen mScreen;
|
72 |
70 |
private PostprocessEffectBlur[] mBlur;
|
73 |
|
private FragmentEffectChroma[] mChroma;
|
74 |
|
private int mDistance;
|
75 |
71 |
private boolean[] mBlurStatus;
|
76 |
72 |
private Static3D mMove1, mMove2, mScale1, mScale2, mCenter;
|
77 |
73 |
|
... | ... | |
83 |
79 |
TriblurRenderer(GLSurfaceView v)
|
84 |
80 |
{
|
85 |
81 |
mView = v;
|
86 |
|
mDistance = (int)(OBJ_SIZE*0.6f);
|
87 |
82 |
|
88 |
83 |
MeshCubes mesh = new MeshCubes(1,1,1);
|
89 |
84 |
|
... | ... | |
96 |
91 |
mScreen.setDebug(DistortedScreen.DEBUG_FPS);
|
97 |
92 |
|
98 |
93 |
mBlurStatus = new boolean[NUM_OBJECTS];
|
99 |
|
mMoveVector = new Static3D[NUM_OBJECTS];
|
100 |
|
mChromaVector = new Static3D[NUM_OBJECTS];
|
101 |
94 |
mBlurVector = new Static1D[NUM_OBJECTS];
|
102 |
95 |
mNode = new DistortedNode[NUM_OBJECTS];
|
103 |
96 |
mBlur = new PostprocessEffectBlur[NUM_OBJECTS];
|
104 |
|
mChroma = new FragmentEffectChroma[NUM_OBJECTS];
|
|
97 |
|
|
98 |
FragmentEffectChroma[] chroma= new FragmentEffectChroma[NUM_OBJECTS];
|
|
99 |
Static3D[] chromaVector = new Static3D[NUM_OBJECTS];
|
|
100 |
Static3D[] moveVector = new Static3D[NUM_OBJECTS];
|
105 |
101 |
|
106 |
102 |
DistortedEffects[] effects= new DistortedEffects[NUM_OBJECTS];
|
107 |
103 |
|
... | ... | |
120 |
116 |
|
121 |
117 |
for(int i=0; i<NUM_OBJECTS; i++)
|
122 |
118 |
{
|
123 |
|
mMoveVector[i] = new Static3D(0,0,0);
|
124 |
|
mChromaVector[i] = new Static3D(OBJECTS[NUM*i+3],OBJECTS[NUM*i+4],OBJECTS[NUM*i+5]);
|
|
119 |
moveVector[i] = new Static3D(OBJECTS[NUM*i ], OBJECTS[NUM*i+1], OBJECTS[NUM*i+2]);
|
|
120 |
chromaVector[i] = new Static3D(OBJECTS[NUM*i+3], OBJECTS[NUM*i+4], OBJECTS[NUM*i+5]);
|
125 |
121 |
mBlurVector[i] = new Static1D(10);
|
126 |
122 |
mBlur[i] = new PostprocessEffectBlur(mBlurVector[i]);
|
127 |
|
mChroma[i] = new FragmentEffectChroma( new Static1D(0.3f), mChromaVector[i]);
|
|
123 |
chroma[i] = new FragmentEffectChroma( new Static1D(0.3f), chromaVector[i]);
|
128 |
124 |
effects[i] = new DistortedEffects();
|
129 |
125 |
|
130 |
126 |
effects[i].apply(mBlur[i]);
|
131 |
|
effects[i].apply(mChroma[i]);
|
|
127 |
effects[i].apply(chroma[i]);
|
132 |
128 |
effects[i].apply( (i==0||i==NUM_OBJECTS-1) ? moveEffect1 : moveEffect2 );
|
133 |
129 |
effects[i].apply( (i==0||i==NUM_OBJECTS-1) ? scaleEffect1 : scaleEffect2 );
|
134 |
130 |
effects[i].apply(quatEffect1);
|
135 |
131 |
effects[i].apply(quatEffect2);
|
136 |
|
effects[i].apply(new MatrixEffectMove(mMoveVector[i]));
|
|
132 |
effects[i].apply(new MatrixEffectMove(moveVector[i]));
|
137 |
133 |
|
138 |
134 |
mBlurStatus[i] = true;
|
139 |
135 |
mNode[i] = new DistortedNode(mTex, effects[i], mesh );
|
... | ... | |
215 |
211 |
mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, -(float)OBJ_SIZE/2 );
|
216 |
212 |
mMove1.set( (width -factor1*OBJ_SIZE)/2 ,(height-factor1*OBJ_SIZE)/2 ,0);
|
217 |
213 |
mMove2.set( (width -factor2*OBJ_SIZE)/2 ,(height-factor2*OBJ_SIZE)/2 ,0);
|
218 |
|
computeMoveVectors();
|
219 |
214 |
mScreen.resize(width, height);
|
220 |
215 |
}
|
221 |
216 |
|
222 |
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
223 |
|
|
224 |
|
private void computeMoveVectors()
|
225 |
|
{
|
226 |
|
float size= 0.026f*OBJ_SIZE*mDistance;
|
227 |
|
|
228 |
|
for(int i=0; i<NUM_OBJECTS; i++)
|
229 |
|
{
|
230 |
|
mMoveVector[i].set(size*OBJECTS[NUM*i], size*OBJECTS[NUM*i+1], size*OBJECTS[NUM*i+2]);
|
231 |
|
}
|
232 |
|
}
|
233 |
|
|
234 |
217 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
235 |
218 |
|
236 |
219 |
void setRange(int object, int range)
|
OIT: lots of progress on all fronts. Still a few bugs to solve though!