Project

General

Profile

Download (4.5 KB) Statistics
| Branch: | Revision:

library / src / main / java / org / distorted / library / effectqueue / EffectQueueFragment.java @ 1dec66e0

1 d333eb6b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2 dbdf8a73 Leszek Koltunski
// Copyright 2016 Leszek Koltunski  leszek@koltunski.pl                                          //
3 d333eb6b Leszek Koltunski
//                                                                                               //
4 46b572b5 Leszek Koltunski
// This file is part of Distorted.                                                               //
5 d333eb6b Leszek Koltunski
//                                                                                               //
6 dbdf8a73 Leszek Koltunski
// This library is free software; you can redistribute it and/or                                 //
7
// modify it under the terms of the GNU Lesser General Public                                    //
8
// License as published by the Free Software Foundation; either                                  //
9
// version 2.1 of the License, or (at your option) any later version.                            //
10 d333eb6b Leszek Koltunski
//                                                                                               //
11 dbdf8a73 Leszek Koltunski
// This library is distributed in the hope that it will be useful,                               //
12 d333eb6b Leszek Koltunski
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13 dbdf8a73 Leszek Koltunski
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                             //
14
// Lesser General Public License for more details.                                               //
15 d333eb6b Leszek Koltunski
//                                                                                               //
16 dbdf8a73 Leszek Koltunski
// You should have received a copy of the GNU Lesser General Public                              //
17
// License along with this library; if not, write to the Free Software                           //
18
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA                //
19 d333eb6b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
20
21 809dcae3 Leszek Koltunski
package org.distorted.library.effectqueue;
22 6a06a912 Leszek Koltunski
23 b7074bc6 Leszek Koltunski
import android.opengl.GLES30;
24 6a06a912 Leszek Koltunski
25 da9b3f07 Leszek Koltunski
import org.distorted.library.effect.EffectType;
26 fe82a979 Leszek Koltunski
import org.distorted.library.effect.FragmentEffect;
27 ed06301f Leszek Koltunski
import org.distorted.library.message.EffectMessageSender;
28 a4835695 Leszek Koltunski
29 6a06a912 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
30
31 d07f2950 Leszek Koltunski
class EffectQueueFragment extends EffectQueue
32 6a06a912 Leszek Koltunski
  {
33 96e3b88a Leszek Koltunski
  private static final int NUM_FLOAT_UNIFORMS = FragmentEffect.NUM_FLOAT_UNIFORMS;
34
  private static final int NUM_INT_UNIFORMS   = FragmentEffect.NUM_INT_UNIFORMS;
35 2b7d2abb Leszek Koltunski
  private static final boolean USE_UBO        = false;
36 da9b3f07 Leszek Koltunski
  private static final int INDEX = EffectType.FRAGMENT.ordinal();
37 c1a38ba3 Leszek Koltunski
38 de77a6c5 Leszek Koltunski
  private final static int[] mNumEffectsH  = new int[MAIN_VARIANTS];
39 2b7d2abb Leszek Koltunski
  private final static int[] mIntUniformsH = new int[MAIN_VARIANTS];
40
  private final static int[] mFloUniformsH = new int[MAIN_VARIANTS];
41 c1a38ba3 Leszek Koltunski
42 6a06a912 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
43
   
44 20dbec0e Leszek Koltunski
  EffectQueueFragment()
45 6a06a912 Leszek Koltunski
    { 
46 2b7d2abb Leszek Koltunski
    super(NUM_FLOAT_UNIFORMS, NUM_INT_UNIFORMS, USE_UBO, INDEX);
47 6a06a912 Leszek Koltunski
    }
48
49 f046b159 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
50
51
  EffectQueueFragment(EffectQueueFragment source)
52
    {
53
    super(source);
54
    }
55
56 6a06a912 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
57
58 809dcae3 Leszek Koltunski
  static void uniforms(int mProgramH, int variant)
59 c1a38ba3 Leszek Koltunski
    {
60 de77a6c5 Leszek Koltunski
    mNumEffectsH[variant]   = GLES30.glGetUniformLocation  ( mProgramH, "fNumEffects");
61 2b7d2abb Leszek Koltunski
    mIntUniformsH[variant]  = GLES30.glGetUniformLocation  ( mProgramH, "fProperties");
62
    mFloUniformsH[variant]  = GLES30.glGetUniformLocation  ( mProgramH, "fUniforms");
63 c1a38ba3 Leszek Koltunski
    }
64
65 6a06a912 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
66
  
67 835b197e Leszek Koltunski
  void compute(long currTime, long step)
68
    {
69 de77a6c5 Leszek Koltunski
    if( mNumEffects>0 )
70 6a06a912 Leszek Koltunski
      {
71 de77a6c5 Leszek Koltunski
      float[] array = mUBF.getBackingArray();
72
73
      for(int i=0; i<mNumEffects; i++)
74 6a06a912 Leszek Koltunski
        {
75 de77a6c5 Leszek Koltunski
        if( mEffects[i].compute(array, NUM_FLOAT_UNIFORMS*i, currTime, step) )
76
          {
77
          EffectMessageSender.newMessage(mEffects[i]);
78
          }
79 15aa7d94 Leszek Koltunski
        }
80 6a06a912 Leszek Koltunski
      }
81
    }
82
83
///////////////////////////////////////////////////////////////////////////////////////////////////
84
  
85 78ff6ea9 Leszek Koltunski
  void send(int programH, int variant)
86 6a06a912 Leszek Koltunski
    {
87 b7074bc6 Leszek Koltunski
    GLES30.glUniform1i( mNumEffectsH[variant], mNumEffects);
88 0a046359 Leszek Koltunski
89 6a06a912 Leszek Koltunski
    if( mNumEffects>0 )
90 0a046359 Leszek Koltunski
      {
91 2b7d2abb Leszek Koltunski
      int[]   arrayI = mUBI.getBackingArray();
92
      float[] arrayF = mUBF.getBackingArray();
93 de77a6c5 Leszek Koltunski
94 2b7d2abb Leszek Koltunski
      GLES30.glUniform4iv( mIntUniformsH[variant],                       mNumEffects, arrayI, 0);
95
      GLES30.glUniform4fv( mFloUniformsH[variant],(NUM_FLOAT_UNIFORMS/4)*mNumEffects, arrayF, 0);
96 6a06a912 Leszek Koltunski
      }  
97
    }
98
  }