Revision de77a6c5
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/library/effectqueue/EffectQueueVertex.java | ||
---|---|---|
38 | 38 |
|
39 | 39 |
private static final int INDEX = EffectType.VERTEX.ordinal(); |
40 | 40 |
|
41 |
private final static int[] mNumEffectsH = new int[MAIN_VARIANTS];
|
|
42 |
private final static int[] mInflateH = new int[MAIN_VARIANTS];
|
|
43 |
private final static int[] mUniformsH = new int[MAIN_VARIANTS];
|
|
44 |
private final static int[] mPropBlockIndex= new int[MAIN_VARIANTS];
|
|
41 |
private final static int[] mNumEffectsH = new int[MAIN_VARIANTS]; |
|
42 |
private final static int[] mInflateH = new int[MAIN_VARIANTS]; |
|
43 |
private final static int[] mIntBlockIndex= new int[MAIN_VARIANTS];
|
|
44 |
private final static int[] mFloBlockIndex= new int[MAIN_VARIANTS];
|
|
45 | 45 |
|
46 | 46 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
47 | 47 |
|
... | ... | |
61 | 61 |
|
62 | 62 |
static void uniforms(int mProgramH, int variant) |
63 | 63 |
{ |
64 |
mNumEffectsH[variant] = GLES30.glGetUniformLocation ( mProgramH, "vNumEffects");
|
|
65 |
mInflateH[variant] = GLES30.glGetUniformLocation ( mProgramH, "u_Inflate");
|
|
66 |
mUniformsH[variant] = GLES30.glGetUniformLocation ( mProgramH, "vUniforms");
|
|
67 |
mPropBlockIndex[variant] = GLES30.glGetUniformBlockIndex( mProgramH, "vUniformProperties");
|
|
64 |
mNumEffectsH[variant] = GLES30.glGetUniformLocation ( mProgramH, "vNumEffects"); |
|
65 |
mInflateH[variant] = GLES30.glGetUniformLocation ( mProgramH, "u_Inflate"); |
|
66 |
mIntBlockIndex[variant] = GLES30.glGetUniformBlockIndex( mProgramH, "vUniformProperties");
|
|
67 |
mFloBlockIndex[variant] = GLES30.glGetUniformBlockIndex( mProgramH, "vUniformFloats");
|
|
68 | 68 |
} |
69 | 69 |
|
70 | 70 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
77 | 77 |
{ |
78 | 78 |
if( currTime==mTime ) return; |
79 | 79 |
if( mTime==0 ) mTime = currTime; |
80 |
long step = (currTime-mTime); |
|
81 | 80 |
|
82 |
for(int i=0; i<mNumEffects; i++)
|
|
81 |
if( mNumEffects>0 )
|
|
83 | 82 |
{ |
84 |
if( mEffects[i].compute(mFloatUniforms, NUM_FLOAT_UNIFORMS*i, currTime, step) ) |
|
83 |
long step = (currTime-mTime); |
|
84 |
float[] array = mUBF.getBackingArray(); |
|
85 |
|
|
86 |
for(int i=0; i<mNumEffects; i++) |
|
85 | 87 |
{ |
86 |
EffectMessageSender.newMessage(mEffects[i]); |
|
88 |
if( mEffects[i].compute(array, NUM_FLOAT_UNIFORMS*i, currTime, step) ) |
|
89 |
{ |
|
90 |
EffectMessageSender.newMessage(mEffects[i]); |
|
91 |
} |
|
87 | 92 |
} |
93 |
|
|
94 |
mUBF.invalidate(); |
|
88 | 95 |
} |
89 | 96 |
|
90 | 97 |
mTime = currTime; |
... | ... | |
103 | 110 |
|
104 | 111 |
if( mNumEffects>0 ) |
105 | 112 |
{ |
106 |
int index = mUBP.getIndex(); |
|
107 |
GLES30.glBindBufferBase(GLES30.GL_UNIFORM_BUFFER, PROP_VERT_UBO_BINDING, index); |
|
108 |
GLES30.glUniformBlockBinding(programH, mPropBlockIndex[variant], PROP_VERT_UBO_BINDING); |
|
109 |
GLES30.glUniform4fv( mUniformsH[variant] ,(NUM_FLOAT_UNIFORMS/4)*mNumEffects, mFloatUniforms , 0); |
|
113 |
GLES30.glBindBufferBase(GLES30.GL_UNIFORM_BUFFER, VERT_INT_UBO_BINDING, mUBI.getIndex()); |
|
114 |
GLES30.glUniformBlockBinding(programH, mIntBlockIndex[variant], VERT_INT_UBO_BINDING); |
|
115 |
|
|
116 |
GLES30.glBindBufferBase(GLES30.GL_UNIFORM_BUFFER, VERT_FLO_UBO_BINDING, mUBF.getIndex()); |
|
117 |
GLES30.glUniformBlockBinding(programH, mFloBlockIndex[variant], VERT_FLO_UBO_BINDING); |
|
110 | 118 |
} |
111 | 119 |
} |
112 | 120 |
} |
Also available in: Unified diff
Introduce another Uniform Block Object. Now we can have much more vertex and fragment effects - up their default number to 100.