Project

General

Profile

« Previous | Next » 

Revision fe6fe99a

Added by Leszek Koltunski over 7 years ago

Small API simplification.

View differences:

src/main/java/org/distorted/library/main/DistortedEffects.java
150 150
        }
151 151
      }
152 152

  
153
    mainVertHeader += ("#define NUM_VERTEX "   + ( foundV ? getMaxVertex()   : 0 ) + "\n");
154
    mainFragHeader += ("#define NUM_FRAGMENT " + ( foundF ? getMaxFragment() : 0 ) + "\n");
153
    mainVertHeader += ("#define NUM_VERTEX "   + ( foundV ? getMax(EffectType.VERTEX  ) : 0 ) + "\n");
154
    mainFragHeader += ("#define NUM_FRAGMENT " + ( foundF ? getMax(EffectType.FRAGMENT) : 0 ) + "\n");
155 155

  
156 156
    //android.util.Log.e("Effects", "vertHeader= "+mainVertHeader);
157 157
    //android.util.Log.e("Effects", "fragHeader= "+mainFragHeader);
......
629 629

  
630 630
///////////////////////////////////////////////////////////////////////////////////////////////////
631 631
/**
632
 * Returns the maximum number of Matrix effects.
632
 * Returns the maximum number of effects of a given type.
633 633
 *
634
 * @return The maximum number of Matrix effects
634
 * @param type {@link EffectType}
635
 * @return The maximum number of effects of a given type.
635 636
 */
636 637
  @SuppressWarnings("unused")
637
  public static int getMaxMatrix()
638
  public static int getMax(EffectType type)
638 639
    {
639
    return EffectQueue.getMax(EffectType.MATRIX.ordinal());
640
    return EffectQueue.getMax(type.ordinal());
640 641
    }
641 642

  
642 643
///////////////////////////////////////////////////////////////////////////////////////////////////
643 644
/**
644
 * Returns the maximum number of Vertex effects.
645
 *
646
 * @return The maximum number of Vertex effects
647
 */
648
  @SuppressWarnings("unused")
649
  public static int getMaxVertex()
650
    {
651
    return EffectQueue.getMax(EffectType.VERTEX.ordinal());
652
    }
653

  
654
///////////////////////////////////////////////////////////////////////////////////////////////////
655
/**
656
 * Returns the maximum number of Fragment effects.
657
 *
658
 * @return The maximum number of Fragment effects
659
 */
660
  @SuppressWarnings("unused")
661
  public static int getMaxFragment()
662
    {
663
    return EffectQueue.getMax(EffectType.FRAGMENT.ordinal());
664
    }
665

  
666
///////////////////////////////////////////////////////////////////////////////////////////////////
667
/**
668
 * Returns the maximum number of Postprocess effects.
669
 *
670
 * @return The maximum number of Postprocess effects
671
 */
672
  @SuppressWarnings("unused")
673
  public static int getMaxPostprocess()
674
    {
675
    return EffectQueue.getMax(EffectType.POSTPROCESS.ordinal());
676
    }
677

  
678
///////////////////////////////////////////////////////////////////////////////////////////////////
679
/**
680
 * Sets the maximum number of Matrix effects that can be stored in a single EffectQueue at one time.
645
 * Sets the maximum number of effects that can be stored in a single EffectQueue at one time.
681 646
 * This can fail if:
682 647
 * <ul>
683 648
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
......
687 652
 * <li>Furthermore, this needs to be called before any instances of the DistortedEffects class get created.
688 653
 * </ul>
689 654
 *
690
 * @param max new maximum number of simultaneous Matrix Effects. Has to be a non-negative number not greater
691
 *            than Byte.MAX_VALUE
692
 * @return <code>true</code> if operation was successful, <code>false</code> otherwise.
693
 */
694
  @SuppressWarnings("unused")
695
  public static boolean setMaxMatrix(int max)
696
    {
697
    return EffectQueue.setMax(EffectType.MATRIX.ordinal(),max);
698
    }
