62 |
62 |
|
63 |
63 |
class EarthRenderer implements GLSurfaceView.Renderer
|
64 |
64 |
{
|
65 |
|
private static final int SIZE = 500;
|
66 |
|
private static final int LEVEL= 32;
|
67 |
|
private static final float FOV = 30.0f;
|
68 |
|
private static final float NEAR = 0.1f;
|
|
65 |
private static final float D = (float)Math.sqrt(2.0)/2.0f;
|
|
66 |
|
|
67 |
private static final int SIZE = 500;
|
|
68 |
private static final int RADIUS = (int)(SIZE*D);
|
|
69 |
private static final int LEVEL = 32;
|
|
70 |
private static final float FOV = 30.0f;
|
|
71 |
private static final float NEAR = 0.1f;
|
69 |
72 |
|
70 |
73 |
private GLSurfaceView mView;
|
71 |
74 |
private DistortedTexture mTexture;
|
... | ... | |
79 |
82 |
int mScreenMin;
|
80 |
83 |
|
81 |
84 |
private Static3D mColor;
|
|
85 |
private Static3D mRegionF;
|
82 |
86 |
private Static1D mStrength;
|
83 |
87 |
|
84 |
88 |
///////////////////////////////////////////////////////////////////////////////////////////////////
|
... | ... | |
88 |
92 |
mView = v;
|
89 |
93 |
|
90 |
94 |
mStrength = new Static1D(0.5f);
|
91 |
|
mColor= new Static3D(255,0,0);
|
92 |
|
mMove = new Static3D(0,0,0);
|
93 |
|
mScale= new Static3D(1,1,1);
|
94 |
|
mCenter=new Static3D(0,0,0);
|
|
95 |
mColor = new Static3D(255,0,0);
|
|
96 |
mRegionF = new Static3D(RADIUS,RADIUS,RADIUS);
|
|
97 |
mMove = new Static3D(0,0,0);
|
|
98 |
mScale = new Static3D(1,1,1);
|
|
99 |
mCenter = new Static3D(0,0,0);
|
95 |
100 |
|
96 |
|
mMesh = new MeshSphere(LEVEL);
|
97 |
|
mTexture= new DistortedTexture(SIZE,SIZE);
|
|
101 |
mMesh = new MeshSphere(LEVEL);
|
|
102 |
mTexture = new DistortedTexture(SIZE,SIZE);
|
98 |
103 |
|
99 |
104 |
mObjWidth = mTexture.getWidth();
|
100 |
105 |
mObjHeight= mTexture.getHeight();
|
... | ... | |
115 |
120 |
mEffects.apply( new MatrixEffectQuaternion(quatInt1, mCenter) );
|
116 |
121 |
mEffects.apply( new MatrixEffectQuaternion(quatInt2, mCenter) );
|
117 |
122 |
|
|
123 |
|
|
124 |
Static3D center = new Static3D(0.5f*mObjWidth,0.5f*mObjHeight,0.5f*mObjDepth);
|
|
125 |
mEffects.apply( new FragmentEffectChroma(mStrength, mColor,center, mRegionF, false) );
|
|
126 |
|
118 |
127 |
mScreen = new DistortedScreen();
|
119 |
128 |
mScreen.setProjection(FOV, NEAR);
|
120 |
129 |
}
|
... | ... | |
163 |
172 |
float y = 0.7071f*(float)(cosLON*cosLAT);
|
164 |
173 |
float z = 0.7071f*(float) sinLAT ;
|
165 |
174 |
|
166 |
|
float radius = SIZE/10;
|
167 |
|
Static4D region = new Static4D(x*mObjWidth,y*mObjHeight,radius,radius);
|
|
175 |
Static3D center = new Static3D(x*mObjWidth,y*mObjHeight,z*mObjDepth);
|
|
176 |
|
|
177 |
android.util.Log.e("earth", "center "+(x*mObjWidth)+" "+(y*mObjHeight)+" "+(z*mObjDepth));
|
|
178 |
android.util.Log.e("earth", "longitude: "+longitude+" latitude:"+latitude);
|
168 |
179 |
|
169 |
180 |
switch(name)
|
170 |
181 |
{
|
... | ... | |
175 |
186 |
case PINCH : effect = new VertexEffectPinch (mDyn2, center, mRegionV); break;
|
176 |
187 |
case SWIRL : effect = new VertexEffectSwirl (mDyn1, center, mRegionV); break;
|
177 |
188 |
case WAVE : effect = new VertexEffectWave (mDyn5, center, mRegionV); break;
|
178 |
|
|
179 |
|
case ALPHA : effect = new FragmentEffectAlpha (mStrength, region, false); break;
|
180 |
|
case SMOOTH_ALPHA : effect = new FragmentEffectAlpha (mStrength, region, true ); break;
|
181 |
|
case CHROMA : effect = new FragmentEffectChroma (mStrength, mColor,region, false); break;
|
182 |
|
case SMOOTH_CHROMA : effect = new FragmentEffectChroma (mStrength, mColor,region, true ); break;
|
183 |
|
case BRIGHTNESS : effect = new FragmentEffectBrightness(mStrength, region, false); break;
|
184 |
|
case SMOOTH_BRIGHTNESS: effect = new FragmentEffectBrightness(mStrength, region, true ); break;
|
185 |
|
case SATURATION : effect = new FragmentEffectSaturation(mStrength, region, false); break;
|
186 |
|
case SMOOTH_SATURATION: effect = new FragmentEffectSaturation(mStrength, region, true ); break;
|
187 |
|
case CONTRAST : effect = new FragmentEffectContrast (mStrength, region, false); break;
|
188 |
|
case SMOOTH_CONTRAST : effect = new FragmentEffectContrast (mStrength, region, true ); break;
|
189 |
189 |
*/
|
|
190 |
case ALPHA : effect = new FragmentEffectAlpha (mStrength, center, mRegionF, false); break;
|
|
191 |
case SMOOTH_ALPHA : effect = new FragmentEffectAlpha (mStrength, center, mRegionF, true ); break;
|
|
192 |
case CHROMA : effect = new FragmentEffectChroma (mStrength, mColor,center, mRegionF, false); break;
|
|
193 |
case SMOOTH_CHROMA : effect = new FragmentEffectChroma (mStrength, mColor,center, mRegionF, true ); break;
|
|
194 |
case BRIGHTNESS : effect = new FragmentEffectBrightness(mStrength, center, mRegionF, false); break;
|
|
195 |
case SMOOTH_BRIGHTNESS: effect = new FragmentEffectBrightness(mStrength, center, mRegionF, true ); break;
|
|
196 |
case SATURATION : effect = new FragmentEffectSaturation(mStrength, center, mRegionF, false); break;
|
|
197 |
case SMOOTH_SATURATION: effect = new FragmentEffectSaturation(mStrength, center, mRegionF, true ); break;
|
|
198 |
case CONTRAST : effect = new FragmentEffectContrast (mStrength, center, mRegionF, false); break;
|
|
199 |
case SMOOTH_CONTRAST : effect = new FragmentEffectContrast (mStrength, center, mRegionF, true ); break;
|
|
200 |
|
|
201 |
default : android.util.Log.e("EarthRenderer", "unexpected effect: "+name.toString() );
|
190 |
202 |
}
|
191 |
203 |
|
192 |
204 |
if( effect!=null )
|
193 |
205 |
{
|
194 |
|
android.util.Log.e("renderer", "adding fragment effect");
|
195 |
206 |
mEffects.apply(effect);
|
196 |
207 |
}
|
197 |
208 |
}
|
... | ... | |
229 |
240 |
mScreen.detachAll();
|
230 |
241 |
mScreen.attach(mTexture,mEffects,mMesh);
|
231 |
242 |
|
|
243 |
Effect.enableEffects(EffectType.FRAGMENT);
|
|
244 |
Effect.enableEffects(EffectType.VERTEX);
|
|
245 |
|
232 |
246 |
try
|
233 |
247 |
{
|
234 |
248 |
Distorted.onCreate(mView.getContext());
|
Progress with the Earth app.