Project

General

Profile

« Previous | Next » 

Revision fa6c352d

Added by Leszek Koltunski over 7 years ago

Complete moving center to 3D.

View differences:

src/main/java/org/distorted/library/DistortedObject.java
723 723
 *
724 724
 * @param vector 3-dimensional Vector which represents the force the Center of the Effect is
725 725
 *               currently being dragged with.
726
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
726
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
727 727
 * @param region Region that masks the Effect.
728 728
 * @return       ID of the effect added, or -1 if we failed to add one.
729 729
 */
730
  public long distort(Data3D vector, Data2D center, Data4D region)
730
  public long distort(Data3D vector, Data3D center, Data4D region)
731 731
    {  
732 732
    return mV.add(EffectNames.DISTORT, vector, center, region);
733 733
    }
......
738 738
 *
739 739
 * @param vector 3-dimensional Vector which represents the force the Center of the Effect is
740 740
 *               currently being dragged with.
741
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
741
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
742 742
 * @return       ID of the effect added, or -1 if we failed to add one.
743 743
 */
744
  public long distort(Data3D vector, Data2D center)
744
  public long distort(Data3D vector, Data3D center)
745 745
    {
746 746
    return mV.add(EffectNames.DISTORT, vector, center, null);
747 747
    }
......
752 752
 * a (possibly changing in time) point on the Object.
753 753
 *     
754 754
 * @param vector Vector of force that deforms the shape of the whole Object.
755
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
755
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
756 756
 * @return       ID of the effect added, or -1 if we failed to add one.
757 757
 */
758
  public long deform(Data3D vector, Data2D center)
758
  public long deform(Data3D vector, Data3D center)
759 759
    {  
760 760
    return mV.add(EffectNames.DEFORM, vector, center, null);
761 761
    }
......
766 766
 * away from the center (degree<=1)
767 767
 *
768 768
 * @param sink   The current degree of the Effect.
769
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
769
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
770 770
 * @param region Region that masks the Effect.
771 771
 * @return       ID of the effect added, or -1 if we failed to add one.
772 772
 */
773
  public long sink(Data1D sink, Data2D center, Data4D region)
773
  public long sink(Data1D sink, Data3D center, Data4D region)
774 774
    {
775 775
    return mV.add(EffectNames.SINK, sink, center, region);
776 776
    }
......
781 781
 * away from the center (degree<=1)
782 782
 *
783 783
 * @param sink   The current degree of the Effect.
784
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
784
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
785 785
 * @return       ID of the effect added, or -1 if we failed to add one.
786 786
 */
787
  public long sink(Data1D sink, Data2D center)
787
  public long sink(Data1D sink, Data3D center)
788 788
    {
789 789
    return mV.add(EffectNames.SINK, sink, center);
790 790
    }
......
794 794
 * Rotate part of the Object around the Center of the Effect by a certain angle.
795 795
 *
796 796
 * @param swirl  The angle of Swirl (in degrees). Positive values swirl clockwise.
797
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
797
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
798 798
 * @param region Region that masks the Effect.
799 799
 * @return       ID of the effect added, or -1 if we failed to add one.
800 800
 */
801
  public long swirl(Data1D swirl, Data2D center, Data4D region)
801
  public long swirl(Data1D swirl, Data3D center, Data4D region)
802 802
    {    
803 803
    return mV.add(EffectNames.SWIRL, swirl, center, region);
804 804
    }
......
808 808
 * Rotate the whole Object around the Center of the Effect by a certain angle.
809 809
 *
810 810
 * @param swirl  The angle of Swirl (in degrees). Positive values swirl clockwise.
811
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
811
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
812 812
 * @return       ID of the effect added, or -1 if we failed to add one.
813 813
 */
814
  public long swirl(Data1D swirl, Data2D center)
814
  public long swirl(Data1D swirl, Data3D center)
815 815
    {
816 816
    return mV.add(EffectNames.SWIRL, swirl, center);
817 817
    }
......
842 842
 *               Example3: if Alpha = 0 and Beta = 45, then V=(sqrt(2)/2, -sqrt(2)/2, 0) and the wave
843 843
 *               is entirely 'horizontal' and moves point (x,y,0) in direction V by whatever is the
844 844
 *               value if sin at this point.
845
 * @param center 2-dimensional Data that, at any given time, returns the Center of the Effect.
845
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
846 846
 * @return       ID of the effect added, or -1 if we failed to add one.
847 847
 */
