Revision b7dba709
Added by Leszek Koltunski about 7 years ago
src/main/java/org/distorted/library/EffectQueuePostprocess.java | ||
---|---|---|
93 | 93 |
private static float[] offsetsCache = new float[MAX_BLUR + MAX_BLUR*MAX_BLUR/4]; |
94 | 94 |
|
95 | 95 |
private static DistortedProgram mBlur1Program, mBlur2Program; |
96 |
private static int mRadius1H,mOffsets1H,mWeights1H,mDepth1H, mScale1H, mColorTexture1H;
|
|
97 |
private static int mRadius2H,mOffsets2H,mWeights2H,mDepth2H, mScale2H, mColorTexture2H, mDepthTexture2H;
|
|
96 |
private static int mRadius1H,mOffsets1H,mWeights1H,mDepth1H, mColorTexture1H; |
|
97 |
private static int mRadius2H,mOffsets2H,mWeights2H,mDepth2H, mColorTexture2H, mDepthTexture2H; |
|
98 | 98 |
private static float[] mWeights = new float[MAX_BLUR]; |
99 | 99 |
private static float[] mOffsets = new float[MAX_BLUR]; |
100 | 100 |
// another effect .... |
... | ... | |
131 | 131 |
mOffsets1H = GLES30.glGetUniformLocation( blur1ProgramH, "u_Offsets"); |
132 | 132 |
mWeights1H = GLES30.glGetUniformLocation( blur1ProgramH, "u_Weights"); |
133 | 133 |
mDepth1H = GLES30.glGetUniformLocation( blur1ProgramH, "u_Depth"); |
134 |
mScale1H = GLES30.glGetUniformLocation( blur1ProgramH, "u_Scale"); |
|
135 | 134 |
mColorTexture1H = GLES30.glGetUniformLocation( blur1ProgramH, "u_ColorTexture"); |
136 | 135 |
|
137 | 136 |
final InputStream blur2VertexStream = resources.openRawResource(R.raw.blur_vertex_shader); |
... | ... | |
155 | 154 |
mOffsets2H = GLES30.glGetUniformLocation( blur2ProgramH, "u_Offsets"); |
156 | 155 |
mWeights2H = GLES30.glGetUniformLocation( blur2ProgramH, "u_Weights"); |
157 | 156 |
mDepth2H = GLES30.glGetUniformLocation( blur2ProgramH, "u_Depth"); |
158 |
mScale2H = GLES30.glGetUniformLocation( blur2ProgramH, "u_Scale"); |
|
159 | 157 |
mColorTexture2H = GLES30.glGetUniformLocation( blur2ProgramH, "u_ColorTexture"); |
160 | 158 |
mDepthTexture2H = GLES30.glGetUniformLocation( blur2ProgramH, "u_DepthTexture"); |
161 | 159 |
} |
... | ... | |
261 | 259 |
{ |
262 | 260 |
compute(time); |
263 | 261 |
|
264 |
surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].setAsInput();
|
|
265 |
float w = surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].mWidth;
|
|
266 |
float h = surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].mHeight;
|
|
262 |
surface.mBuffer1.setAsInput(); |
|
263 |
float w = surface.mBuffer1.mWidth; |
|
264 |
float h = surface.mBuffer2.mHeight;
|
|
267 | 265 |
|
268 | 266 |
int radius = (int)mUniforms[0]; |
269 | 267 |
if( radius>=MAX_BLUR ) radius = MAX_BLUR-1; |
... | ... | |
276 | 274 |
|
277 | 275 |
// horizontal blur |
278 | 276 |
mBlur1Program.useProgram(); |
279 |
surface.mBuffer2[DistortedOutputSurface.CUR_MIPMAP].setAsOutput(time);
|
|
277 |
surface.mBuffer2.setAsOutput(time); |
|
280 | 278 |
|
281 | 279 |
GLES30.glUniform1fv( mWeights1H, radius+1, weightsCache,offset); |
282 | 280 |
GLES30.glUniform1i( mRadius1H, radius); |
283 | 281 |
GLES30.glUniform1f( mDepth1H , 1.0f-surface.mNear); |
284 |
GLES30.glUniform1f( mScale1H , 1.0f); |
|
285 | 282 |
GLES30.glUniform1i( mColorTexture1H , 0 ); |
286 | 283 |
for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/h; |
287 | 284 |
GLES30.glUniform1fv( mOffsets1H ,radius+1, mOffsets,0); |
... | ... | |
291 | 288 |
|
292 | 289 |
// vertical blur |
293 | 290 |
mBlur2Program.useProgram(); |
294 |
surface.mBuffer2[DistortedOutputSurface.CUR_MIPMAP].setAsInput();
|
|
295 |
surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].setAsDepth();
|
|
291 |
surface.mBuffer2.setAsInput(); |
|
292 |
surface.mBuffer1.setAsDepth(); |
|
296 | 293 |
surface.setAsOutput(time); |
297 | 294 |
|
298 | 295 |
GLES30.glUniform1fv( mWeights2H, radius+1, weightsCache,offset); |
299 | 296 |
GLES30.glUniform1i( mRadius2H, radius); |
300 | 297 |
GLES30.glUniform1f( mDepth2H , 1.0f-surface.mNear); |
301 |
GLES30.glUniform1f( mScale2H , 0.9f); |
|
302 | 298 |
GLES30.glUniform1i( mColorTexture2H , 0 ); |
303 | 299 |
GLES30.glUniform1i( mDepthTexture2H , 1 ); |
304 | 300 |
for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/w; |
Also available in: Unified diff
Roll back the recent MIPMAP work.