699

  
700
///////////////////////////////////////////////////////////////////////////////////////////////////
701
/**
702
 * Sets the maximum number of Vertex effects that can be stored in a single EffectQueue at one time.
703
 * This can fail if:
704
 * <ul>
705
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
706
 * <li>We try to increase the value of 'max' when it is too late to do so already. It needs to be called
707
 *     before the Vertex Shader gets compiled, i.e. before the call to {@link Distorted#onCreate}. After this
708
 *     time only decreasing the value of 'max' is permitted.
709
* <li>Furthermore, this needs to be called before any instances of the DistortedEffects class get created.
710
 * </ul>
711
 *
712
 * @param max new maximum number of simultaneous Vertex Effects. Has to be a non-negative number not greater
713
 *            than Byte.MAX_VALUE
714
 * @return <code>true</code> if operation was successful, <code>false</code> otherwise.
715
 */
716
  @SuppressWarnings("unused")
717
  public static boolean setMaxVertex(int max)
718
    {
719
    return EffectQueue.setMax(EffectType.VERTEX.ordinal(),max);
720
    }
721

  
722
///////////////////////////////////////////////////////////////////////////////////////////////////
723
/**
724
 * Sets the maximum number of Fragment effects that can be stored in a single EffectQueue at one time.
725
 * This can fail if:
726
 * <ul>
727
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
728
 * <li>We try to increase the value of 'max' when it is too late to do so already. It needs to be called
729
 *     before the Fragment Shader gets compiled, i.e. before the call to {@link Distorted#onCreate}. After this
730
 *     time only decreasing the value of 'max' is permitted.
731
 * <li>Furthermore, this needs to be called before any instances of the DistortedEffects class get created.
732
 * </ul>
733
 *
734
 * @param max new maximum number of simultaneous Fragment Effects. Has to be a non-negative number not greater
735
 *            than Byte.MAX_VALUE
736
 * @return <code>true</code> if operation was successful, <code>false</code> otherwise.
737
 */
738
  @SuppressWarnings("unused")
739
  public static boolean setMaxFragment(int max)
740
    {
741
    return EffectQueue.setMax(EffectType.FRAGMENT.ordinal(),max);
742
    }
743

  
744
///////////////////////////////////////////////////////////////////////////////////////////////////
745
/**
746
 * Sets the maximum number of Postprocess effects that can be stored in a single EffectQueue at one time.
747
 * This can fail if:
748
 * <ul>
749
 * <li>the value of 'max' is outside permitted range (0 &le; max &le; Byte.MAX_VALUE)
750
 * <li>We try to increase the value of 'max' when it is too late to do so already. It needs to be called
751
 *     before the Fragment Shader gets compiled, i.e. before the call to {@link Distorted#onCreate}. After this
752
 *     time only decreasing the value of 'max' is permitted.
753
 * <li>Furthermore, this needs to be called before any instances of the DistortedEffects class get created.
754
 * </ul>
755
 *
756
 * @param max new maximum number of simultaneous Postprocess Effects. Has to be a non-negative number not greater
655
 * @param type {@link EffectType}
656
 * @param max new maximum number of simultaneous effects. Has to be a non-negative number not greater
757 657
 *            than Byte.MAX_VALUE
758 658
 * @return <code>true</code> if operation was successful, <code>false</code> otherwise.
759 659
 */
760 660
  @SuppressWarnings("unused")
761
  public static boolean setMaxPostprocess(int max)
661
  public static boolean setMax(EffectType type, int max)
762 662
    {
763
    return EffectQueue.setMax(EffectType.POSTPROCESS.ordinal(),max);
663
    return EffectQueue.setMax(type.ordinal(),max);
764 664
    }
765 665

  
766 666
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/library/main/DistortedObject.java
91 91
        object = job.object;
92 92

  
93 93
        //android.util.Log.d("Object", object.getClass().getSimpleName()+"  ---> need to "
94
        //                  +(job.action==JOB_CREATE ? "create":"delete")+" objectID="+object.mID );
94
        //                  +(job.action==JOB_CREATE ? "create":"delete")+" objectID="+object.mDistortedEffectsID );
95 95

  
96 96
        if( job.action==JOB_CREATE )