848
  public long wave(Data5D wave, Data2D center)
848
  public long wave(Data5D wave, Data3D center)
849 849
    {
850 850
    return mV.add(EffectNames.WAVE, wave, center, null);
851 851
    }
......
855 855
 * Directional, sinusoidal wave effect.
856 856
 *
857 857
 * @param wave   see {@link DistortedObject#wave(Data5D,Data2D)}
858
 * @param center see {@link DistortedObject#wave(Data5D,Data2D)}
858
 * @param center 3-dimensional Data that, at any given time, returns the Center of the Effect.
859 859
 * @param region Region that masks the Effect.
860 860
 * @return       ID of the effect added, or -1 if we failed to add one.
861 861
 */
862
  public long wave(Data5D wave, Data2D center, Data4D region)
862
  public long wave(Data5D wave, Data3D center, Data4D region)
863 863
    {
864 864
    return mV.add(EffectNames.WAVE, wave, center, region);
865 865
    }
src/main/java/org/distorted/library/EffectNames.java
53 53
   * <p>
54 54
   * Unity: angle==0
55 55
   */
56
  ROTATE           ( EffectTypes.MATRIX  ,   new float[] {0.0f}           , 1, false, true ),
56
  ROTATE           ( EffectTypes.MATRIX  ,   new float[] {0.0f}           , 4, false, true ),
57 57
 /**
58 58
   * Rotate the whole Object around a center point (in quaternion notation).
59 59
   * <p>
src/main/java/org/distorted/library/EffectQueueVertex.java
23 23

  
24 24
import org.distorted.library.message.EffectMessage;
25 25
import org.distorted.library.type.Data1D;
26
import org.distorted.library.type.Data2D;
27 26
import org.distorted.library.type.Data3D;
28 27
import org.distorted.library.type.Data4D;
29 28
import org.distorted.library.type.Data5D;
30 29
import org.distorted.library.type.Dynamic1D;
31
import org.distorted.library.type.Dynamic2D;
32 30
import org.distorted.library.type.Dynamic3D;
33 31
import org.distorted.library.type.Dynamic4D;
34 32
import org.distorted.library.type.Dynamic5D;
35 33
import org.distorted.library.type.Static1D;
36
import org.distorted.library.type.Static2D;
37 34
import org.distorted.library.type.Static3D;
38 35
import org.distorted.library.type.Static4D;
39 36
import org.distorted.library.type.Static5D;
......
109 106

  
110 107
      if( mInter[2][i]!=null )  // center
111 108
        {
112
        mInter[2][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+6, mCurrentDuration[i], step);
109
        mInter[2][i].interpolateMain(mUniforms, NUM_UNIFORMS*i+5, mCurrentDuration[i], step);
113 110

  
114
        mUniforms[NUM_UNIFORMS*i+6] = mUniforms[NUM_UNIFORMS*i+6]-mObjHalfX;
115
        mUniforms[NUM_UNIFORMS*i+7] =-mUniforms[NUM_UNIFORMS*i+7]+mObjHalfY;
111
        mUniforms[NUM_UNIFORMS*i+5] = mUniforms[NUM_UNIFORMS*i+5]-mObjHalfX;
112
        mUniforms[NUM_UNIFORMS*i+6] =-mUniforms[NUM_UNIFORMS*i+6]+mObjHalfY;
113
        mUniforms[NUM_UNIFORMS*i+7] = mUniforms[NUM_UNIFORMS*i+7]-mObjHalfZ;
116 114
        }
117 115

  
118 116
      mCurrentDuration[i] += step;
......
187 185
///////////////////////////////////////////////////////////////////////////////////////////////////
188 186
// wave
189 187

  
190
  synchronized long add(EffectNames eln, Data5D data, Data2D center, Data4D region)
188
  synchronized long add(EffectNames eln, Data5D data, Data3D center, Data4D region)
191 189
    {
192 190
    if( mMax[INDEX]>mNumEffects )
193 191
      {
......
218 216
///////////////////////////////////////////////////////////////////////////////////////////////////
219 217
// deform,distort
220 218

  
221
  synchronized long add(EffectNames eln, Data3D data, Data2D center, Data4D region)
219
  synchronized long add(EffectNames eln, Data3D data, Data3D center, Data4D region)
222 220
    {
223 221
    if( mMax[INDEX]>mNumEffects )
224 222
      {
......
247 245
///////////////////////////////////////////////////////////////////////////////////////////////////
248 246
// sink, swirl
249 247

  
250
  synchronized long add(EffectNames eln, Data1D data, Data2D center, Data4D region)
248
  synchronized long add(EffectNames eln, Data1D data, Data3D center, Data4D region)
251 249
    {
252 250
    if( mMax[INDEX]>mNumEffects )
253 251
      {
......
272 270
///////////////////////////////////////////////////////////////////////////////////////////////////
273 271
// sink, swirl
274 272

  
275
  synchronized long add(EffectNames eln, Data1D data, Data2D center)
273
  synchronized long add(EffectNames eln, Data1D data, Data3D center)
276 274
    {
277 275
    if( mMax[INDEX]>mNumEffects )
278 276
      {
......
296 294

  
297 295
///////////////////////////////////////////////////////////////////////////////////////////////////
298 296
  
299
  private long addPriv(EffectNames eln, Data2D center, Data4D region)
297
  private long addPriv(EffectNames eln, Data3D center, Data4D region)
300 298
    {
301 299
    if( region!=null )
302 300
      {
......
327 325
      mInter[1][mNumEffects] = null;
328 326
      }
329 327

  
330
    if( center instanceof Dynamic2D)
328
    if( center instanceof Dynamic3D)
331 329
      {
332
      mInter[2][mNumEffects] = (Dynamic2D)center;
330
      mInter[2][mNumEffects] = (Dynamic3D)center;
333 331
      }
334
    else if( center instanceof Static2D)
332
    else if( center instanceof Static3D)
335 333
      {
336 334
      mInter[2][mNumEffects] = null;
337
      mUniforms[NUM_UNIFORMS*mNumEffects+6] = ((Static2D)center).getX()-mObjHalfX;
338
      mUniforms[NUM_UNIFORMS*mNumEffects+7] =-((Static2D)center).getY()+mObjHalfY;
335
      mUniforms[NUM_UNIFORMS*mNumEffects+5] = ((Static3D)center).getX()-mObjHalfX;
336
      mUniforms[NUM_UNIFORMS*mNumEffects+6] =-((Static3D)center).getY()+mObjHalfY;
337
      mUniforms[NUM_UNIFORMS*mNumEffects+7] = ((Static3D)center).getZ()-mObjHalfZ;
339 338
      }
340 339

  
341 340
    long ret= addBase(eln);
src/main/res/raw/main_vertex_shader.glsl
208 208
  
209 209
void deform(in int effect, inout vec4 v)
210 210
  {
211
  vec2 center = vUniforms[effect+1].zw;
211
  vec2 center = vUniforms[effect+1].yz;
212 212
  vec2 force = vUniforms[effect].xy;    // force = vec(MM')
213 213
  vec2 vert_vec, horz_vec; 
214 214
  vec2 signXY = sign(center-v.xy);
......
286 286
        
287 287
void distort(in int effect, inout vec4 v, inout vec4 n)
288 288
  {
289
  vec2 center = vUniforms[effect+1].zw;
289
  vec2 center = vUniforms[effect+1].yz;
290 290
  vec2 ps = center-v.xy;
291 291
  vec3 force = vUniforms[effect].xyz;
292 292
  float d = degree(vUniforms[effect+2],center,ps);
......
314 314
 
315 315
void sink(in int effect,inout vec4 v)
316 316
  {
317
  vec2 center = vUniforms[effect+1].zw;
317
  vec2 center = vUniforms[effect+1].yz;
318 318
  vec2 ps = center-v.xy;
319 319
  float h = vUniforms[effect].x;
320 320
  float t = degree(vUniforms[effect+2],center,ps) * (1.0-h)/max(1.0,h);
......
331 331

  
332 332
void swirl(in int effect, inout vec4 v)
333 333
  {
334
  vec2 center  = vUniforms[effect+1].zw;
334
  vec2 center  = vUniforms[effect+1].yz;
335 335
  vec2 PS = center-v.xy;
336 336
  vec4 SO = vUniforms[effect+2];
337 337
  float d1_circle = degree_region(SO,PS);
......
416 416

  
417 417
void wave(in int effect, inout vec4 v, inout vec4 n)
418 418
  {
419
  vec2 center     = vUniforms[effect+1].zw;
419
  vec2 center     = vUniforms[effect+1].yz;
420 420
  float amplitude = vUniforms[effect  ].x;
421 421
  float length    = vUniforms[effect  ].y;
422 422

  

Also available in: Unified diff