Revision 2b7d2abb
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/library/effectqueue/EffectQueueFragment.java | ||
---|---|---|
31 | 31 |
{ |
32 | 32 |
private static final int NUM_FLOAT_UNIFORMS = FragmentEffect.NUM_FLOAT_UNIFORMS; |
33 | 33 |
private static final int NUM_INT_UNIFORMS = FragmentEffect.NUM_INT_UNIFORMS; |
34 |
|
|
34 |
private static final boolean USE_UBO = false; |
|
35 | 35 |
private static final int INDEX = EffectType.FRAGMENT.ordinal(); |
36 | 36 |
|
37 | 37 |
private final static int[] mNumEffectsH = new int[MAIN_VARIANTS]; |
38 |
private final static int[] mIntBlockIndex= new int[MAIN_VARIANTS];
|
|
39 |
private final static int[] mFloBlockIndex= new int[MAIN_VARIANTS];
|
|
38 |
private final static int[] mIntUniformsH = new int[MAIN_VARIANTS];
|
|
39 |
private final static int[] mFloUniformsH = new int[MAIN_VARIANTS];
|
|
40 | 40 |
|
41 | 41 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
42 | 42 |
|
43 | 43 |
EffectQueueFragment() |
44 | 44 |
{ |
45 |
super(NUM_FLOAT_UNIFORMS, NUM_INT_UNIFORMS, INDEX); |
|
45 |
super(NUM_FLOAT_UNIFORMS, NUM_INT_UNIFORMS, USE_UBO, INDEX);
|
|
46 | 46 |
} |
47 | 47 |
|
48 | 48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
57 | 57 |
static void uniforms(int mProgramH, int variant) |
58 | 58 |
{ |
59 | 59 |
mNumEffectsH[variant] = GLES30.glGetUniformLocation ( mProgramH, "fNumEffects"); |
60 |
mIntBlockIndex[variant] = GLES30.glGetUniformBlockIndex( mProgramH, "fUniformProperties");
|
|
61 |
mFloBlockIndex[variant] = GLES30.glGetUniformBlockIndex( mProgramH, "fUniformFloats");
|
|
60 |
mIntUniformsH[variant] = GLES30.glGetUniformLocation ( mProgramH, "fProperties");
|
|
61 |
mFloUniformsH[variant] = GLES30.glGetUniformLocation ( mProgramH, "fUniforms");
|
|
62 | 62 |
} |
63 | 63 |
|
64 | 64 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
80 | 80 |
EffectMessageSender.newMessage(mEffects[i]); |
81 | 81 |
} |
82 | 82 |
} |
83 |
|
|
84 |
mUBF.invalidate(); |
|
85 | 83 |
} |
86 | 84 |
|
87 | 85 |
mTime = currTime; |
... | ... | |
95 | 93 |
|
96 | 94 |
if( mNumEffects>0 ) |
97 | 95 |
{ |
98 |
GLES30.glBindBufferBase(GLES30.GL_UNIFORM_BUFFER, FRAG_INT_UBO_BINDING, mUBI.getIndex());
|
|
99 |
GLES30.glUniformBlockBinding(programH, mIntBlockIndex[variant], FRAG_INT_UBO_BINDING);
|
|
96 |
int[] arrayI = mUBI.getBackingArray();
|
|
97 |
float[] arrayF = mUBF.getBackingArray();
|
|
100 | 98 |
|
101 |
GLES30.glBindBufferBase(GLES30.GL_UNIFORM_BUFFER, FRAG_FLO_UBO_BINDING, mUBF.getIndex());
|
|
102 |
GLES30.glUniformBlockBinding(programH, mFloBlockIndex[variant], FRAG_FLO_UBO_BINDING);
|
|
99 |
GLES30.glUniform4iv( mIntUniformsH[variant], mNumEffects, arrayI, 0);
|
|
100 |
GLES30.glUniform4fv( mFloUniformsH[variant],(NUM_FLOAT_UNIFORMS/4)*mNumEffects, arrayF, 0);
|
|
103 | 101 |
} |
104 | 102 |
} |
105 | 103 |
} |
Also available in: Unified diff
Remove UBO from the fragment shader and come back to the default of only 5 concurrent fragment effects. All because UBOs in fragment shader crash on Adreno 510 and Adreno 506.