97 97
          {
src/main/java/org/distorted/library/main/EffectQueue.java
40 40
  protected static int[] mMax = new int[EffectType.LENGTH];
41 41
  protected Vector<EffectListener> mListeners =null;
42 42
  protected int mNumListeners=0;  // ==mListeners.length(), but we only create mListeners if the first one gets added
43
  protected long mID;
43
  protected long mDistortedEffectsID;
44 44

  
45 45
  private static boolean mCreated;
46 46
  private int mIndex;
......
55 55
   
56 56
  EffectQueue(long id, int numUniforms, int index)
57 57
    {
58
    mNumEffects  = 0;
59
    mID          = id;
60
    mIndex       = index;
61
    mNumUniforms = numUniforms;
58
    mNumEffects         = 0;
59
    mDistortedEffectsID = id;
60
    mIndex              = index;
61
    mNumUniforms        = numUniforms;
62 62

  
63 63
    int max = mMax[mIndex];
64 64

  
......
208 208
      if( notify )
209 209
        {
210 210
        for(int j=0; j<mNumListeners; j++)
211
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_REMOVED, mEffects[i].getID(), mID);
211
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_REMOVED, mEffects[i].getID(), mDistortedEffectsID);
212 212
        }
213 213

  
214 214
      mEffects[i] = null;
......
241 241
    mEffects[mNumEffects] = null;
242 242

  
243 243
    for(int i=0; i<mNumListeners; i++) 
244
      EffectMessageSender.newMessage( mListeners.elementAt(i), EffectMessage.EFFECT_REMOVED, removedID, mID);
244
      EffectMessageSender.newMessage( mListeners.elementAt(i), EffectMessage.EFFECT_REMOVED, removedID, mDistortedEffectsID);
245 245
    }
246 246
  
247 247
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/library/main/EffectQueueFragment.java
66 66
      if( mEffects[i].compute(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i], step) )
67 67
        {
68 68
        for(int j=0; j<mNumListeners; j++)
69
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
69
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mDistortedEffectsID);
70 70

  
71 71
        if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
72 72
          {
src/main/java/org/distorted/library/main/EffectQueueMatrix.java
299 299
      if( mEffects[i].compute(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i], step) )
300 300
        {
301 301
        for(int j=0; j<mNumListeners; j++)
302
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
302
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mDistortedEffectsID);
303 303

  
304 304
        if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
305 305
          remove(i--);
src/main/java/org/distorted/library/main/EffectQueuePostprocess.java
187 187
      if( mEffects[i].compute(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i], step) )
188 188
        {
189 189
        for(int j=0; j<mNumListeners; j++)
190
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
190
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mDistortedEffectsID);
191 191

  
192 192
        if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
193 193
          {
src/main/java/org/distorted/library/main/EffectQueueVertex.java
66 66
      if( mEffects[i].compute(mUniforms, NUM_UNIFORMS*i, mCurrentDuration[i], step) )
67 67
        {
68 68
        for(int j=0; j<mNumListeners; j++)
69
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mID);
69
          EffectMessageSender.newMessage( mListeners.elementAt(j), EffectMessage.EFFECT_FINISHED, mEffects[i].getID(), mDistortedEffectsID);
70 70

  
71 71
        if( mEffects[i].isUnity( mUniforms, NUM_UNIFORMS*i) )
72 72
          {
src/main/java/org/distorted/library/program/DistortedProgram.java
22 22
import android.opengl.GLES30;
23 23
import android.os.Build;
24 24

  
25
import org.distorted.library.effect.EffectType;
25 26
import org.distorted.library.main.DistortedEffects;
26 27

  
27 28
import java.io.BufferedReader;
......
201 202
      int realMaxV = (maxV-11)/4;   // adjust this in case of changes to the shaders...
202 203
      int realMaxF = (maxF- 2)/4;   //
203 204

  
204
      if( DistortedEffects.getMaxVertex()   > realMaxV )
205
      if( DistortedEffects.getMax(EffectType.VERTEX)   > realMaxV )
205 206
        {
206 207
        throw new VertexUniformsException("Too many effects in the vertex shader, max is "+realMaxV, realMaxV);
207 208
        }
208
      if( DistortedEffects.getMaxFragment() > realMaxF )
209
      if( DistortedEffects.getMax(EffectType.FRAGMENT) > realMaxF )
209 210
        {
210 211
        throw new FragmentUniformsException("Too many effects in the fragment shader, max is "+realMaxF, realMaxF);
211 212
        }

Also available in: Unified diff