Revision 40eef4b9
Added by Leszek Koltunski almost 9 years ago
| src/main/java/org/distorted/examples/aroundtheworld/AroundTheWorldRenderer.java | ||
|---|---|---|
| 122 | 122 |
mObjWidth = bitmap.getWidth(); |
| 123 | 123 |
mObjHeight= bitmap.getHeight(); |
| 124 | 124 |
|
| 125 |
mObject = new DistortedObject(mObjWidth,mObjHeight,1);
|
|
| 125 |
mObject = new DistortedObject(mObjWidth,mObjHeight,0);
|
|
| 126 | 126 |
mObject.setTexture(bitmap); |
| 127 | 127 |
mEffects.apply(mObject); |
| 128 | 128 |
|
| src/main/java/org/distorted/examples/catanddog/CatAndDogRenderer.java | ||
|---|---|---|
| 27 | 27 |
|
| 28 | 28 |
import org.distorted.examples.R; |
| 29 | 29 |
import org.distorted.library.Distorted; |
| 30 |
import org.distorted.library.DistortedObject; |
|
| 30 |
import org.distorted.library.DistortedEffectQueues; |
|
| 31 |
import org.distorted.library.DistortedTexture; |
|
| 31 | 32 |
import org.distorted.library.GridFlat; |
| 32 | 33 |
import org.distorted.library.EffectTypes; |
| 33 | 34 |
import org.distorted.library.type.Dynamic1D; |
| ... | ... | |
| 46 | 47 |
class CatAndDogRenderer implements GLSurfaceView.Renderer |
| 47 | 48 |
{
|
| 48 | 49 |
private GLSurfaceView mView; |
| 49 |
private DistortedObject mObject; |
|
| 50 |
private DistortedEffectQueues mQueues; |
|
| 51 |
private DistortedTexture mTexture; |
|
| 50 | 52 |
private GridFlat mGrid; |
| 51 |
private Static4D chromaRegion, alphaRegion; |
|
| 52 | 53 |
private int bmpHeight, bmpWidth; |
| 53 | 54 |
|
| 54 | 55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 56 | 57 |
public CatAndDogRenderer(GLSurfaceView v) |
| 57 | 58 |
{
|
| 58 | 59 |
mView = v; |
| 59 |
|
|
| 60 |
chromaRegion= new Static4D( 530, 200,100,100); |
|
| 61 |
alphaRegion = new Static4D( 230, 200,100,100); |
|
| 60 |
|
|
| 61 |
mGrid = new GridFlat(1,1); // no vertex effects, grid can be a (1x1) quad. |
|
| 62 |
mQueues = new DistortedEffectQueues(); |
|
| 63 |
|
|
| 64 |
Static4D chromaRegion= new Static4D( 530, 200,100,100); |
|
| 65 |
Static4D alphaRegion = new Static4D( 230, 200,100,100); |
|
| 66 |
|
|
| 67 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
| 68 |
chromaDyn.add(new Static1D(1)); |
|
| 69 |
chromaDyn.add(new Static1D(0)); |
|
| 70 |
|
|
| 71 |
mQueues.chroma(chromaDyn, new Static3D(1,0,0), chromaRegion ,true); |
|
| 72 |
|
|
| 73 |
Dynamic1D alphaDyn = new Dynamic1D(3000,0.0f); |
|
| 74 |
alphaDyn.add(new Static1D(1)); |
|
| 75 |
alphaDyn.add(new Static1D(0)); |
|
| 76 |
|
|
| 77 |
mQueues.alpha( alphaDyn, alphaRegion, false ); |
|
| 62 | 78 |
} |
| 63 | 79 |
|
| 64 | 80 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 66 | 82 |
public void onDrawFrame(GL10 glUnused) |
| 67 | 83 |
{
|
| 68 | 84 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
| 69 |
mObject.draw(System.currentTimeMillis(), mGrid);
|
|
| 85 |
mQueues.draw(System.currentTimeMillis(), mTexture, mGrid);
|
|
| 70 | 86 |
} |
| 71 | 87 |
|
| 72 | 88 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 94 | 110 |
bmpHeight = bitmap.getHeight(); |
| 95 | 111 |
bmpWidth = bitmap.getWidth(); |
| 96 | 112 |
|
| 97 |
mGrid = new GridFlat(1,1); // no vertex effects, grid can be a (1x1) quad. |
|
| 98 |
|
|
| 99 |
mObject = new DistortedObject(bmpWidth,bmpHeight,1); |
|
| 100 |
mObject.setTexture(bitmap); |
|
| 101 |
|
|
| 102 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
| 103 |
chromaDyn.add(new Static1D(1)); |
|
| 104 |
chromaDyn.add(new Static1D(0)); |
|
| 105 |
|
|
| 106 |
mObject.chroma(chromaDyn, new Static3D(1,0,0), chromaRegion ,true); |
|
| 107 |
|
|
| 108 |
Dynamic1D alphaDyn = new Dynamic1D(3000,0.0f); |
|
| 109 |
alphaDyn.add(new Static1D(1)); |
|
| 110 |
alphaDyn.add(new Static1D(0)); |
|
| 113 |
mTexture = new DistortedTexture(bmpWidth,bmpHeight,0); |
|
| 114 |
mTexture.setTexture(bitmap); |
|
| 111 | 115 |
|
| 112 |
mObject.alpha( alphaDyn, alphaRegion, false ); |
|
| 113 |
|
|
| 114 | 116 |
try |
| 115 | 117 |
{
|
| 116 | 118 |
Distorted.onSurfaceCreated(mView.getContext()); |
| ... | ... | |
| 139 | 141 |
diRotate.add(new Static1D( 0)); |
| 140 | 142 |
diRotate.add(new Static1D(360)); |
| 141 | 143 |
|
| 142 |
mObject.abortEffects(EffectTypes.MATRIX);
|
|
| 144 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
| 143 | 145 |
|
| 144 |
mObject.move(diMove);
|
|
| 145 |
mObject.scale(diScale);
|
|
| 146 |
mObject.rotate( diRotate, new Static3D(0,0,1), new Static3D(bmpWidth/2,bmpHeight/2,0) );
|
|
| 146 |
mQueues.move(diMove);
|
|
| 147 |
mQueues.scale(diScale);
|
|
| 148 |
mQueues.rotate( diRotate, new Static3D(0,0,1), new Static3D(bmpWidth/2,bmpHeight/2,0) );
|
|
| 147 | 149 |
|
| 148 | 150 |
Distorted.onSurfaceChanged(width, height); |
| 149 | 151 |
} |
| src/main/java/org/distorted/examples/differenteffects/DifferentEffectsRenderer.java | ||
|---|---|---|
| 29 | 29 |
|
| 30 | 30 |
import org.distorted.library.Distorted; |
| 31 | 31 |
import org.distorted.library.GridFlat; |
| 32 |
import org.distorted.library.DistortedObject; |
|
| 32 |
import org.distorted.library.DistortedTexture; |
|
| 33 |
import org.distorted.library.DistortedEffectQueues; |
|
| 33 | 34 |
import org.distorted.library.EffectTypes; |
| 34 | 35 |
import org.distorted.library.type.Dynamic1D; |
| 35 | 36 |
import org.distorted.library.type.Dynamic3D; |
| ... | ... | |
| 49 | 50 |
private static final int NUM = 3; |
| 50 | 51 |
|
| 51 | 52 |
private GLSurfaceView mView; |
| 52 |
private DistortedObject[] mObj; |
|
| 53 |
private DistortedEffectQueues[] mQueue; |
|
| 54 |
private DistortedTexture mTexture; |
|
| 53 | 55 |
private GridFlat mGrid; |
| 54 |
private Static3D pLeft, pRight, pNose1; |
|
| 55 |
private Static4D RegionEye; |
|
| 56 |
private Dynamic3D mDI; |
|
| 57 | 56 |
private int bmpHeight, bmpWidth; |
| 58 | 57 |
|
| 59 | 58 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 62 | 61 |
{
|
| 63 | 62 |
mView = v; |
| 64 | 63 |
|
| 65 |
// mObj[0] effects
|
|
| 66 |
pLeft = new Static3D(214, 206, 0); |
|
| 67 |
pRight= new Static3D(390, 212, 0); |
|
| 68 |
RegionEye = new Static4D(0,0,60,60); |
|
| 64 |
// mQueue[0] effects
|
|
| 65 |
Static3D pLeft = new Static3D(214, 206, 0);
|
|
| 66 |
Static3D pRight= new Static3D(390, 212, 0);
|
|
| 67 |
Static4D RegionEye = new Static4D(0,0,60,60);
|
|
| 69 | 68 |
|
| 70 |
// mObj[1] effects
|
|
| 71 |
mDI = new Dynamic3D(1000,0.0f);
|
|
| 72 |
mDI.add(new Static3D( 50,0,0));
|
|
| 73 |
mDI.add(new Static3D(-50,0,0));
|
|
| 74 |
pNose1 = new Static3D(305, 340, 0); |
|
| 69 |
// mQueue[1] effects
|
|
| 70 |
Dynamic3D dyn = new Dynamic3D(1000,0.0f);
|
|
| 71 |
dyn.add(new Static3D( 50,0,0));
|
|
| 72 |
dyn.add(new Static3D(-50,0,0));
|
|
| 73 |
Static3D pNose1 = new Static3D(305, 340, 0);
|
|
| 75 | 74 |
|
| 76 |
// we don't need to prepare anything for bmp[2] effects |
|
| 75 |
// we don't need to prepare anything for mQueue[2] effects |
|
| 76 |
|
|
| 77 |
mQueue= new DistortedEffectQueues[NUM]; |
|
| 78 |
|
|
| 79 |
for(int i=0; i<NUM; i++) mQueue[i] = new DistortedEffectQueues(); |
|
| 80 |
|
|
| 81 |
Dynamic1D sink = new Dynamic1D(2000,0.0f); |
|
| 82 |
sink.add(new Static1D( 1)); |
|
| 83 |
sink.add(new Static1D(10)); |
|
| 84 |
|
|
| 85 |
mQueue[0].sink(sink, pLeft, RegionEye); |
|
| 86 |
mQueue[0].sink(sink, pRight,RegionEye); |
|
| 87 |
mQueue[1].distort(dyn, pNose1); |
|
| 88 |
|
|
| 89 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
| 90 |
chromaDyn.add(new Static1D(0)); |
|
| 91 |
chromaDyn.add(new Static1D(1)); |
|
| 92 |
|
|
| 93 |
mQueue[2].chroma(chromaDyn, new Static3D(0,1,0) ); |
|
| 77 | 94 |
} |
| 78 | 95 |
|
| 79 | 96 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 84 | 101 |
|
| 85 | 102 |
long time = System.currentTimeMillis(); |
| 86 | 103 |
|
| 87 |
for(int i=NUM-1; i>=0; i--) mObj[i].draw(time, mGrid);
|
|
| 104 |
for(int i=NUM-1; i>=0; i--) mQueue[i].draw(time, mTexture, mGrid);
|
|
| 88 | 105 |
} |
| 89 | 106 |
|
| 90 | 107 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 93 | 110 |
{
|
| 94 | 111 |
for(int i=NUM-1; i>=0; i--) |
| 95 | 112 |
{
|
| 96 |
mObj[i].abortEffects(EffectTypes.MATRIX);
|
|
| 113 |
mQueue[i].abortEffects(EffectTypes.MATRIX);
|
|
| 97 | 114 |
} |
| 98 | 115 |
|
| 99 | 116 |
if( (float)bmpHeight/(NUM*bmpWidth) > (float)height/width ) |
| ... | ... | |
| 103 | 120 |
|
| 104 | 121 |
for(int i=NUM-1; i>=0; i--) |
| 105 | 122 |
{
|
| 106 |
mObj[i].move( new Static3D((width-NUM*w)/2 +i*w , 0, 0) );
|
|
| 107 |
mObj[i].scale(factor);
|
|
| 123 |
mQueue[i].move( new Static3D((width-NUM*w)/2 +i*w , 0, 0) );
|
|
| 124 |
mQueue[i].scale(factor);
|
|
| 108 | 125 |
} |
| 109 | 126 |
} |
| 110 | 127 |
else |
| ... | ... | |
| 115 | 132 |
|
| 116 | 133 |
for(int i=NUM-1; i>=0; i--) |
| 117 | 134 |
{
|
| 118 |
mObj[i].move( new Static3D(i*w, (height-h)/2, 0) );
|
|
| 119 |
mObj[i].scale(factor);
|
|
| 135 |
mQueue[i].move( new Static3D(i*w, (height-h)/2, 0) );
|
|
| 136 |
mQueue[i].scale(factor);
|
|
| 120 | 137 |
} |
| 121 | 138 |
} |
| 122 | 139 |
|
| ... | ... | |
| 148 | 165 |
bmpHeight = bitmap.getHeight(); |
| 149 | 166 |
bmpWidth = bitmap.getWidth(); |
| 150 | 167 |
|
| 151 |
mGrid = new GridFlat(30,30*bmpHeight/bmpWidth); |
|
| 168 |
mGrid = new GridFlat(30,30*bmpHeight/bmpWidth); |
|
| 169 |
mTexture = new DistortedTexture(bmpWidth, bmpHeight, 1); |
|
| 152 | 170 |
|
| 153 |
mObj = new DistortedObject[NUM]; |
|
| 154 |
mObj[0] = new DistortedObject(bmpWidth, bmpHeight, 1); |
|
| 155 |
|
|
| 156 |
for(int i=1; i<NUM; i++) mObj[i] = new DistortedObject(mObj[0], Distorted.CLONE_BITMAP); |
|
| 157 |
|
|
| 158 |
// setting the bitmap once is enough; others are cloned! |
|
| 159 |
mObj[0].setTexture(bitmap); |
|
| 160 |
|
|
| 161 |
Dynamic1D sink = new Dynamic1D(2000,0.0f); |
|
| 162 |
sink.add(new Static1D( 1)); |
|
| 163 |
sink.add(new Static1D(10)); |
|
| 171 |
mTexture.setTexture(bitmap); |
|
| 164 | 172 |
|
| 165 |
mObj[0].sink(sink, pLeft, RegionEye); |
|
| 166 |
mObj[0].sink(sink, pRight,RegionEye); |
|
| 167 |
mObj[1].distort(mDI, pNose1); |
|
| 168 |
|
|
| 169 |
Dynamic1D chromaDyn = new Dynamic1D(3000,0.0f); |
|
| 170 |
chromaDyn.add(new Static1D(0)); |
|
| 171 |
chromaDyn.add(new Static1D(1)); |
|
| 172 |
|
|
| 173 |
mObj[2].chroma(chromaDyn, new Static3D(0,1,0) ); |
|
| 174 |
|
|
| 175 | 173 |
try |
| 176 | 174 |
{
|
| 177 | 175 |
Distorted.onSurfaceCreated(mView.getContext()); |
| src/main/java/org/distorted/examples/dynamic/DynamicRenderer.java | ||
|---|---|---|
| 30 | 30 |
import android.opengl.GLSurfaceView; |
| 31 | 31 |
|
| 32 | 32 |
import org.distorted.library.GridFlat; |
| 33 |
import org.distorted.library.DistortedObject; |
|
| 33 |
import org.distorted.library.DistortedEffectQueues; |
|
| 34 |
import org.distorted.library.DistortedTexture; |
|
| 34 | 35 |
import org.distorted.library.Distorted; |
| 35 | 36 |
|
| 36 | 37 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 38 | 39 |
class DynamicRenderer implements GLSurfaceView.Renderer |
| 39 | 40 |
{
|
| 40 | 41 |
private DynamicSurfaceView mView; |
| 41 |
private DistortedObject mBackground; |
|
| 42 |
private DistortedTexture mTexture; |
|
| 43 |
private DistortedEffectQueues mQueues; |
|
| 42 | 44 |
private GridFlat mGrid; |
| 43 | 45 |
private Canvas mCanvas; |
| 44 | 46 |
private Bitmap mBitmap; |
| ... | ... | |
| 57 | 59 |
mPaint.setStyle(Style.FILL); |
| 58 | 60 |
|
| 59 | 61 |
mView = v; |
| 62 |
mGrid = new GridFlat(1,1); |
|
| 63 |
mQueues = new DistortedEffectQueues(); |
|
| 60 | 64 |
} |
| 61 | 65 |
|
| 62 | 66 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 80 | 84 |
texW = width; |
| 81 | 85 |
texH = height; |
| 82 | 86 |
|
| 83 |
mGrid = new GridFlat(1,1); |
|
| 84 |
mBackground = new DistortedObject(texW,texH,1); |
|
| 85 |
mBitmap = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888); |
|
| 86 |
mCanvas = new Canvas(mBitmap); |
|
| 87 |
mTexture= new DistortedTexture(texW,texH,0); |
|
| 88 |
mBitmap = Bitmap.createBitmap(texW,texH, Bitmap.Config.ARGB_8888); |
|
| 89 |
mCanvas = new Canvas(mBitmap); |
|
| 87 | 90 |
|
| 88 | 91 |
Distorted.onSurfaceChanged(texW,texH); |
| 89 | 92 |
mView.onSurfaceChanged(texW,texH); |
| ... | ... | |
| 99 | 102 |
|
| 100 | 103 |
mCanvas.drawRect(0, 0, texW, texH, mPaint); |
| 101 | 104 |
mView.drawCurve(mCanvas,time); |
| 102 |
mBackground.setTexture(mBitmap);
|
|
| 103 |
mBackground.draw(time,mGrid);
|
|
| 105 |
mTexture.setTexture(mBitmap);
|
|
| 106 |
mQueues.draw(time,mTexture,mGrid);
|
|
| 104 | 107 |
} |
| 105 | 108 |
|
| 106 | 109 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java | ||
|---|---|---|
| 24 | 24 |
import android.widget.TextView; |
| 25 | 25 |
|
| 26 | 26 |
import org.distorted.examples.R; |
| 27 |
import org.distorted.library.DistortedObject;
|
|
| 27 |
import org.distorted.library.DistortedEffectQueues;
|
|
| 28 | 28 |
import org.distorted.library.EffectNames; |
| 29 | 29 |
import org.distorted.library.EffectTypes; |
| 30 | 30 |
import org.distorted.library.type.Dynamic1D; |
| ... | ... | |
| 77 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 78 | 78 |
// requires knowledge about effect nature |
| 79 | 79 |
|
| 80 |
void apply(DistortedObject object)
|
|
| 80 |
void apply(DistortedEffectQueues queues)
|
|
| 81 | 81 |
{
|
| 82 | 82 |
switch(mName) |
| 83 | 83 |
{
|
| 84 |
case ROTATE : mId = object.rotate (mDyn4, mCenterDyn); break;
|
|
| 85 |
case QUATERNION : mId = object.quaternion(mDyn4, mCenterDyn); break;
|
|
| 86 |
case MOVE : mId = object.move (mDyn3) ; break;
|
|
| 87 |
case SCALE : mId = object.scale (mDyn3) ; break;
|
|
| 88 |
case SHEAR : mId = object.shear (mDyn3, mCenterDyn); break;
|
|
| 89 |
|
|
| 90 |
case DISTORT : mId = object.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 91 |
case DEFORM : mId = object.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 92 |
case SINK : mId = object.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 93 |
case PINCH : mId = object.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
| 94 |
case SWIRL : mId = object.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 95 |
case WAVE : mId = object.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
| 96 |
|
|
| 97 |
case ALPHA : mId = object.alpha (mDyn1, mRegionDyn, false); break;
|
|
| 98 |
case SMOOTH_ALPHA : mId = object.alpha (mDyn1, mRegionDyn, true ); break;
|
|
| 99 |
case CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
| 100 |
case SMOOTH_CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
| 101 |
case BRIGHTNESS : mId = object.brightness(mDyn1, mRegionDyn, false); break;
|
|
| 102 |
case SMOOTH_BRIGHTNESS: mId = object.brightness(mDyn1, mRegionDyn, true ); break;
|
|
| 103 |
case SATURATION : mId = object.saturation(mDyn1, mRegionDyn, false); break;
|
|
| 104 |
case SMOOTH_SATURATION: mId = object.saturation(mDyn1, mRegionDyn, true ); break;
|
|
| 105 |
case CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, false); break;
|
|
| 106 |
case SMOOTH_CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, true ); break;
|
|
| 84 |
case ROTATE : mId = queues.rotate (mDyn4, mCenterDyn); break;
|
|
| 85 |
case QUATERNION : mId = queues.quaternion(mDyn4, mCenterDyn); break;
|
|
| 86 |
case MOVE : mId = queues.move (mDyn3) ; break;
|
|
| 87 |
case SCALE : mId = queues.scale (mDyn3) ; break;
|
|
| 88 |
case SHEAR : mId = queues.shear (mDyn3, mCenterDyn); break;
|
|
| 89 |
|
|
| 90 |
case DISTORT : mId = queues.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 91 |
case DEFORM : mId = queues.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 92 |
case SINK : mId = queues.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 93 |
case PINCH : mId = queues.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
| 94 |
case SWIRL : mId = queues.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 95 |
case WAVE : mId = queues.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
| 96 |
|
|
| 97 |
case ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, false); break;
|
|
| 98 |
case SMOOTH_ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, true ); break;
|
|
| 99 |
case CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
| 100 |
case SMOOTH_CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
| 101 |
case BRIGHTNESS : mId = queues.brightness(mDyn1, mRegionDyn, false); break;
|
|
| 102 |
case SMOOTH_BRIGHTNESS: mId = queues.brightness(mDyn1, mRegionDyn, true ); break;
|
|
| 103 |
case SATURATION : mId = queues.saturation(mDyn1, mRegionDyn, false); break;
|
|
| 104 |
case SMOOTH_SATURATION: mId = queues.saturation(mDyn1, mRegionDyn, true ); break;
|
|
| 105 |
case CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, false); break;
|
|
| 106 |
case SMOOTH_CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, true ); break;
|
|
| 107 | 107 |
|
| 108 | 108 |
default: mId = -1; |
| 109 | 109 |
} |
| src/main/java/org/distorted/examples/flag/FlagRenderer.java | ||
|---|---|---|
| 27 | 27 |
import org.distorted.examples.R; |
| 28 | 28 |
import org.distorted.library.Distorted; |
| 29 | 29 |
import org.distorted.library.GridCubes; |
| 30 |
import org.distorted.library.DistortedObject; |
|
| 30 |
import org.distorted.library.DistortedEffectQueues; |
|
| 31 |
import org.distorted.library.DistortedTexture; |
|
| 31 | 32 |
import org.distorted.library.EffectTypes; |
| 32 | 33 |
import org.distorted.library.type.Dynamic; |
| 33 | 34 |
import org.distorted.library.type.Dynamic5D; |
| ... | ... | |
| 47 | 48 |
class FlagRenderer implements GLSurfaceView.Renderer |
| 48 | 49 |
{
|
| 49 | 50 |
private GLSurfaceView mView; |
| 50 |
private DistortedObject mObject; |
|
| 51 |
private DistortedEffectQueues mQueues; |
|
| 52 |
private DistortedTexture mTexture; |
|
| 51 | 53 |
private GridCubes mGrid; |
| 52 | 54 |
private int mObjWidth, mObjHeight; |
| 53 | 55 |
private DynamicQuat mQuatInt1, mQuatInt2; |
| ... | ... | |
| 63 | 65 |
{
|
| 64 | 66 |
mView = v; |
| 65 | 67 |
|
| 66 |
mGrid = new GridCubes(50,30,false); |
|
| 67 |
mObject = new DistortedObject(500,300,10); |
|
| 68 |
mQueues = new DistortedEffectQueues(); |
|
| 69 |
mGrid = new GridCubes(50,30,false); |
|
| 70 |
mTexture = new DistortedTexture(500,300,10); |
|
| 68 | 71 |
|
| 69 |
mObjWidth = mObject.getWidth();
|
|
| 70 |
mObjHeight= mObject.getHeight();
|
|
| 72 |
mObjWidth = mTexture.getWidth();
|
|
| 73 |
mObjHeight= mTexture.getHeight();
|
|
| 71 | 74 |
|
| 72 | 75 |
mWaveDyn = new Dynamic5D(1000,0.0f); |
| 73 | 76 |
mWaveSta1= new Static5D(0,0,-180,0,0); // all other values besides the |
| ... | ... | |
| 89 | 92 |
Static3D waveCenter = new Static3D(mObjWidth, mObjHeight/2, 0); // middle of the right edge |
| 90 | 93 |
Static4D waveRegion = new Static4D(0,0,mObjWidth,mObjWidth); |
| 91 | 94 |
|
| 92 |
mObject.wave(mWaveDyn, waveCenter, waveRegion);
|
|
| 95 |
mQueues.wave(mWaveDyn, waveCenter, waveRegion);
|
|
| 93 | 96 |
} |
| 94 | 97 |
|
| 95 | 98 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 136 | 139 |
public void onDrawFrame(GL10 glUnused) |
| 137 | 140 |
{
|
| 138 | 141 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
| 139 |
mObject.draw(System.currentTimeMillis(), mGrid);
|
|
| 142 |
mQueues.draw(System.currentTimeMillis(), mTexture, mGrid);
|
|
| 140 | 143 |
} |
| 141 | 144 |
|
| 142 | 145 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 145 | 148 |
{
|
| 146 | 149 |
mScreenMin = width<height ? width:height; |
| 147 | 150 |
|
| 148 |
mObject.abortEffects(EffectTypes.MATRIX);
|
|
| 151 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
| 149 | 152 |
float factor; |
| 150 | 153 |
|
| 151 | 154 |
if( width*mObjHeight > height*mObjWidth ) // screen is more 'horizontal' than the Object |
| ... | ... | |
| 157 | 160 |
factor = (0.8f*width)/mObjWidth; |
| 158 | 161 |
} |
| 159 | 162 |
|
| 160 |
mObject.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) );
|
|
| 161 |
mObject.scale(factor);
|
|
| 163 |
mQueues.move( new Static3D( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0) );
|
|
| 164 |
mQueues.scale(factor);
|
|
| 162 | 165 |
Static3D center = new Static3D(mObjWidth/2,mObjHeight/2, 0); |
| 163 | 166 |
|
| 164 |
mObject.quaternion(mQuatInt1, center);
|
|
| 165 |
mObject.quaternion(mQuatInt2, center);
|
|
| 167 |
mQueues.quaternion(mQuatInt1, center);
|
|
| 168 |
mQueues.quaternion(mQuatInt2, center);
|
|
| 166 | 169 |
|
| 167 | 170 |
Distorted.onSurfaceChanged(width, height); |
| 168 | 171 |
} |
| ... | ... | |
| 189 | 192 |
catch(IOException e) { }
|
| 190 | 193 |
} |
| 191 | 194 |
|
| 192 |
mObject.setTexture(bitmap);
|
|
| 195 |
mTexture.setTexture(bitmap);
|
|
| 193 | 196 |
|
| 194 | 197 |
try |
| 195 | 198 |
{
|
| src/main/java/org/distorted/examples/matrix3d/Matrix3DActivity.java | ||
|---|---|---|
| 220 | 220 |
{
|
| 221 | 221 |
switch(parent.getId()) |
| 222 | 222 |
{
|
| 223 |
case R.id.matrix3dspinner : mEffectAdd = pos;
|
|
| 224 |
break;
|
|
| 223 |
case R.id.matrix3dspinner: mEffectAdd = pos; |
|
| 224 |
break; |
|
| 225 | 225 |
} |
| 226 | 226 |
} |
| 227 | 227 |
|
| src/main/java/org/distorted/examples/matrix3d/Matrix3DEffect.java | ||
|---|---|---|
| 24 | 24 |
import android.widget.TextView; |
| 25 | 25 |
|
| 26 | 26 |
import org.distorted.examples.R; |
| 27 |
import org.distorted.library.DistortedObject;
|
|
| 27 |
import org.distorted.library.DistortedEffectQueues;
|
|
| 28 | 28 |
import org.distorted.library.EffectNames; |
| 29 | 29 |
import org.distorted.library.EffectTypes; |
| 30 | 30 |
import org.distorted.library.type.Dynamic1D; |
| ... | ... | |
| 77 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 78 | 78 |
// requires knowledge about effect nature |
| 79 | 79 |
|
| 80 |
void apply(DistortedObject object)
|
|
| 80 |
void apply(DistortedEffectQueues queues)
|
|
| 81 | 81 |
{
|
| 82 | 82 |
switch(mName) |
| 83 | 83 |
{
|
| 84 |
case ROTATE : mId = object.rotate (mDyn4, mCenterDyn); break;
|
|
| 85 |
case QUATERNION : mId = object.quaternion(mDyn4, mCenterDyn); break;
|
|
| 86 |
case MOVE : mId = object.move (mDyn3) ; break;
|
|
| 87 |
case SCALE : mId = object.scale (mDyn3) ; break;
|
|
| 88 |
case SHEAR : mId = object.shear (mDyn3, mCenterDyn); break;
|
|
| 89 |
|
|
| 90 |
case DISTORT : mId = object.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 91 |
case DEFORM : mId = object.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 92 |
case SINK : mId = object.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 93 |
case PINCH : mId = object.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
| 94 |
case SWIRL : mId = object.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 95 |
case WAVE : mId = object.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
| 96 |
|
|
| 97 |
case ALPHA : mId = object.alpha (mDyn1, mRegionDyn, false); break;
|
|
| 98 |
case SMOOTH_ALPHA : mId = object.alpha (mDyn1, mRegionDyn, true ); break;
|
|
| 99 |
case CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
| 100 |
case SMOOTH_CHROMA : mId = object.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
| 101 |
case BRIGHTNESS : mId = object.brightness(mDyn1, mRegionDyn, false); break;
|
|
| 102 |
case SMOOTH_BRIGHTNESS: mId = object.brightness(mDyn1, mRegionDyn, true ); break;
|
|
| 103 |
case SATURATION : mId = object.saturation(mDyn1, mRegionDyn, false); break;
|
|
| 104 |
case SMOOTH_SATURATION: mId = object.saturation(mDyn1, mRegionDyn, true ); break;
|
|
| 105 |
case CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, false); break;
|
|
| 106 |
case SMOOTH_CONTRAST : mId = object.contrast (mDyn1, mRegionDyn, true ); break;
|
|
| 84 |
case ROTATE : mId = queues.rotate (mDyn4, mCenterDyn); break;
|
|
| 85 |
case QUATERNION : mId = queues.quaternion(mDyn4, mCenterDyn); break;
|
|
| 86 |
case MOVE : mId = queues.move (mDyn3) ; break;
|
|
| 87 |
case SCALE : mId = queues.scale (mDyn3) ; break;
|
|
| 88 |
case SHEAR : mId = queues.shear (mDyn3, mCenterDyn); break;
|
|
| 89 |
|
|
| 90 |
case DISTORT : mId = queues.distort (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 91 |
case DEFORM : mId = queues.deform (mDyn3, mCenterDyn, mRegionDyn); break;
|
|
| 92 |
case SINK : mId = queues.sink (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 93 |
case PINCH : mId = queues.pinch (mDyn2, mCenterDyn, mRegionDyn); break;
|
|
| 94 |
case SWIRL : mId = queues.swirl (mDyn1, mCenterDyn, mRegionDyn); break;
|
|
| 95 |
case WAVE : mId = queues.wave (mDyn5, mCenterDyn, mRegionDyn); break;
|
|
| 96 |
|
|
| 97 |
case ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, false); break;
|
|
| 98 |
case SMOOTH_ALPHA : mId = queues.alpha (mDyn1, mRegionDyn, true ); break;
|
|
| 99 |
case CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, false); break;
|
|
| 100 |
case SMOOTH_CHROMA : mId = queues.chroma (mDyn1, mDyn3, mRegionDyn, true ); break;
|
|
| 101 |
case BRIGHTNESS : mId = queues.brightness(mDyn1, mRegionDyn, false); break;
|
|
| 102 |
case SMOOTH_BRIGHTNESS: mId = queues.brightness(mDyn1, mRegionDyn, true ); break;
|
|
| 103 |
case SATURATION : mId = queues.saturation(mDyn1, mRegionDyn, false); break;
|
|
| 104 |
case SMOOTH_SATURATION: mId = queues.saturation(mDyn1, mRegionDyn, true ); break;
|
|
| 105 |
case CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, false); break;
|
|
| 106 |
case SMOOTH_CONTRAST : mId = queues.contrast (mDyn1, mRegionDyn, true ); break;
|
|
| 107 | 107 |
|
| 108 | 108 |
default: mId = -1; |
| 109 | 109 |
} |
| src/main/java/org/distorted/examples/olimpic/OlimpicRenderer.java | ||
|---|---|---|
| 34 | 34 |
import org.distorted.library.type.Static1D; |
| 35 | 35 |
import org.distorted.library.Distorted; |
| 36 | 36 |
import org.distorted.library.GridFlat; |
| 37 |
import org.distorted.library.DistortedObject; |
|
| 37 |
import org.distorted.library.DistortedEffectQueues; |
|
| 38 |
import org.distorted.library.DistortedTexture; |
|
| 38 | 39 |
|
| 39 | 40 |
import android.graphics.Bitmap; |
| 40 | 41 |
import android.graphics.BitmapFactory; |
| ... | ... | |
| 51 | 52 |
|
| 52 | 53 |
private GLSurfaceView mView; |
| 53 | 54 |
private DistortedObjectTree mScreen; |
| 54 |
private DistortedObject mLeaf; |
|
| 55 |
private DistortedTexture mLeaf; |
|
| 56 |
|
|
| 57 |
private int mScreenW, mScreenH; |
|
| 55 | 58 |
|
| 56 | 59 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 57 | 60 |
|
| ... | ... | |
| 59 | 62 |
{
|
| 60 | 63 |
mView = v; |
| 61 | 64 |
|
| 62 |
mLeaf = new DistortedObject(LEAF_SIZE,LEAF_SIZE,1);
|
|
| 65 |
mLeaf = new DistortedTexture(LEAF_SIZE,LEAF_SIZE,1);
|
|
| 63 | 66 |
GridFlat grid = new GridFlat(1,1); |
| 67 |
DistortedEffectQueues queue = new DistortedEffectQueues(); |
|
| 68 |
|
|
| 69 |
mScreenW = 9*LEAF_SIZE; |
|
| 70 |
mScreenH = 9*LEAF_SIZE; |
|
| 64 | 71 |
|
| 65 |
mScreen = new DistortedObjectTree(new DistortedObject(9*LEAF_SIZE,9*LEAF_SIZE,1), grid);
|
|
| 72 |
mScreen = new DistortedObjectTree(new DistortedTexture(mScreenW,mScreenH,0), queue, grid);
|
|
| 66 | 73 |
|
| 67 | 74 |
Dynamic1D rot = new Dynamic1D(5000,0.0f); |
| 68 | 75 |
rot.setMode(Dynamic1D.MODE_JUMP); |
| ... | ... | |
| 72 | 79 |
DistortedObjectTree[] mCircleNode = new DistortedObjectTree[NUM_CIRCLES]; |
| 73 | 80 |
|
| 74 | 81 |
int[] colors = new int[] {0,0,1, 0,0,0, 1,0,0, 1,1,0, 0,1,0}; // blue, black, red, yellow, green
|
| 75 |
int[] positions = new int[] {0*LEAF_SIZE,2*LEAF_SIZE, 3*LEAF_SIZE,2*LEAF_SIZE, 6*LEAF_SIZE,2*LEAF_SIZE, 3*LEAF_SIZE/2,9*LEAF_SIZE/2, 9*LEAF_SIZE/2,9*LEAF_SIZE/2};
|
|
| 82 |
int[] positions = new int[] {0,2*LEAF_SIZE, 3*LEAF_SIZE,2*LEAF_SIZE, 6*LEAF_SIZE,2*LEAF_SIZE, 3*LEAF_SIZE/2,9*LEAF_SIZE/2, 9*LEAF_SIZE/2,9*LEAF_SIZE/2};
|
|
| 76 | 83 |
|
| 77 |
DistortedObject tmp; |
|
| 78 | 84 |
Static3D center = new Static3D(3*LEAF_SIZE/2, 3*LEAF_SIZE/2, 0); |
| 79 | 85 |
Static3D axis = new Static3D(0,0,1); |
| 80 | 86 |
Static3D moveVector = new Static3D(0,LEAF_SIZE,0); |
| ... | ... | |
| 83 | 89 |
{
|
| 84 | 90 |
if( i==0 ) |
| 85 | 91 |
{
|
| 86 |
mCircleNode[i] = new DistortedObjectTree(new DistortedObject(3*LEAF_SIZE,3*LEAF_SIZE,1), grid); |
|
| 92 |
queue = new DistortedEffectQueues(); |
|
| 93 |
mCircleNode[i] = new DistortedObjectTree(new DistortedTexture(3*LEAF_SIZE,3*LEAF_SIZE,1), queue, grid); |
|
| 87 | 94 |
|
| 88 | 95 |
for(int j=0; j<NUM_LEAVES; j++) |
| 89 | 96 |
{
|
| 90 |
tmp = new DistortedObject(mLeaf, Distorted.CLONE_BITMAP);
|
|
| 91 |
mCircleNode[i].attach(tmp,grid);
|
|
| 92 |
tmp.rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
|
|
| 93 |
tmp.move(moveVector);
|
|
| 97 |
queue = new DistortedEffectQueues();
|
|
| 98 |
mCircleNode[i].attach(mLeaf, queue, grid);
|
|
| 99 |
queue.rotate( new Static1D(j*(360/NUM_LEAVES)), axis, center );
|
|
| 100 |
queue.move(moveVector);
|
|
| 94 | 101 |
} |
| 95 | 102 |
} |
| 96 | 103 |
else |
| ... | ... | |
| 99 | 106 |
} |
| 100 | 107 |
|
| 101 | 108 |
mScreen.attach(mCircleNode[i]); |
| 102 |
tmp = mCircleNode[i].getObject();
|
|
| 103 |
tmp.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
|
|
| 104 |
tmp.rotate( rot, axis, center );
|
|
| 105 |
tmp.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
|
|
| 109 |
queue = mCircleNode[i].getQueues();
|
|
| 110 |
queue.move( new Static3D(positions[2*i], positions[2*i+1], 0) );
|
|
| 111 |
queue.rotate( rot, axis, center );
|
|
| 112 |
queue.chroma( new Static1D(0.5f), new Static3D(colors[3*i],colors[3*i+1], colors[3*i+2]) );
|
|
| 106 | 113 |
} |
| 107 | 114 |
} |
| 108 | 115 |
|
| ... | ... | |
| 118 | 125 |
|
| 119 | 126 |
public void onSurfaceChanged(GL10 glUnused, int width, int height) |
| 120 | 127 |
{
|
| 121 |
DistortedObject bmp = mScreen.getObject(); |
|
| 122 |
int bmpWidth = bmp.getWidth(); |
|
| 123 |
int bmpHeight = bmp.getHeight(); |
|
| 124 |
|
|
| 125 |
bmp.abortEffects(EffectTypes.MATRIX); |
|
| 128 |
DistortedEffectQueues queues = mScreen.getQueues(); |
|
| 129 |
|
|
| 130 |
queues.abortEffects(EffectTypes.MATRIX); |
|
| 126 | 131 |
|
| 127 |
if( (float)bmpHeight/bmpWidth > (float)height/width )
|
|
| 132 |
if( (float)mScreenH/mScreenW > (float)height/width )
|
|
| 128 | 133 |
{
|
| 129 |
int w = (height*bmpWidth)/bmpHeight;
|
|
| 130 |
float factor = (float)height/bmpHeight;
|
|
| 134 |
int w = (height*mScreenW)/mScreenH;
|
|
| 135 |
float factor = (float)height/mScreenH;
|
|
| 131 | 136 |
|
| 132 |
bmp.move( new Static3D((width-w)/2 ,0, 0) );
|
|
| 133 |
bmp.scale( factor );
|
|
| 137 |
queues.move( new Static3D((width-w)/2 ,0, 0) );
|
|
| 138 |
queues.scale( factor );
|
|
| 134 | 139 |
} |
| 135 | 140 |
else |
| 136 | 141 |
{
|
| 137 |
int h = (width*bmpHeight)/bmpWidth;
|
|
| 138 |
float factor = (float)width/bmpWidth;
|
|
| 142 |
int h = (width*mScreenH)/mScreenW;
|
|
| 143 |
float factor = (float)width/mScreenW;
|
|
| 139 | 144 |
|
| 140 |
bmp.move( new Static3D(0,(height-h)/2,0) );
|
|
| 141 |
bmp.scale( factor );
|
|
| 145 |
queues.move( new Static3D(0,(height-h)/2,0) );
|
|
| 146 |
queues.scale( factor );
|
|
| 142 | 147 |
} |
| 143 | 148 |
|
| 144 | 149 |
Distorted.onSurfaceChanged(width, height); |
| src/main/java/org/distorted/examples/save/SaveRenderer.java | ||
|---|---|---|
| 31 | 31 |
import org.distorted.examples.R; |
| 32 | 32 |
|
| 33 | 33 |
import org.distorted.library.Distorted; |
| 34 |
import org.distorted.library.DistortedObject; |
|
| 34 |
import org.distorted.library.DistortedEffectQueues; |
|
| 35 |
import org.distorted.library.DistortedTexture; |
|
| 35 | 36 |
import org.distorted.library.GridFlat; |
| 36 | 37 |
import org.distorted.library.DistortedFramebuffer; |
| 37 | 38 |
import org.distorted.library.EffectTypes; |
| ... | ... | |
| 52 | 53 |
class SaveRenderer implements GLSurfaceView.Renderer |
| 53 | 54 |
{
|
| 54 | 55 |
private GLSurfaceView mView; |
| 55 |
private DistortedObject mGirl; |
|
| 56 |
private DistortedTexture mGirl; |
|
| 57 |
private DistortedEffectQueues mQueues; |
|
| 56 | 58 |
private GridFlat mGrid; |
| 57 | 59 |
private DistortedFramebuffer mOffscreen; |
| 58 |
private Static3D pLeft, pRight; |
|
| 59 |
private Static4D sinkRegion; |
|
| 60 |
private Dynamic1D diSink; |
|
| 61 | 60 |
private Static1D s0; |
| 62 | 61 |
private Dynamic3D mScaleDyn; |
| 63 | 62 |
private Static3D mScaleFactor; |
| ... | ... | |
| 77 | 76 |
|
| 78 | 77 |
boobsSink = 1.0f; |
| 79 | 78 |
|
| 80 |
pLeft = new Static3D(132, 264, 0); |
|
| 81 |
pRight= new Static3D(247, 264, 0); |
|
| 79 |
Static3D pLeft = new Static3D(132, 264, 0);
|
|
| 80 |
Static3D pRight= new Static3D(247, 264, 0);
|
|
| 82 | 81 |
|
| 83 |
sinkRegion = new Static4D(0,0,60,60); |
|
| 82 |
Static4D sinkRegion = new Static4D(0,0,60,60);
|
|
| 84 | 83 |
|
| 85 | 84 |
s0 = new Static1D(boobsSink); |
| 86 | 85 |
|
| 87 |
diSink = new Dynamic1D(); |
|
| 86 |
Dynamic1D diSink = new Dynamic1D();
|
|
| 88 | 87 |
diSink.add(s0); |
| 89 | 88 |
|
| 90 | 89 |
mScale = 1.0f; |
| 91 | 90 |
mScaleDyn = new Dynamic3D(); |
| 92 | 91 |
mScaleFactor = new Static3D(mScale,mScale,1.0f); |
| 93 | 92 |
mScaleDyn.add(mScaleFactor); |
| 93 |
|
|
| 94 |
mQueues = new DistortedEffectQueues(); |
|
| 95 |
mQueues.sink( diSink, pLeft , sinkRegion); |
|
| 96 |
mQueues.sink( diSink, pRight, sinkRegion); |
|
| 94 | 97 |
} |
| 95 | 98 |
|
| 96 | 99 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 145 | 148 |
{
|
| 146 | 149 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
| 147 | 150 |
|
| 151 |
long time = System.currentTimeMillis(); |
|
| 152 |
|
|
| 148 | 153 |
if( isSaving ) // render to an offscreen buffer and read pixels |
| 149 | 154 |
{
|
| 150 |
mGirl.abortEffects(EffectTypes.MATRIX);
|
|
| 151 |
mGirl.scale(mScaleFactor);
|
|
| 152 |
mGirl.draw(System.currentTimeMillis(), mGrid, mOffscreen);
|
|
| 155 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
| 156 |
mQueues.scale(mScaleFactor);
|
|
| 157 |
mQueues.draw(time, mGirl, mGrid, mOffscreen);
|
|
| 153 | 158 |
applyMatrixEffects(scrWidth,scrHeight); |
| 154 | 159 |
|
| 155 | 160 |
int fW =(int)(mScale*bmpWidth); |
| ... | ... | |
| 164 | 169 |
isSaving = false; |
| 165 | 170 |
} |
| 166 | 171 |
|
| 167 |
mGirl.draw(System.currentTimeMillis(), mGrid);
|
|
| 172 |
mQueues.draw(time, mGirl, mGrid);
|
|
| 168 | 173 |
} |
| 169 | 174 |
|
| 170 | 175 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 171 | 176 |
|
| 172 | 177 |
private void applyMatrixEffects(int width, int height) |
| 173 | 178 |
{
|
| 174 |
mGirl.abortEffects(EffectTypes.MATRIX);
|
|
| 179 |
mQueues.abortEffects(EffectTypes.MATRIX);
|
|
| 175 | 180 |
|
| 176 | 181 |
if( (float)bmpHeight/bmpWidth > (float)height/width ) |
| 177 | 182 |
{
|
| 178 | 183 |
int w = (height*bmpWidth)/bmpHeight; |
| 179 | 184 |
float factor = (float)height/bmpHeight; |
| 180 | 185 |
|
| 181 |
mGirl.move( new Static3D((width-w)/2,0,0) );
|
|
| 182 |
mGirl.scale(factor);
|
|
| 186 |
mQueues.move( new Static3D((width-w)/2,0,0) );
|
|
| 187 |
mQueues.scale(factor);
|
|
| 183 | 188 |
} |
| 184 | 189 |
else |
| 185 | 190 |
{
|
| 186 | 191 |
int h = (width*bmpHeight)/bmpWidth; |
| 187 | 192 |
float factor = (float)width/bmpWidth; |
| 188 | 193 |
|
| 189 |
mGirl.move( new Static3D(0,(height-h)/2,0) );
|
|
| 190 |
mGirl.scale(factor);
|
|
| 194 |
mQueues.move( new Static3D(0,(height-h)/2,0) );
|
|
| 195 |
mQueues.scale(factor);
|
|
| 191 | 196 |
} |
| 192 | 197 |
|
| 193 |
mGirl.scale(mScaleDyn);
|
|
| 198 |
mQueues.scale(mScaleDyn);
|
|
| 194 | 199 |
} |
| 195 | 200 |
|
| 196 | 201 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 229 | 234 |
bmpWidth = bitmap.getWidth(); |
| 230 | 235 |
|
| 231 | 236 |
mGrid = new GridFlat(30,30*bmpHeight/bmpWidth); |
| 232 |
mGirl = new DistortedObject(bmpWidth,bmpHeight,1);
|
|
| 237 |
mGirl = new DistortedTexture(bmpWidth,bmpHeight,0);
|
|
| 233 | 238 |
mGirl.setTexture(bitmap); |
| 234 | 239 |
|
| 235 |
mGirl.sink( diSink, pLeft , sinkRegion); |
|
| 236 |
mGirl.sink( diSink, pRight, sinkRegion); |
|
| 237 |
|
|
| 238 | 240 |
mOffscreen = new DistortedFramebuffer(bmpWidth,bmpHeight); |
| 239 | 241 |
|
| 240 | 242 |
try |
| src/main/java/org/distorted/examples/wind/WindEffectsManager.java | ||
|---|---|---|
| 21 | 21 |
|
| 22 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 23 | 23 |
|
| 24 |
import org.distorted.library.DistortedObject; |
|
| 24 |
import org.distorted.library.DistortedEffectQueues; |
|
| 25 |
import org.distorted.library.DistortedTexture; |
|
| 25 | 26 |
import org.distorted.library.type.Dynamic; |
| 26 | 27 |
import org.distorted.library.type.Dynamic3D; |
| 27 | 28 |
import org.distorted.library.type.Dynamic5D; |
| ... | ... | |
| 47 | 48 |
|
| 48 | 49 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 49 | 50 |
|
| 50 |
WindEffectsManager(DistortedObject obj)
|
|
| 51 |
WindEffectsManager(DistortedTexture texture)
|
|
| 51 | 52 |
{
|
| 52 |
mHeight = obj.getHeight();
|
|
| 53 |
mWidth = obj.getWidth();
|
|
| 53 |
mHeight = texture.getHeight();
|
|
| 54 |
mWidth = texture.getWidth();
|
|
| 54 | 55 |
|
| 55 | 56 |
shearFactor = new Static3D(0,0,0); |
| 56 | 57 |
shearDynamic= new Dynamic3D(); |
| ... | ... | |
| 89 | 90 |
|
| 90 | 91 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 91 | 92 |
|
| 92 |
synchronized void apply(DistortedObject obj, int wind)
|
|
| 93 |
synchronized void apply(DistortedEffectQueues queues, int wind)
|
|
| 93 | 94 |
{
|
| 94 | 95 |
Static3D midLeft = new Static3D(0,mHeight/2,0); |
| 95 | 96 |
Static3D midRight = new Static3D(mWidth,mHeight/2,0); |
| ... | ... | |
| 97 | 98 |
|
| 98 | 99 |
setWind(wind); |
| 99 | 100 |
|
| 100 |
obj.shear(shearDynamic,midLeft);
|
|
| 101 |
obj.scale(scaleDynamic);
|
|
| 102 |
obj.deform(deformForce,midRight);
|
|
| 103 |
obj.wave(windDynamic1, midRight, windRegion);
|
|
| 104 |
obj.wave(windDynamic2, midRight, windRegion);
|
|
| 105 |
obj.wave(windDynamic3, midRight, windRegion);
|
|
| 101 |
queues.shear(shearDynamic,midLeft);
|
|
| 102 |
queues.scale(scaleDynamic);
|
|
| 103 |
queues.deform(deformForce,midRight);
|
|
| 104 |
queues.wave(windDynamic1, midRight, windRegion);
|
|
| 105 |
queues.wave(windDynamic2, midRight, windRegion);
|
|
| 106 |
queues.wave(windDynamic3, midRight, windRegion);
|
|
| 106 | 107 |
} |
| 107 | 108 |
|
| 108 | 109 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/examples/wind/WindRenderer.java | ||
|---|---|---|
| 27 | 27 |
import org.distorted.examples.R; |
| 28 | 28 |
import org.distorted.library.Distorted; |
| 29 | 29 |
import org.distorted.library.GridCubes; |
| 30 |
import org.distorted.library.DistortedObject; |
|
| 30 |
import org.distorted.library.DistortedEffectQueues; |
|
| 31 |
import org.distorted.library.DistortedTexture; |
|
| 31 | 32 |
import org.distorted.library.type.Static1D; |
| 32 | 33 |
import org.distorted.library.type.Static3D; |
| 33 | 34 |
|
| ... | ... | |
| 42 | 43 |
class WindRenderer implements GLSurfaceView.Renderer |
| 43 | 44 |
{
|
| 44 | 45 |
private GLSurfaceView mView; |
| 45 |
private DistortedObject mObject; |
|
| 46 |
private DistortedEffectQueues mQueues; |
|
| 47 |
private DistortedTexture mTexture; |
|
| 46 | 48 |
private GridCubes mGrid; |
| 47 | 49 |
private WindEffectsManager mEffects; |
| 48 | 50 |
private int mObjWidth, mObjHeight; |
| ... | ... | |
| 55 | 57 |
mView = view; |
| 56 | 58 |
|
| 57 | 59 |
mGrid = new GridCubes(50,30,false); |
| 58 |
mObject = new DistortedObject(50,30,1); |
|
| 59 |
mEffects = new WindEffectsManager(mObject); |
|
| 60 |
mQueues = new DistortedEffectQueues(); |
|
| 61 |
mTexture = new DistortedTexture(50,30,1); |
|
| 62 |
mEffects = new WindEffectsManager(mTexture); |
|
| 60 | 63 |
|
| 61 |
mObjWidth = mObject.getWidth();
|
|
| 62 |
mObjHeight= mObject.getHeight();
|
|
| 64 |
mObjWidth = mTexture.getWidth();
|
|
| 65 |
mObjHeight= mTexture.getHeight();
|
|
| 63 | 66 |
} |
| 64 | 67 |
|
| 65 | 68 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 75 | 78 |
public void onDrawFrame(GL10 glUnused) |
| 76 | 79 |
{
|
| 77 | 80 |
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); |
| 78 |
mObject.draw(System.currentTimeMillis(),mGrid);
|
|
| 81 |
mQueues.draw(System.currentTimeMillis(),mTexture, mGrid);
|
|
| 79 | 82 |
} |
| 80 | 83 |
|
| 81 | 84 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 82 | 85 |
|
| 83 | 86 |
public void onSurfaceChanged(GL10 glUnused, int width, int height) |
| 84 | 87 |
{
|
| 85 |
mObject.abortAllEffects();
|
|
| 88 |
mQueues.abortAllEffects();
|
|
| 86 | 89 |
|
| 87 | 90 |
float factor = ( (float)(width<height? width:height) )/(mObjHeight + 1.4f*mObjWidth); |
| 88 | 91 |
|
| 89 |
mObject.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
|
|
| 90 |
mObject.scale(factor);
|
|
| 92 |
mQueues.move( new Static3D( factor*mObjHeight*0.58f , factor*mObjHeight*0.08f , 0) );
|
|
| 93 |
mQueues.scale(factor);
|
|
| 91 | 94 |
|
| 92 | 95 |
Static1D angle = new Static1D(-45); |
| 93 | 96 |
Static3D axis = new Static3D(0,0,1); |
| 94 | 97 |
Static3D center= new Static3D(0,mObjHeight/2,0); |
| 95 | 98 |
|
| 96 |
mObject.rotate(angle, axis, center);
|
|
| 99 |
mQueues.rotate(angle, axis, center);
|
|
| 97 | 100 |
|
| 98 |
mEffects.apply(mObject, mWind);
|
|
| 101 |
mEffects.apply(mQueues,mWind);
|
|
| 99 | 102 |
|
| 100 | 103 |
Distorted.onSurfaceChanged(width, height); |
| 101 | 104 |
} |
| ... | ... | |
| 122 | 125 |
catch(IOException e) { }
|
| 123 | 126 |
} |
| 124 | 127 |
|
| 125 |
mObject.setTexture(bitmap);
|
|
| 128 |
mTexture.setTexture(bitmap);
|
|
| 126 | 129 |
|
| 127 | 130 |
try |
| 128 | 131 |
{
|
Also available in: Unified diff
Beginnings of split of DistortedObject into two separate classes: DistortedEffectQueues and DistortedTexture.
Still does not compile, but pushing already.