Revision 0dd98279
Added by Leszek Koltunski over 8 years ago
| src/main/java/org/distorted/library/effect/FragmentEffect.java | ||
|---|---|---|
| 21 | 21 |
|
| 22 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 23 | 23 |
// FRAGMENT EFFECTS |
| 24 |
// 8 Uniforms: 4-per effect interpolated values, 4 dimensional Region. |
|
| 24 |
|
|
| 25 | 25 |
|
| 26 | 26 |
public abstract class FragmentEffect extends Effect |
| 27 | 27 |
{
|
| 28 |
public static final int NUM_UNIFORMS = 8; |
|
| 28 |
public static final int NUM_UNIFORMS = 8; // 4-per effect interpolated values, 4 dimensional Region.
|
|
| 29 | 29 |
|
| 30 | 30 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 31 | 31 |
|
| src/main/java/org/distorted/library/effect/MatrixEffect.java | ||
|---|---|---|
| 19 | 19 |
|
| 20 | 20 |
package org.distorted.library.effect; |
| 21 | 21 |
|
| 22 |
import org.distorted.library.type.*; |
|
| 23 |
|
|
| 24 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 25 | 23 |
// MATRIX EFFECTS. |
| 26 |
// 7 Uniforms: 4 per-effect interpolated values + 3 dimensional center. |
|
| 27 | 24 |
|
| 28 | 25 |
public abstract class MatrixEffect extends Effect |
| 29 | 26 |
{
|
| 30 |
public static final int NUM_UNIFORMS = 7; |
|
| 31 |
|
|
| 32 |
Dynamic mDynamic0; |
|
| 33 |
Static mStatic0 , mStatic1; |
|
| 34 |
Dynamic3D mDynamicCenter; |
|
| 35 |
Static3D mStaticCenter; |
|
| 27 |
public static final int NUM_UNIFORMS = 7; // 4 per-effect interpolated values + 3 dimensional center. |
|
| 36 | 28 |
|
| 37 | 29 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 38 | 30 |
|
| src/main/java/org/distorted/library/effect/MatrixEffectMove.java | ||
|---|---|---|
| 27 | 27 |
|
| 28 | 28 |
public class MatrixEffectMove extends MatrixEffect |
| 29 | 29 |
{
|
| 30 |
private Data3D mVector; |
|
| 31 |
|
|
| 30 | 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 31 | 33 |
/** |
| 32 | 34 |
* Moves the Object by a (possibly changing in time) vector. |
| ... | ... | |
| 37 | 39 |
public MatrixEffectMove(Data3D vector) |
| 38 | 40 |
{
|
| 39 | 41 |
super(EffectName.MOVE); |
| 40 |
|
|
| 41 |
if( vector instanceof Static3D) |
|
| 42 |
{
|
|
| 43 |
mStatic0 = (Static3D)vector; |
|
| 44 |
} |
|
| 45 |
else if ( vector instanceof Dynamic3D ) |
|
| 46 |
{
|
|
| 47 |
mDynamic0 = (Dynamic3D)vector; |
|
| 48 |
} |
|
| 42 |
mVector = vector; |
|
| 49 | 43 |
} |
| 50 | 44 |
|
| 51 | 45 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 52 | 46 |
|
| 53 | 47 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 54 | 48 |
{
|
| 55 |
if( mDynamic0!=null ) |
|
| 56 |
{
|
|
| 57 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 58 |
} |
|
| 59 |
else |
|
| 60 |
{
|
|
| 61 |
uniforms[index ] = ((Static3D)mStatic0).getX(); |
|
| 62 |
uniforms[index+1] = ((Static3D)mStatic0).getY(); |
|
| 63 |
uniforms[index+2] = ((Static3D)mStatic0).getZ(); |
|
| 64 |
|
|
| 65 |
return false; |
|
| 66 |
} |
|
| 49 |
return mVector.get(uniforms,index,currentDuration,step); |
|
| 67 | 50 |
} |
| 68 | 51 |
} |
| src/main/java/org/distorted/library/effect/MatrixEffectQuaternion.java | ||
|---|---|---|
| 30 | 30 |
|
| 31 | 31 |
public class MatrixEffectQuaternion extends MatrixEffect |
| 32 | 32 |
{
|
| 33 |
private Data4D mQuaternion; |
|
| 34 |
private Data3D mCenter; |
|
| 35 |
|
|
| 33 | 36 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 34 | 37 |
/** |
| 35 | 38 |
* Rotates the Object by quaternion. |
| ... | ... | |
| 40 | 43 |
public MatrixEffectQuaternion(Data4D quaternion, Data3D center ) |
| 41 | 44 |
{
|
| 42 | 45 |
super(EffectName.QUATERNION); |
| 43 |
|
|
| 44 |
if( quaternion instanceof Static4D) |
|
| 45 |
{
|
|
| 46 |
mStatic0 = (Static4D)quaternion; |
|
| 47 |
} |
|
| 48 |
else if( quaternion instanceof DynamicQuat) |
|
| 49 |
{
|
|
| 50 |
mDynamic0 = (DynamicQuat)quaternion; |
|
| 51 |
} |
|
| 52 |
|
|
| 53 |
if( center instanceof Static3D) |
|
| 54 |
{
|
|
| 55 |
mStaticCenter = (Static3D)center; |
|
| 56 |
} |
|
| 57 |
else if( center instanceof Dynamic3D) |
|
| 58 |
{
|
|
| 59 |
mDynamicCenter = (Dynamic3D)center; |
|
| 60 |
} |
|
| 46 |
mQuaternion = quaternion; |
|
| 47 |
mCenter = center; |
|
| 61 | 48 |
} |
| 62 | 49 |
|
| 63 | 50 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 64 | 51 |
|
| 65 | 52 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 66 | 53 |
{
|
| 67 |
if( mDynamicCenter!=null ) |
|
| 68 |
{
|
|
| 69 |
mDynamicCenter.get(uniforms,index+4,currentDuration,step); |
|
| 70 |
} |
|
| 71 |
else |
|
| 72 |
{
|
|
| 73 |
uniforms[index+4] = mStaticCenter.getX(); |
|
| 74 |
uniforms[index+5] = mStaticCenter.getY(); |
|
| 75 |
uniforms[index+6] = mStaticCenter.getZ(); |
|
| 76 |
} |
|
| 77 |
|
|
| 78 |
if( mDynamic0!=null ) |
|
| 79 |
{
|
|
| 80 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 81 |
} |
|
| 82 |
else |
|
| 83 |
{
|
|
| 84 |
uniforms[index ] = ((Static4D)mStatic0).getX(); |
|
| 85 |
uniforms[index+1] = ((Static4D)mStatic0).getY(); |
|
| 86 |
uniforms[index+2] = ((Static4D)mStatic0).getZ(); |
|
| 87 |
uniforms[index+3] = ((Static4D)mStatic0).getW(); |
|
| 88 |
|
|
| 89 |
return false; |
|
| 90 |
} |
|
| 54 |
mCenter.get(uniforms,index+4,currentDuration,step); |
|
| 55 |
return mQuaternion.get(uniforms,index,currentDuration,step); |
|
| 91 | 56 |
} |
| 92 | 57 |
} |
| src/main/java/org/distorted/library/effect/MatrixEffectRotate.java | ||
|---|---|---|
| 33 | 33 |
|
| 34 | 34 |
public class MatrixEffectRotate extends MatrixEffect |
| 35 | 35 |
{
|
| 36 |
private Data1D mAngle; |
|
| 37 |
private Data3D mAxis, mCenter; |
|
| 38 |
|
|
| 36 | 39 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 37 | 40 |
/** |
| 38 | 41 |
* Rotates the Object by 'angle' degrees around the center. |
| ... | ... | |
| 42 | 45 |
* @param axis Axis of rotation |
| 43 | 46 |
* @param center Coordinates of the Point we are rotating around. |
| 44 | 47 |
*/ |
| 45 |
public MatrixEffectRotate(Data1D angle, Static3D axis, Data3D center) |
|
| 46 |
{
|
|
| 47 |
super(EffectName.ROTATE); |
|
| 48 |
|
|
| 49 |
if( angle instanceof Static1D ) |
|
| 50 |
{
|
|
| 51 |
mStatic0 = (Static1D)angle; |
|
| 52 |
} |
|
| 53 |
else if( angle instanceof Dynamic1D ) |
|
| 54 |
{
|
|
| 55 |
mDynamic0 = (Dynamic1D)angle; |
|
| 56 |
} |
|
| 57 |
|
|
| 58 |
mStatic1 = axis; |
|
| 59 |
|
|
| 60 |
if( center instanceof Static3D) |
|
| 61 |
{
|
|
| 62 |
mStaticCenter = (Static3D)center; |
|
| 63 |
} |
|
| 64 |
else if( center instanceof Dynamic3D ) |
|
| 65 |
{
|
|
| 66 |
mDynamicCenter = (Dynamic3D)center; |
|
| 67 |
} |
|
| 68 |
} |
|
| 69 |
|
|
| 70 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 71 |
/** |
|
| 72 |
* Rotates the Object by 'angle' degrees around the center. |
|
| 73 |
* Here both angle and axis can dynamically change. |
|
| 74 |
* |
|
| 75 |
* @param angleaxis Combined 4-tuple representing the (angle,axisX,axisY,axisZ). |
|
| 76 |
* @param center Coordinates of the Point we are rotating around. |
|
| 77 |
*/ |
|
| 78 |
public MatrixEffectRotate(Data4D angleaxis, Data3D center) |
|
| 48 |
public MatrixEffectRotate(Data1D angle, Data3D axis, Data3D center) |
|
| 79 | 49 |
{
|
| 80 | 50 |
super(EffectName.ROTATE); |
| 81 |
|
|
| 82 |
if( angleaxis instanceof Static4D) |
|
| 83 |
{
|
|
| 84 |
mStatic0 = (Static4D)angleaxis; |
|
| 85 |
} |
|
| 86 |
else if( angleaxis instanceof Dynamic4D) |
|
| 87 |
{
|
|
| 88 |
mDynamic0 = (Dynamic4D)angleaxis; |
|
| 89 |
} |
|
| 90 |
|
|
| 91 |
if( center instanceof Static3D) |
|
| 92 |
{
|
|
| 93 |
mStaticCenter = (Static3D)center; |
|
| 94 |
} |
|
| 95 |
else if( center instanceof Dynamic3D ) |
|
| 96 |
{
|
|
| 97 |
mDynamicCenter = (Dynamic3D)center; |
|
| 98 |
} |
|
| 51 |
mAngle = angle; |
|
| 52 |
mAxis = axis; |
|
| 53 |
mCenter = center; |
|
| 99 | 54 |
} |
| 100 | 55 |
|
| 101 | 56 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 102 | 57 |
|
| 103 | 58 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 104 | 59 |
{
|
| 105 |
if( mDynamicCenter!=null ) |
|
| 106 |
{
|
|
| 107 |
mDynamicCenter.get(uniforms,index+4,currentDuration,step); |
|
| 108 |
} |
|
| 109 |
else |
|
| 110 |
{
|
|
| 111 |
uniforms[index+4] = mStaticCenter.getX(); |
|
| 112 |
uniforms[index+5] = mStaticCenter.getY(); |
|
| 113 |
uniforms[index+6] = mStaticCenter.getZ(); |
|
| 114 |
} |
|
| 115 |
|
|
| 116 |
if( mStatic1 != null ) |
|
| 117 |
{
|
|
| 118 |
uniforms[index+1] = ((Static3D)mStatic1).getX(); |
|
| 119 |
uniforms[index+2] = ((Static3D)mStatic1).getY(); |
|
| 120 |
uniforms[index+3] = ((Static3D)mStatic1).getZ(); |
|
| 121 |
} |
|
| 122 |
|
|
| 123 |
if( mDynamic0!=null ) |
|
| 124 |
{
|
|
| 125 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 126 |
} |
|
| 127 |
else |
|
| 128 |
{
|
|
| 129 |
if( mStatic1 != null ) |
|
| 130 |
{
|
|
| 131 |
uniforms[index ] = ((Static1D)mStatic0).getX(); |
|
| 132 |
} |
|
| 133 |
else |
|
| 134 |
{
|
|
| 135 |
uniforms[index ] = ((Static4D)mStatic0).getX(); |
|
| 136 |
uniforms[index+1] = ((Static4D)mStatic0).getY(); |
|
| 137 |
uniforms[index+2] = ((Static4D)mStatic0).getZ(); |
|
| 138 |
uniforms[index+3] = ((Static4D)mStatic0).getW(); |
|
| 139 |
} |
|
| 140 |
|
|
| 141 |
return false; |
|
| 142 |
} |
|
| 60 |
mCenter.get(uniforms,index+4,currentDuration,step); |
|
| 61 |
mAxis.get(uniforms,index+1,currentDuration,step); |
|
| 62 |
return mAngle.get(uniforms,index,currentDuration,step); |
|
| 143 | 63 |
} |
| 144 | 64 |
} |
| src/main/java/org/distorted/library/effect/MatrixEffectScale.java | ||
|---|---|---|
| 27 | 27 |
|
| 28 | 28 |
public class MatrixEffectScale extends MatrixEffect |
| 29 | 29 |
{
|
| 30 |
private Data3D mScale; |
|
| 31 |
|
|
| 30 | 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 31 | 33 |
/** |
| 32 | 34 |
* Scales the Object by (possibly changing in time) 3D scale factors. |
| ... | ... | |
| 37 | 39 |
public MatrixEffectScale(Data3D scale) |
| 38 | 40 |
{
|
| 39 | 41 |
super(EffectName.SCALE); |
| 40 |
|
|
| 41 |
if( scale instanceof Static3D) |
|
| 42 |
{
|
|
| 43 |
mStatic0 = (Static3D)scale; |
|
| 44 |
} |
|
| 45 |
else if ( scale instanceof Dynamic3D) |
|
| 46 |
{
|
|
| 47 |
mDynamic0 = (Dynamic3D)scale; |
|
| 48 |
} |
|
| 42 |
mScale = scale; |
|
| 49 | 43 |
} |
| 50 | 44 |
|
| 51 | 45 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 57 | 51 |
public MatrixEffectScale(float scale) |
| 58 | 52 |
{
|
| 59 | 53 |
super(EffectName.SCALE); |
| 60 |
|
|
| 61 |
mStatic0 = new Static3D(scale,scale,scale); |
|
| 54 |
mScale = new Static3D(scale,scale,scale); |
|
| 62 | 55 |
} |
| 63 | 56 |
|
| 64 | 57 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 65 | 58 |
|
| 66 | 59 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 67 | 60 |
{
|
| 68 |
if( mDynamic0!=null ) |
|
| 69 |
{
|
|
| 70 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 71 |
} |
|
| 72 |
else |
|
| 73 |
{
|
|
| 74 |
uniforms[index ] = ((Static3D)mStatic0).getX(); |
|
| 75 |
uniforms[index+1] = ((Static3D)mStatic0).getY(); |
|
| 76 |
uniforms[index+2] = ((Static3D)mStatic0).getZ(); |
|
| 77 |
|
|
| 78 |
return false; |
|
| 79 |
} |
|
| 61 |
return mScale.get(uniforms,index,currentDuration,step); |
|
| 80 | 62 |
} |
| 81 | 63 |
} |
| src/main/java/org/distorted/library/effect/MatrixEffectShear.java | ||
|---|---|---|
| 27 | 27 |
|
| 28 | 28 |
public class MatrixEffectShear extends MatrixEffect |
| 29 | 29 |
{
|
| 30 |
private Data3D mShear, mCenter; |
|
| 31 |
|
|
| 30 | 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 31 | 33 |
/** |
| 32 | 34 |
* Shears the Object. |
| ... | ... | |
| 40 | 42 |
public MatrixEffectShear(Data3D shear, Data3D center) |
| 41 | 43 |
{
|
| 42 | 44 |
super(EffectName.SHEAR); |
| 43 |
|
|
| 44 |
if( shear instanceof Static3D) |
|
| 45 |
{
|
|
| 46 |
mStatic0 = (Static3D)shear; |
|
| 47 |
} |
|
| 48 |
else if ( shear instanceof Dynamic3D) |
|
| 49 |
{
|
|
| 50 |
mDynamic0 = (Dynamic3D)shear; |
|
| 51 |
} |
|
| 52 |
|
|
| 53 |
if( center instanceof Static3D) |
|
| 54 |
{
|
|
| 55 |
mStaticCenter = (Static3D)center; |
|
| 56 |
} |
|
| 57 |
else if( center instanceof Dynamic3D ) |
|
| 58 |
{
|
|
| 59 |
mDynamicCenter = (Dynamic3D)center; |
|
| 60 |
} |
|
| 45 |
mShear = shear; |
|
| 46 |
mCenter = center; |
|
| 61 | 47 |
} |
| 62 | 48 |
|
| 63 | 49 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 64 | 50 |
|
| 65 | 51 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 66 | 52 |
{
|
| 67 |
if( mDynamicCenter!=null ) |
|
| 68 |
{
|
|
| 69 |
mDynamicCenter.get(uniforms,index+4,currentDuration,step); |
|
| 70 |
} |
|
| 71 |
else |
|
| 72 |
{
|
|
| 73 |
uniforms[index+4] = mStaticCenter.getX(); |
|
| 74 |
uniforms[index+5] = mStaticCenter.getY(); |
|
| 75 |
uniforms[index+6] = mStaticCenter.getZ(); |
|
| 76 |
} |
|
| 77 |
|
|
| 78 |
if( mDynamic0!=null ) |
|
| 79 |
{
|
|
| 80 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 81 |
} |
|
| 82 |
else |
|
| 83 |
{
|
|
| 84 |
uniforms[index ] = ((Static3D)mStatic0).getX(); |
|
| 85 |
uniforms[index+1] = ((Static3D)mStatic0).getY(); |
|
| 86 |
uniforms[index+2] = ((Static3D)mStatic0).getZ(); |
|
| 87 |
|
|
| 88 |
return false; |
|
| 89 |
} |
|
| 53 |
mCenter.get(uniforms,index+4,currentDuration,step); |
|
| 54 |
return mShear.get(uniforms,index,currentDuration,step); |
|
| 90 | 55 |
} |
| 91 | 56 |
} |
| src/main/java/org/distorted/library/effect/PostprocessEffect.java | ||
|---|---|---|
| 19 | 19 |
|
| 20 | 20 |
package org.distorted.library.effect; |
| 21 | 21 |
|
| 22 |
import org.distorted.library.type.Dynamic; |
|
| 23 |
import org.distorted.library.type.Static; |
|
| 24 |
|
|
| 25 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 26 | 23 |
// POSTPROCESSING EFFECTS. |
| 27 |
// 5 Uniforms: 5 per-effect interpolated values. |
|
| 24 |
|
|
| 28 | 25 |
|
| 29 | 26 |
public abstract class PostprocessEffect extends Effect |
| 30 | 27 |
{
|
| 31 |
public static final int NUM_UNIFORMS = 5; |
|
| 32 |
|
|
| 33 |
Dynamic mDynamic0, mDynamic1; |
|
| 34 |
Static mStatic0, mStatic1; |
|
| 28 |
public static final int NUM_UNIFORMS = 5; // 5 per-effect interpolated values. |
|
| 35 | 29 |
|
| 36 | 30 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 37 | 31 |
|
| src/main/java/org/distorted/library/effect/PostprocessEffectBlur.java | ||
|---|---|---|
| 27 | 27 |
|
| 28 | 28 |
public class PostprocessEffectBlur extends PostprocessEffect |
| 29 | 29 |
{
|
| 30 |
private Data1D mBlurRadius; |
|
| 31 |
|
|
| 30 | 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 31 | 33 |
/** |
| 32 | 34 |
* Blur the object. |
| 33 | 35 |
* |
| 34 |
* @param radius The 'strength' if the effect, in pixels. 0 = no blur, 10 = when blurring a given pixel,
|
|
| 35 |
* take into account 10 pixels in each direction. |
|
| 36 |
* @param blurRadius The 'strength' if the effect, in pixels. 0 = no blur, 10 = when blurring a given pixel,
|
|
| 37 |
* take into account 10 pixels in each direction.
|
|
| 36 | 38 |
*/ |
| 37 |
public PostprocessEffectBlur(Data1D radius)
|
|
| 39 |
public PostprocessEffectBlur(Data1D blurRadius)
|
|
| 38 | 40 |
{
|
| 39 | 41 |
super(EffectName.BLUR); |
| 40 |
|
|
| 41 |
if( radius instanceof Dynamic1D) |
|
| 42 |
{
|
|
| 43 |
mDynamic0 = (Dynamic1D)radius; |
|
| 44 |
} |
|
| 45 |
else if ( radius instanceof Static1D ) |
|
| 46 |
{
|
|
| 47 |
mStatic0 = (Static1D)radius; |
|
| 48 |
} |
|
| 42 |
mBlurRadius = blurRadius; |
|
| 49 | 43 |
} |
| 50 | 44 |
|
| 51 | 45 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 52 | 46 |
|
| 53 | 47 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 54 | 48 |
{
|
| 55 |
if( mDynamic0!=null ) |
|
| 56 |
{
|
|
| 57 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 58 |
} |
|
| 59 |
else |
|
| 60 |
{
|
|
| 61 |
uniforms[index] = ((Static1D)mStatic0).getX(); |
|
| 62 |
return false; |
|
| 63 |
} |
|
| 49 |
return mBlurRadius.get(uniforms,index,currentDuration,step); |
|
| 64 | 50 |
} |
| 65 | 51 |
} |
| src/main/java/org/distorted/library/effect/PostprocessEffectGlow.java | ||
|---|---|---|
| 30 | 30 |
|
| 31 | 31 |
public class PostprocessEffectGlow extends PostprocessEffect |
| 32 | 32 |
{
|
| 33 |
private Data1D mGlowRadius; |
|
| 34 |
private Data4D mColor; |
|
| 35 |
|
|
| 33 | 36 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 34 | 37 |
/** |
| 35 | 38 |
* Make the object glow with a specific color and a halo of specific radius. |
| 36 | 39 |
* |
| 37 |
* @param radius The 'strength' if the effect, in pixels. 0 = no halo, 10 = halo of roughly 10 pixels
|
|
| 38 |
* around the whole object. |
|
| 39 |
* @param color RGBA of the color with which to draw the glow. |
|
| 40 |
* @param glowRadius The 'strength' if the effect, in pixels. 0 = no halo, 10 = halo of roughly 10 pixels
|
|
| 41 |
* around the whole object.
|
|
| 42 |
* @param color RGBA of the color with which to draw the glow.
|
|
| 40 | 43 |
*/ |
| 41 |
public PostprocessEffectGlow(Data1D radius, Data4D color)
|
|
| 44 |
public PostprocessEffectGlow(Data1D glowRadius, Data4D color)
|
|
| 42 | 45 |
{
|
| 43 | 46 |
super(EffectName.GLOW); |
| 44 |
|
|
| 45 |
if( radius instanceof Dynamic1D) |
|
| 46 |
{
|
|
| 47 |
mDynamic0 = (Dynamic1D)radius; |
|
| 48 |
} |
|
| 49 |
else if ( radius instanceof Static1D ) |
|
| 50 |
{
|
|
| 51 |
mStatic0 = (Static1D)radius; |
|
| 52 |
} |
|
| 53 |
|
|
| 54 |
if( color instanceof Dynamic4D) |
|
| 55 |
{
|
|
| 56 |
mDynamic1 = (Dynamic4D)color; |
|
| 57 |
} |
|
| 58 |
else if ( color instanceof Static4D) |
|
| 59 |
{
|
|
| 60 |
mStatic1 = (Static4D)color; |
|
| 61 |
} |
|
| 47 |
mGlowRadius = glowRadius; |
|
| 48 |
mColor = color; |
|
| 62 | 49 |
} |
| 63 | 50 |
|
| 64 | 51 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 65 | 52 |
|
| 66 | 53 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 67 | 54 |
{
|
| 68 |
if( mDynamic1!=null ) |
|
| 69 |
{
|
|
| 70 |
mDynamic1.get(uniforms,index+1,currentDuration,step); |
|
| 71 |
} |
|
| 72 |
else |
|
| 73 |
{
|
|
| 74 |
uniforms[index+1] = ((Static4D)mStatic1).getX(); |
|
| 75 |
uniforms[index+2] = ((Static4D)mStatic1).getY(); |
|
| 76 |
uniforms[index+3] = ((Static4D)mStatic1).getZ(); |
|
| 77 |
uniforms[index+4] = ((Static4D)mStatic1).getW(); |
|
| 78 |
} |
|
| 79 |
|
|
| 80 |
if( mDynamic0!=null ) |
|
| 81 |
{
|
|
| 82 |
return mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 83 |
} |
|
| 84 |
else |
|
| 85 |
{
|
|
| 86 |
uniforms[index ] = ((Static1D)mStatic0).getX(); |
|
| 87 |
return false; |
|
| 88 |
} |
|
| 55 |
mColor.get(uniforms,index+1,currentDuration,step); |
|
| 56 |
return mGlowRadius.get(uniforms,index,currentDuration,step); |
|
| 89 | 57 |
} |
| 90 | 58 |
} |
| src/main/java/org/distorted/library/effect/VertexEffect.java | ||
|---|---|---|
| 19 | 19 |
|
| 20 | 20 |
package org.distorted.library.effect; |
| 21 | 21 |
|
| 22 |
import org.distorted.library.type.Dynamic; |
|
| 23 |
import org.distorted.library.type.Dynamic3D; |
|
| 24 |
import org.distorted.library.type.Dynamic4D; |
|
| 25 |
import org.distorted.library.type.Static; |
|
| 26 |
import org.distorted.library.type.Static3D; |
|
| 27 |
import org.distorted.library.type.Static4D; |
|
| 28 |
|
|
| 29 | 22 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 30 | 23 |
// VERTEX EFFECTS |
| 31 |
// 12 Uniforms: 5 per-effect interpolated values, 3-dimensional center, 4-dimensional Region |
|
| 32 | 24 |
|
| 33 | 25 |
public abstract class VertexEffect extends Effect |
| 34 | 26 |
{
|
| 35 |
public static final int NUM_UNIFORMS = 12; |
|
| 27 |
public static final int NUM_UNIFORMS = 12; // 5 per-effect interpolated values, 3-dimensional center, 4-dimensional Region
|
|
| 36 | 28 |
|
| 37 |
Dynamic mDynamic0; |
|
| 38 |
Static mStatic0; |
|
| 39 |
Dynamic3D mDynamicCenter; |
|
| 40 |
Static3D mStaticCenter; |
|
| 41 |
Dynamic4D mDynamicRegion; |
|
| 42 |
Static4D mStaticRegion; |
|
| 43 | 29 |
|
| 44 | 30 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 45 | 31 |
|
| src/main/java/org/distorted/library/effect/VertexEffectDeform.java | ||
|---|---|---|
| 30 | 30 |
|
| 31 | 31 |
public class VertexEffectDeform extends VertexEffect |
| 32 | 32 |
{
|
| 33 |
private Data3D mVector, mCenter; |
|
| 34 |
private Data4D mRegion; |
|
| 35 |
|
|
| 33 | 36 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 34 | 37 |
/** |
| 35 | 38 |
* Deform the shape of the whole Object with a (possibly changing in time) vector of force applied to |
| ... | ... | |
| 42 | 45 |
public VertexEffectDeform(Data3D vector, Data3D center, Data4D region) |
| 43 | 46 |
{
|
| 44 | 47 |
super(EffectName.DEFORM); |
| 45 |
|
|
| 46 |
if( vector instanceof Dynamic3D ) |
|
| 47 |
{
|
|
| 48 |
mDynamic0 = (Dynamic3D)vector; |
|
| 49 |
} |
|
| 50 |
else if ( vector instanceof Static3D ) |
|
| 51 |
{
|
|
| 52 |
mStatic0 = (Static3D)vector; |
|
| 53 |
} |
|
| 54 |
|
|
| 55 |
if( center instanceof Static3D) |
|
| 56 |
{
|
|
| 57 |
mStaticCenter = (Static3D)center; |
|
| 58 |
} |
|
| 59 |
else if( center instanceof Dynamic3D ) |
|
| 60 |
{
|
|
| 61 |
mDynamicCenter = (Dynamic3D)center; |
|
| 62 |
} |
|
| 63 |
|
|
| 64 |
if( region == null ) |
|
| 65 |
{
|
|
| 66 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 67 |
} |
|
| 68 |
else |
|
| 69 |
{
|
|
| 70 |
if (region instanceof Static4D) |
|
| 71 |
{
|
|
| 72 |
mStaticRegion = (Static4D) region; |
|
| 73 |
} |
|
| 74 |
else if (region instanceof Dynamic4D) |
|
| 75 |
{
|
|
| 76 |
mDynamicRegion = (Dynamic4D) region; |
|
| 77 |
} |
|
| 78 |
} |
|
| 48 |
mVector = vector; |
|
| 49 |
mCenter = center; |
|
| 50 |
mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region); |
|
| 79 | 51 |
} |
| 80 | 52 |
|
| 81 | 53 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 89 | 61 |
public VertexEffectDeform(Data3D vector, Data3D center) |
| 90 | 62 |
{
|
| 91 | 63 |
super(EffectName.DEFORM); |
| 92 |
|
|
| 93 |
if( vector instanceof Dynamic3D ) |
|
| 94 |
{
|
|
| 95 |
mDynamic0 = (Dynamic3D)vector; |
|
| 96 |
} |
|
| 97 |
else if ( vector instanceof Static3D ) |
|
| 98 |
{
|
|
| 99 |
mStatic0 = (Static3D)vector; |
|
| 100 |
} |
|
| 101 |
|
|
| 102 |
if( center instanceof Static3D) |
|
| 103 |
{
|
|
| 104 |
mStaticCenter = (Static3D)center; |
|
| 105 |
} |
|
| 106 |
else if( center instanceof Dynamic3D ) |
|
| 107 |
{
|
|
| 108 |
mDynamicCenter = (Dynamic3D)center; |
|
| 109 |
} |
|
| 110 |
|
|
| 111 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 64 |
mVector = vector; |
|
| 65 |
mCenter = center; |
|
| 66 |
mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 112 | 67 |
} |
| 113 | 68 |
|
| 114 | 69 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 115 | 70 |
|
| 116 | 71 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 117 | 72 |
{
|
| 118 |
boolean ret = false; |
|
| 119 |
|
|
| 120 |
if( mDynamicCenter!=null ) |
|
| 121 |
{
|
|
| 122 |
mDynamicCenter.get(uniforms,index+5,currentDuration,step); |
|
| 123 |
} |
|
| 124 |
else |
|
| 125 |
{
|
|
| 126 |
uniforms[index+5] = mStaticCenter.getX(); |
|
| 127 |
uniforms[index+6] = mStaticCenter.getY(); |
|
| 128 |
uniforms[index+7] = mStaticCenter.getZ(); |
|
| 129 |
} |
|
| 130 |
|
|
| 131 |
if( mDynamicRegion!=null ) |
|
| 132 |
{
|
|
| 133 |
mDynamicRegion.get(uniforms,index+8,currentDuration,step); |
|
| 134 |
} |
|
| 135 |
else |
|
| 136 |
{
|
|
| 137 |
uniforms[index+ 8] = mStaticRegion.getX(); |
|
| 138 |
uniforms[index+ 9] = mStaticRegion.getY(); |
|
| 139 |
uniforms[index+10] = mStaticRegion.getZ(); |
|
| 140 |
uniforms[index+11] = mStaticRegion.getW(); |
|
| 141 |
} |
|
| 142 |
|
|
| 143 |
if( mDynamic0!=null ) |
|
| 144 |
{
|
|
| 145 |
ret = mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 146 |
} |
|
| 147 |
else |
|
| 148 |
{
|
|
| 149 |
uniforms[index ] = ((Static3D)mStatic0).getX(); |
|
| 150 |
uniforms[index+1] = ((Static3D)mStatic0).getY(); |
|
| 151 |
uniforms[index+2] = ((Static3D)mStatic0).getZ(); |
|
| 152 |
} |
|
| 73 |
mCenter.get(uniforms,index+5,currentDuration,step); |
|
| 74 |
mRegion.get(uniforms,index+8,currentDuration,step); |
|
| 75 |
boolean ret = mVector.get(uniforms,index,currentDuration,step); |
|
| 153 | 76 |
|
| 154 | 77 |
uniforms[index+9] =-uniforms[index+9]; |
| 155 | 78 |
|
| src/main/java/org/distorted/library/effect/VertexEffectDistort.java | ||
|---|---|---|
| 30 | 30 |
|
| 31 | 31 |
public class VertexEffectDistort extends VertexEffect |
| 32 | 32 |
{
|
| 33 |
private Data3D mVector, mCenter; |
|
| 34 |
private Data4D mRegion; |
|
| 35 |
|
|
| 33 | 36 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 34 | 37 |
/** |
| 35 | 38 |
* Distort a (possibly changing in time) part of the Object by a (possibly changing in time) vector of force. |
| ... | ... | |
| 42 | 45 |
public VertexEffectDistort(Data3D vector, Data3D center, Data4D region) |
| 43 | 46 |
{
|
| 44 | 47 |
super(EffectName.DISTORT); |
| 45 |
|
|
| 46 |
if( vector instanceof Dynamic3D ) |
|
| 47 |
{
|
|
| 48 |
mDynamic0 = (Dynamic3D)vector; |
|
| 49 |
} |
|
| 50 |
else if ( vector instanceof Static3D ) |
|
| 51 |
{
|
|
| 52 |
mStatic0 = (Static3D)vector; |
|
| 53 |
} |
|
| 54 |
|
|
| 55 |
if( center instanceof Static3D) |
|
| 56 |
{
|
|
| 57 |
mStaticCenter = (Static3D)center; |
|
| 58 |
} |
|
| 59 |
else if( center instanceof Dynamic3D ) |
|
| 60 |
{
|
|
| 61 |
mDynamicCenter = (Dynamic3D)center; |
|
| 62 |
} |
|
| 63 |
|
|
| 64 |
if( region == null ) |
|
| 65 |
{
|
|
| 66 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 67 |
} |
|
| 68 |
else |
|
| 69 |
{
|
|
| 70 |
if (region instanceof Static4D) |
|
| 71 |
{
|
|
| 72 |
mStaticRegion = (Static4D) region; |
|
| 73 |
} |
|
| 74 |
else if (region instanceof Dynamic4D) |
|
| 75 |
{
|
|
| 76 |
mDynamicRegion = (Dynamic4D) region; |
|
| 77 |
} |
|
| 78 |
} |
|
| 48 |
mVector = vector; |
|
| 49 |
mCenter = center; |
|
| 50 |
mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region); |
|
| 79 | 51 |
} |
| 80 | 52 |
|
| 81 | 53 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 89 | 61 |
public VertexEffectDistort(Data3D vector, Data3D center) |
| 90 | 62 |
{
|
| 91 | 63 |
super(EffectName.DISTORT); |
| 92 |
|
|
| 93 |
if( vector instanceof Dynamic3D ) |
|
| 94 |
{
|
|
| 95 |
mDynamic0 = (Dynamic3D)vector; |
|
| 96 |
} |
|
| 97 |
else if ( vector instanceof Static3D ) |
|
| 98 |
{
|
|
| 99 |
mStatic0 = (Static3D)vector; |
|
| 100 |
} |
|
| 101 |
|
|
| 102 |
if( center instanceof Static3D) |
|
| 103 |
{
|
|
| 104 |
mStaticCenter = (Static3D)center; |
|
| 105 |
} |
|
| 106 |
else if( center instanceof Dynamic3D ) |
|
| 107 |
{
|
|
| 108 |
mDynamicCenter = (Dynamic3D)center; |
|
| 109 |
} |
|
| 110 |
|
|
| 111 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 64 |
mVector = vector; |
|
| 65 |
mCenter = center; |
|
| 66 |
mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 112 | 67 |
} |
| 113 | 68 |
|
| 114 | 69 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 115 | 70 |
|
| 116 | 71 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 117 | 72 |
{
|
| 118 |
boolean ret = false; |
|
| 119 |
|
|
| 120 |
if( mDynamicCenter!=null ) |
|
| 121 |
{
|
|
| 122 |
mDynamicCenter.get(uniforms,index+5,currentDuration,step); |
|
| 123 |
} |
|
| 124 |
else |
|
| 125 |
{
|
|
| 126 |
uniforms[index+5] = mStaticCenter.getX(); |
|
| 127 |
uniforms[index+6] = mStaticCenter.getY(); |
|
| 128 |
uniforms[index+7] = mStaticCenter.getZ(); |
|
| 129 |
} |
|
| 130 |
|
|
| 131 |
if( mDynamicRegion!=null ) |
|
| 132 |
{
|
|
| 133 |
mDynamicRegion.get(uniforms,index+8,currentDuration,step); |
|
| 134 |
} |
|
| 135 |
else |
|
| 136 |
{
|
|
| 137 |
uniforms[index+ 8] = mStaticRegion.getX(); |
|
| 138 |
uniforms[index+ 9] = mStaticRegion.getY(); |
|
| 139 |
uniforms[index+10] = mStaticRegion.getZ(); |
|
| 140 |
uniforms[index+11] = mStaticRegion.getW(); |
|
| 141 |
} |
|
| 142 |
|
|
| 143 |
if( mDynamic0!=null ) |
|
| 144 |
{
|
|
| 145 |
ret = mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 146 |
} |
|
| 147 |
else |
|
| 148 |
{
|
|
| 149 |
uniforms[index ] = ((Static3D)mStatic0).getX(); |
|
| 150 |
uniforms[index+1] = ((Static3D)mStatic0).getY(); |
|
| 151 |
uniforms[index+2] = ((Static3D)mStatic0).getZ(); |
|
| 152 |
} |
|
| 73 |
mCenter.get(uniforms,index+5,currentDuration,step); |
|
| 74 |
mRegion.get(uniforms,index+8,currentDuration,step); |
|
| 75 |
boolean ret = mVector.get(uniforms,index,currentDuration,step); |
|
| 153 | 76 |
|
| 154 | 77 |
uniforms[index+1] =-uniforms[index+1]; |
| 155 | 78 |
uniforms[index+9] =-uniforms[index+9]; |
| src/main/java/org/distorted/library/effect/VertexEffectPinch.java | ||
|---|---|---|
| 33 | 33 |
|
| 34 | 34 |
public class VertexEffectPinch extends VertexEffect |
| 35 | 35 |
{
|
| 36 |
private Data2D mPinch; |
|
| 37 |
private Data3D mCenter; |
|
| 38 |
private Data4D mRegion; |
|
| 39 |
|
|
| 36 | 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 37 | 41 |
/** |
| 38 | 42 |
* Pull all points around the center of the Effect towards a line passing through the center |
| ... | ... | |
| 45 | 49 |
public VertexEffectPinch(Data2D pinch, Data3D center, Data4D region) |
| 46 | 50 |
{
|
| 47 | 51 |
super(EffectName.PINCH); |
| 48 |
|
|
| 49 |
if( pinch instanceof Dynamic2D) |
|
| 50 |
{
|
|
| 51 |
mDynamic0 = (Dynamic2D)pinch; |
|
| 52 |
} |
|
| 53 |
else if ( pinch instanceof Static2D ) |
|
| 54 |
{
|
|
| 55 |
mStatic0 = (Static2D)pinch; |
|
| 56 |
} |
|
| 57 |
|
|
| 58 |
if( center instanceof Static3D) |
|
| 59 |
{
|
|
| 60 |
mStaticCenter = (Static3D)center; |
|
| 61 |
} |
|
| 62 |
else if( center instanceof Dynamic3D) |
|
| 63 |
{
|
|
| 64 |
mDynamicCenter = (Dynamic3D)center; |
|
| 65 |
} |
|
| 66 |
|
|
| 67 |
if( region == null ) |
|
| 68 |
{
|
|
| 69 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 70 |
} |
|
| 71 |
else |
|
| 72 |
{
|
|
| 73 |
if (region instanceof Static4D) |
|
| 74 |
{
|
|
| 75 |
mStaticRegion = (Static4D) region; |
|
| 76 |
} |
|
| 77 |
else if (region instanceof Dynamic4D) |
|
| 78 |
{
|
|
| 79 |
mDynamicRegion = (Dynamic4D) region; |
|
| 80 |
} |
|
| 81 |
} |
|
| 52 |
mPinch = pinch; |
|
| 53 |
mCenter = center; |
|
| 54 |
mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region); |
|
| 82 | 55 |
} |
| 83 | 56 |
|
| 84 | 57 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 92 | 65 |
public VertexEffectPinch(Data2D pinch, Data3D center) |
| 93 | 66 |
{
|
| 94 | 67 |
super(EffectName.PINCH); |
| 95 |
|
|
| 96 |
if( pinch instanceof Dynamic2D) |
|
| 97 |
{
|
|
| 98 |
mDynamic0 = (Dynamic2D)pinch; |
|
| 99 |
} |
|
| 100 |
else if ( pinch instanceof Static2D ) |
|
| 101 |
{
|
|
| 102 |
mStatic0 = (Static2D)pinch; |
|
| 103 |
} |
|
| 104 |
|
|
| 105 |
if( center instanceof Static3D) |
|
| 106 |
{
|
|
| 107 |
mStaticCenter = (Static3D)center; |
|
| 108 |
} |
|
| 109 |
else if( center instanceof Dynamic3D ) |
|
| 110 |
{
|
|
| 111 |
mDynamicCenter = (Dynamic3D)center; |
|
| 112 |
} |
|
| 113 |
|
|
| 114 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 68 |
mPinch = pinch; |
|
| 69 |
mCenter = center; |
|
| 70 |
mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 115 | 71 |
} |
| 116 | 72 |
|
| 117 | 73 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 118 | 74 |
|
| 119 | 75 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 120 | 76 |
{
|
| 121 |
boolean ret= false; |
|
| 122 |
|
|
| 123 |
if( mDynamicCenter!=null ) |
|
| 124 |
{
|
|
| 125 |
mDynamicCenter.get(uniforms,index+5,currentDuration,step); |
|
| 126 |
} |
|
| 127 |
else |
|
| 128 |
{
|
|
| 129 |
uniforms[index+5] = mStaticCenter.getX(); |
|
| 130 |
uniforms[index+6] = mStaticCenter.getY(); |
|
| 131 |
uniforms[index+7] = mStaticCenter.getZ(); |
|
| 132 |
} |
|
| 133 |
|
|
| 134 |
if( mDynamicRegion!=null ) |
|
| 135 |
{
|
|
| 136 |
mDynamicRegion.get(uniforms,index+8,currentDuration,step); |
|
| 137 |
} |
|
| 138 |
else |
|
| 139 |
{
|
|
| 140 |
uniforms[index+ 8] = mStaticRegion.getX(); |
|
| 141 |
uniforms[index+ 9] = mStaticRegion.getY(); |
|
| 142 |
uniforms[index+10] = mStaticRegion.getZ(); |
|
| 143 |
uniforms[index+11] = mStaticRegion.getW(); |
|
| 144 |
} |
|
| 145 |
|
|
| 146 |
if( mDynamic0!=null ) |
|
| 147 |
{
|
|
| 148 |
ret = mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 149 |
} |
|
| 150 |
else |
|
| 151 |
{
|
|
| 152 |
uniforms[index ] = ((Static2D)mStatic0).getX(); |
|
| 153 |
uniforms[index+1] = ((Static2D)mStatic0).getY(); |
|
| 154 |
} |
|
| 77 |
mCenter.get(uniforms,index+5,currentDuration,step); |
|
| 78 |
mRegion.get(uniforms,index+8,currentDuration,step); |
|
| 79 |
boolean ret = mPinch.get(uniforms,index,currentDuration,step); |
|
| 155 | 80 |
|
| 156 | 81 |
uniforms[index+1] = (float)(Math.PI*uniforms[index+1]/180); |
| 157 | 82 |
uniforms[index+9] =-uniforms[index+9]; |
| src/main/java/org/distorted/library/effect/VertexEffectSink.java | ||
|---|---|---|
| 33 | 33 |
|
| 34 | 34 |
public class VertexEffectSink extends VertexEffect |
| 35 | 35 |
{
|
| 36 |
private Data1D mSink; |
|
| 37 |
private Data3D mCenter; |
|
| 38 |
private Data4D mRegion; |
|
| 39 |
|
|
| 36 | 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 37 | 41 |
/** |
| 38 | 42 |
* Pull all points around the center of the Effect towards the center (if degree>=1) or push them |
| ... | ... | |
| 45 | 49 |
public VertexEffectSink(Data1D sink, Data3D center, Data4D region) |
| 46 | 50 |
{
|
| 47 | 51 |
super(EffectName.SINK); |
| 48 |
|
|
| 49 |
if( sink instanceof Dynamic1D) |
|
| 50 |
{
|
|
| 51 |
mDynamic0 = (Dynamic1D)sink; |
|
| 52 |
} |
|
| 53 |
else if ( sink instanceof Static1D ) |
|
| 54 |
{
|
|
| 55 |
mStatic0 = (Static1D)sink; |
|
| 56 |
} |
|
| 57 |
|
|
| 58 |
if( center instanceof Static3D) |
|
| 59 |
{
|
|
| 60 |
mStaticCenter = (Static3D)center; |
|
| 61 |
} |
|
| 62 |
else if( center instanceof Dynamic3D) |
|
| 63 |
{
|
|
| 64 |
mDynamicCenter = (Dynamic3D)center; |
|
| 65 |
} |
|
| 66 |
|
|
| 67 |
if( region == null ) |
|
| 68 |
{
|
|
| 69 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 70 |
} |
|
| 71 |
else |
|
| 72 |
{
|
|
| 73 |
if (region instanceof Static4D) |
|
| 74 |
{
|
|
| 75 |
mStaticRegion = (Static4D) region; |
|
| 76 |
} |
|
| 77 |
else if (region instanceof Dynamic4D) |
|
| 78 |
{
|
|
| 79 |
mDynamicRegion = (Dynamic4D) region; |
|
| 80 |
} |
|
| 81 |
} |
|
| 52 |
mSink = sink; |
|
| 53 |
mCenter = center; |
|
| 54 |
mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region); |
|
| 82 | 55 |
} |
| 83 | 56 |
|
| 84 | 57 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 92 | 65 |
public VertexEffectSink(Data1D sink, Data3D center) |
| 93 | 66 |
{
|
| 94 | 67 |
super(EffectName.SINK); |
| 95 |
|
|
| 96 |
if( sink instanceof Dynamic1D) |
|
| 97 |
{
|
|
| 98 |
mDynamic0 = (Dynamic1D)sink; |
|
| 99 |
} |
|
| 100 |
else if ( sink instanceof Static1D ) |
|
| 101 |
{
|
|
| 102 |
mStatic0 = (Static1D)sink; |
|
| 103 |
} |
|
| 104 |
|
|
| 105 |
if( center instanceof Static3D) |
|
| 106 |
{
|
|
| 107 |
mStaticCenter = (Static3D)center; |
|
| 108 |
} |
|
| 109 |
else if( center instanceof Dynamic3D ) |
|
| 110 |
{
|
|
| 111 |
mDynamicCenter = (Dynamic3D)center; |
|
| 112 |
} |
|
| 113 |
|
|
| 114 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 68 |
mSink = sink; |
|
| 69 |
mCenter = center; |
|
| 70 |
mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 115 | 71 |
} |
| 116 | 72 |
|
| 117 | 73 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 118 | 74 |
|
| 119 | 75 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 120 | 76 |
{
|
| 121 |
boolean ret = false; |
|
| 122 |
|
|
| 123 |
if( mDynamicCenter!=null ) |
|
| 124 |
{
|
|
| 125 |
mDynamicCenter.get(uniforms,index+5,currentDuration,step); |
|
| 126 |
} |
|
| 127 |
else |
|
| 128 |
{
|
|
| 129 |
uniforms[index+5] = mStaticCenter.getX(); |
|
| 130 |
uniforms[index+6] = mStaticCenter.getY(); |
|
| 131 |
uniforms[index+7] = mStaticCenter.getZ(); |
|
| 132 |
} |
|
| 133 |
|
|
| 134 |
if( mDynamicRegion!=null ) |
|
| 135 |
{
|
|
| 136 |
mDynamicRegion.get(uniforms,index+8,currentDuration,step); |
|
| 137 |
} |
|
| 138 |
else |
|
| 139 |
{
|
|
| 140 |
uniforms[index+ 8] = mStaticRegion.getX(); |
|
| 141 |
uniforms[index+ 9] = mStaticRegion.getY(); |
|
| 142 |
uniforms[index+10] = mStaticRegion.getZ(); |
|
| 143 |
uniforms[index+11] = mStaticRegion.getW(); |
|
| 144 |
} |
|
| 145 |
|
|
| 146 |
if( mDynamic0!=null ) |
|
| 147 |
{
|
|
| 148 |
ret = mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 149 |
} |
|
| 150 |
else |
|
| 151 |
{
|
|
| 152 |
uniforms[index ] = ((Static1D)mStatic0).getX(); |
|
| 153 |
} |
|
| 77 |
mCenter.get(uniforms,index+5,currentDuration,step); |
|
| 78 |
mRegion.get(uniforms,index+8,currentDuration,step); |
|
| 79 |
boolean ret = mSink.get(uniforms,index,currentDuration,step); |
|
| 154 | 80 |
|
| 155 | 81 |
uniforms[index+9] =-uniforms[index+9]; |
| 156 | 82 |
|
| src/main/java/org/distorted/library/effect/VertexEffectSwirl.java | ||
|---|---|---|
| 33 | 33 |
|
| 34 | 34 |
public class VertexEffectSwirl extends VertexEffect |
| 35 | 35 |
{
|
| 36 |
private Data1D mSwirl; |
|
| 37 |
private Data3D mCenter; |
|
| 38 |
private Data4D mRegion; |
|
| 39 |
|
|
| 36 | 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 37 | 41 |
/** |
| 38 | 42 |
* Rotate part of the Object around the Center of the Effect by a certain angle. |
| ... | ... | |
| 44 | 48 |
public VertexEffectSwirl(Data1D swirl, Data3D center, Data4D region) |
| 45 | 49 |
{
|
| 46 | 50 |
super(EffectName.SWIRL); |
| 47 |
|
|
| 48 |
if( swirl instanceof Dynamic1D) |
|
| 49 |
{
|
|
| 50 |
mDynamic0 = (Dynamic1D)swirl; |
|
| 51 |
} |
|
| 52 |
else if ( swirl instanceof Static1D ) |
|
| 53 |
{
|
|
| 54 |
mStatic0 = (Static1D)swirl; |
|
| 55 |
} |
|
| 56 |
|
|
| 57 |
if( center instanceof Static3D) |
|
| 58 |
{
|
|
| 59 |
mStaticCenter = (Static3D)center; |
|
| 60 |
} |
|
| 61 |
else if( center instanceof Dynamic3D) |
|
| 62 |
{
|
|
| 63 |
mDynamicCenter = (Dynamic3D)center; |
|
| 64 |
} |
|
| 65 |
|
|
| 66 |
if( region == null ) |
|
| 67 |
{
|
|
| 68 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 69 |
} |
|
| 70 |
else |
|
| 71 |
{
|
|
| 72 |
if (region instanceof Static4D) |
|
| 73 |
{
|
|
| 74 |
mStaticRegion = (Static4D) region; |
|
| 75 |
} |
|
| 76 |
else if (region instanceof Dynamic4D) |
|
| 77 |
{
|
|
| 78 |
mDynamicRegion = (Dynamic4D) region; |
|
| 79 |
} |
|
| 80 |
} |
|
| 51 |
mSwirl = swirl; |
|
| 52 |
mCenter = center; |
|
| 53 |
mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region); |
|
| 81 | 54 |
} |
| 82 | 55 |
|
| 83 | 56 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 90 | 63 |
public VertexEffectSwirl(Data1D swirl, Data3D center) |
| 91 | 64 |
{
|
| 92 | 65 |
super(EffectName.SWIRL); |
| 93 |
|
|
| 94 |
if( swirl instanceof Dynamic1D) |
|
| 95 |
{
|
|
| 96 |
mDynamic0 = (Dynamic1D)swirl; |
|
| 97 |
} |
|
| 98 |
else if ( swirl instanceof Static1D ) |
|
| 99 |
{
|
|
| 100 |
mStatic0 = (Static1D)swirl; |
|
| 101 |
} |
|
| 102 |
|
|
| 103 |
if( center instanceof Static3D) |
|
| 104 |
{
|
|
| 105 |
mStaticCenter = (Static3D)center; |
|
| 106 |
} |
|
| 107 |
else if( center instanceof Dynamic3D ) |
|
| 108 |
{
|
|
| 109 |
mDynamicCenter = (Dynamic3D)center; |
|
| 110 |
} |
|
| 111 |
|
|
| 112 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 66 |
mSwirl = swirl; |
|
| 67 |
mCenter = center; |
|
| 68 |
mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 113 | 69 |
} |
| 114 | 70 |
|
| 115 | 71 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 116 | 72 |
|
| 117 | 73 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 118 | 74 |
{
|
| 119 |
boolean ret = false; |
|
| 120 |
|
|
| 121 |
if( mDynamicCenter!=null ) |
|
| 122 |
{
|
|
| 123 |
mDynamicCenter.get(uniforms,index+5,currentDuration,step); |
|
| 124 |
} |
|
| 125 |
else |
|
| 126 |
{
|
|
| 127 |
uniforms[index+5] = mStaticCenter.getX(); |
|
| 128 |
uniforms[index+6] = mStaticCenter.getY(); |
|
| 129 |
uniforms[index+7] = mStaticCenter.getZ(); |
|
| 130 |
} |
|
| 131 |
|
|
| 132 |
if( mDynamicRegion!=null ) |
|
| 133 |
{
|
|
| 134 |
mDynamicRegion.get(uniforms,index+8,currentDuration,step); |
|
| 135 |
} |
|
| 136 |
else |
|
| 137 |
{
|
|
| 138 |
uniforms[index+ 8] = mStaticRegion.getX(); |
|
| 139 |
uniforms[index+ 9] = mStaticRegion.getY(); |
|
| 140 |
uniforms[index+10] = mStaticRegion.getZ(); |
|
| 141 |
uniforms[index+11] = mStaticRegion.getW(); |
|
| 142 |
} |
|
| 143 |
|
|
| 144 |
if( mDynamic0!=null ) |
|
| 145 |
{
|
|
| 146 |
ret = mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 147 |
} |
|
| 148 |
else |
|
| 149 |
{
|
|
| 150 |
uniforms[index ] = ((Static1D)mStatic0).getX(); |
|
| 151 |
} |
|
| 75 |
mCenter.get(uniforms,index+5,currentDuration,step); |
|
| 76 |
mRegion.get(uniforms,index+8,currentDuration,step); |
|
| 77 |
boolean ret = mSwirl.get(uniforms,index,currentDuration,step); |
|
| 152 | 78 |
|
| 153 | 79 |
uniforms[index ] = (float)(Math.PI*uniforms[index]/180); |
| 154 | 80 |
uniforms[index+9] =-uniforms[index+9]; |
| src/main/java/org/distorted/library/effect/VertexEffectWave.java | ||
|---|---|---|
| 33 | 33 |
|
| 34 | 34 |
public class VertexEffectWave extends VertexEffect |
| 35 | 35 |
{
|
| 36 |
private Data5D mWave; |
|
| 37 |
private Data3D mCenter; |
|
| 38 |
private Data4D mRegion; |
|
| 39 |
|
|
| 36 | 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 37 | 41 |
/** |
| 38 | 42 |
* Directional, sinusoidal wave effect. |
| ... | ... | |
| 60 | 64 |
* is entirely 'horizontal' and moves point (x,y,0) in direction V by whatever is the |
| 61 | 65 |
* value if sin at this point. |
| 62 | 66 |
* @param center 3-dimensional Data that, at any given time, returns the Center of the Effect. |
| 67 |
* @param region Region that masks the Effect. |
|
| 63 | 68 |
*/ |
| 64 |
public VertexEffectWave(Data5D wave, Data3D center) |
|
| 69 |
public VertexEffectWave(Data5D wave, Data3D center, Data4D region)
|
|
| 65 | 70 |
{
|
| 66 | 71 |
super(EffectName.WAVE); |
| 67 |
|
|
| 68 |
if( wave instanceof Dynamic5D) |
|
| 69 |
{
|
|
| 70 |
mDynamic0 = (Dynamic5D)wave; |
|
| 71 |
} |
|
| 72 |
else if ( wave instanceof Static5D) |
|
| 73 |
{
|
|
| 74 |
mStatic0 = (Static5D)wave; |
|
| 75 |
} |
|
| 76 |
|
|
| 77 |
if( center instanceof Static3D) |
|
| 78 |
{
|
|
| 79 |
mStaticCenter = (Static3D)center; |
|
| 80 |
} |
|
| 81 |
else if( center instanceof Dynamic3D ) |
|
| 82 |
{
|
|
| 83 |
mDynamicCenter = (Dynamic3D)center; |
|
| 84 |
} |
|
| 85 |
|
|
| 86 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 72 |
mWave = wave; |
|
| 73 |
mCenter = center; |
|
| 74 |
mRegion = (region==null ? new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE) : region); |
|
| 87 | 75 |
} |
| 88 | 76 |
|
| 89 | 77 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 92 | 80 |
* |
| 93 | 81 |
* @param wave see {@link VertexEffectWave(Data5D,Data3D)}
|
| 94 | 82 |
* @param center 3-dimensional Data that, at any given time, returns the Center of the Effect. |
| 95 |
* @param region Region that masks the Effect. |
|
| 96 | 83 |
*/ |
| 97 |
public VertexEffectWave(Data5D wave, Data3D center, Data4D region)
|
|
| 84 |
public VertexEffectWave(Data5D wave, Data3D center) |
|
| 98 | 85 |
{
|
| 99 | 86 |
super(EffectName.WAVE); |
| 100 |
|
|
| 101 |
if( wave instanceof Dynamic5D) |
|
| 102 |
{
|
|
| 103 |
mDynamic0 = (Dynamic5D)wave; |
|
| 104 |
} |
|
| 105 |
else if ( wave instanceof Static5D) |
|
| 106 |
{
|
|
| 107 |
mStatic0 = (Static5D)wave; |
|
| 108 |
} |
|
| 109 |
|
|
| 110 |
if( center instanceof Static3D) |
|
| 111 |
{
|
|
| 112 |
mStaticCenter = (Static3D)center; |
|
| 113 |
} |
|
| 114 |
else if( center instanceof Dynamic3D) |
|
| 115 |
{
|
|
| 116 |
mDynamicCenter = (Dynamic3D)center; |
|
| 117 |
} |
|
| 118 |
|
|
| 119 |
if( region == null ) |
|
| 120 |
{
|
|
| 121 |
mStaticRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 122 |
} |
|
| 123 |
else |
|
| 124 |
{
|
|
| 125 |
if (region instanceof Static4D) |
|
| 126 |
{
|
|
| 127 |
mStaticRegion = (Static4D) region; |
|
| 128 |
} |
|
| 129 |
else if (region instanceof Dynamic4D) |
|
| 130 |
{
|
|
| 131 |
mDynamicRegion = (Dynamic4D) region; |
|
| 132 |
} |
|
| 133 |
} |
|
| 87 |
mWave = wave; |
|
| 88 |
mCenter = center; |
|
| 89 |
mRegion = new Static4D(0,0,Float.MAX_VALUE, Float.MAX_VALUE); |
|
| 134 | 90 |
} |
| 135 | 91 |
|
| 136 | 92 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 137 | 93 |
|
| 138 | 94 |
public boolean compute(float[] uniforms, int index, long currentDuration, long step ) |
| 139 | 95 |
{
|
| 140 |
boolean ret = false; |
|
| 141 |
|
|
| 142 |
if( mDynamicCenter!=null ) |
|
| 143 |
{
|
|
| 144 |
mDynamicCenter.get(uniforms,index+5,currentDuration,step); |
|
| 145 |
} |
|
| 146 |
else |
|
| 147 |
{
|
|
| 148 |
uniforms[index+5] = mStaticCenter.getX(); |
|
| 149 |
uniforms[index+6] = mStaticCenter.getY(); |
|
| 150 |
uniforms[index+7] = mStaticCenter.getZ(); |
|
| 151 |
} |
|
| 152 |
|
|
| 153 |
if( mDynamicRegion!=null ) |
|
| 154 |
{
|
|
| 155 |
mDynamicRegion.get(uniforms,index+8,currentDuration,step); |
|
| 156 |
} |
|
| 157 |
else |
|
| 158 |
{
|
|
| 159 |
uniforms[index+ 8] = mStaticRegion.getX(); |
|
| 160 |
uniforms[index+ 9] = mStaticRegion.getY(); |
|
| 161 |
uniforms[index+10] = mStaticRegion.getZ(); |
|
| 162 |
uniforms[index+11] = mStaticRegion.getW(); |
|
| 163 |
} |
|
| 164 |
|
|
| 165 |
if( mDynamic0!=null ) |
|
| 166 |
{
|
|
| 167 |
ret = mDynamic0.get(uniforms,index,currentDuration,step); |
|
| 168 |
} |
|
| 169 |
else |
|
| 170 |
{
|
|
| 171 |
uniforms[index ] = ((Static5D)mStatic0).getX(); |
|
| 172 |
uniforms[index+1] = ((Static5D)mStatic0).getY(); |
|
| 173 |
uniforms[index+2] = ((Static5D)mStatic0).getZ(); |
|
| 174 |
uniforms[index+3] = ((Static5D)mStatic0).getW(); |
|
| 175 |
uniforms[index+4] = ((Static5D)mStatic0).getV(); |
|
| 176 |
} |
|
| 96 |
mCenter.get(uniforms,index+5,currentDuration,step); |
|
| 97 |
mRegion.get(uniforms,index+8,currentDuration,step); |
|
| 98 |
boolean ret = mWave.get(uniforms,index,currentDuration,step); |
|
| 177 | 99 |
|
| 178 | 100 |
uniforms[index+2] = (float)(Math.PI*uniforms[index+2]/180); |
| 179 | 101 |
uniforms[index+3] = (float)(Math.PI*uniforms[index+3]/180); |
Also available in: Unified diff
Simplify Effect classes.