Project

General

Profile

« Previous | Next » 

Revision 78db8663

Added by Leszek Koltunski about 7 years ago

Beginning of work on Mipmap levels.

View differences:

src/main/java/org/distorted/library/EffectQueuePostprocess.java
259 259
      {
260 260
      compute(time);
261 261

  
262
      surface.mBuffer1.setAsInput();
263
      float w = surface.mBuffer1.mWidth;
264
      float h = surface.mBuffer2.mHeight;
262
      float w1 = surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].mWidth;
263
      float h1 = surface.mBuffer2[DistortedOutputSurface.CUR_MIPMAP].mHeight;
264
      float w2 = surface.mWidth;
265
      float h2 = surface.mHeight;
265 266

  
266 267
      int radius = (int)mUniforms[0];
267 268
      if( radius>=MAX_BLUR ) radius = MAX_BLUR-1;
......
270 271
      int offset = radius + radius*radius/4;
271 272
      radius = (radius+1)/2;
272 273

  
273
      GLES30.glViewport(0, 0, (int)w, (int)h);
274

  
275 274
      // horizontal blur
275
      GLES30.glViewport(0, 0, (int)w1, (int)h1);
276 276
      mBlur1Program.useProgram();
277
      surface.mBuffer2.setAsOutput(time);
277
      surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].setAsInput();
278
      surface.mBuffer2[DistortedOutputSurface.CUR_MIPMAP].setAsOutput(time);
278 279

  
279 280
      GLES30.glUniform1fv( mWeights1H, radius+1, weightsCache,offset);
280 281
      GLES30.glUniform1i( mRadius1H, radius);
281 282
      GLES30.glUniform1f( mDepth1H , 1.0f-surface.mNear);
282 283
      GLES30.glUniform1i( mColorTexture1H , 0 );
283
      for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/h;
284
      for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/h1;
284 285
      GLES30.glUniform1fv( mOffsets1H ,radius+1, mOffsets,0);
285 286
      GLES30.glVertexAttribPointer(mBlur1Program.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
286 287
      GLES30.glVertexAttribPointer(mBlur1Program.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTexture);
287 288
      GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
288 289

  
289 290
      // vertical blur
291
      GLES30.glViewport(0, 0, (int)w2, (int)h2);
290 292
      mBlur2Program.useProgram();
291
      surface.mBuffer2.setAsInput();
292
      surface.mBuffer1.setAsDepth();
293
      surface.mBuffer2[DistortedOutputSurface.CUR_MIPMAP].setAsInput();
294
      surface.mBuffer1[DistortedOutputSurface.CUR_MIPMAP].setAsDepth();
293 295
      surface.setAsOutput(time);
294 296

  
295 297
      GLES30.glUniform1fv( mWeights2H, radius+1, weightsCache,offset);
......
297 299
      GLES30.glUniform1f( mDepth2H , 1.0f-surface.mNear);
298 300
      GLES30.glUniform1i( mColorTexture2H , 0 );
299 301
      GLES30.glUniform1i( mDepthTexture2H , 1 );
300
      for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/w;
302
      for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/w1;
301 303
      GLES30.glUniform1fv( mOffsets2H ,radius+1, mOffsets,0);
302 304
      GLES30.glVertexAttribPointer(mBlur2Program.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
303 305
      GLES30.glVertexAttribPointer(mBlur2Program.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTexture);

Also available in: Unified diff