Project

General

Profile

« Previous | Next » 

Revision ed5bf324

Added by Leszek Koltunski about 7 years ago

Merging blurred surfaces mostly ok now (blurred image still appears a bit shifted down for some reason)

View differences:

src/main/java/org/distorted/library/EffectQueuePostprocess.java
49 49
  private static final int NUM_CACHE    = 0;
50 50
  private static final int INDEX = EffectTypes.POSTPROCESS.ordinal();
51 51

  
52
  private static final FloatBuffer mQuadPositions, mQuadTextureNor, mQuadTextureInv;
52
  private static final FloatBuffer mQuadPositions, mQuadTexture;
53 53

  
54 54
  static
55 55
    {
......
58 58

  
59 59
    float[] position  = { -0.5f, -0.5f,  -0.5f, 0.5f,  0.5f,-0.5f,  0.5f, 0.5f };
60 60
    float[] textureNor= {  0.0f,  0.0f,   0.0f, 1.0f,  1.0f, 0.0f,  1.0f, 1.0f };
61
    float[] textureInv= {  0.0f,  0.0f,   1.0f, 0.0f,  0.0f, 1.0f,  1.0f, 1.0f };
62 61

  
63 62
    mQuadPositions = ByteBuffer.allocateDirect(POS_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
64 63
    mQuadPositions.put(position).position(0);
65
    mQuadTextureNor= ByteBuffer.allocateDirect(TEX_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
66
    mQuadTextureNor.put(textureNor).position(0);
67
    mQuadTextureInv= ByteBuffer.allocateDirect(TEX_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
68
    mQuadTextureInv.put(textureInv).position(0);
64
    mQuadTexture= ByteBuffer.allocateDirect(TEX_DATA_SIZE*dataLength*bytes_per_float).order(ByteOrder.nativeOrder()).asFloatBuffer();
65
    mQuadTexture.put(textureNor).position(0);
69 66
    }
70 67

  
71 68
  private static DistortedFramebuffer mPostBuffer = new DistortedFramebuffer(true,DistortedSurface.TYPE_SYST,1,1);
......
288 285
      for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/h;
289 286
      GLES30.glUniform1fv( mOffsets1H ,radius+1, mOffsets,0);
290 287
      GLES30.glVertexAttribPointer(mBlur1Program.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
291
      GLES30.glVertexAttribPointer(mBlur1Program.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTextureInv);
288
      GLES30.glVertexAttribPointer(mBlur1Program.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTexture);
292 289
      GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
293 290

  
294 291
      // vertical blur
......
305 302
      for(int i=0; i<=radius; i++) mOffsets[i] = offsetsCache[offset+i]/w;
306 303
      GLES30.glUniform1fv( mOffsets2H ,radius+1, mOffsets,0);
307 304
      GLES30.glVertexAttribPointer(mBlur2Program.mAttribute[0], POS_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadPositions);
308
      GLES30.glVertexAttribPointer(mBlur2Program.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTextureInv);
305
      GLES30.glVertexAttribPointer(mBlur2Program.mAttribute[1], TEX_DATA_SIZE, GLES30.GL_FLOAT, false, 0, mQuadTexture);
309 306
      GLES30.glDrawArrays(GLES30.GL_TRIANGLE_STRIP, 0, 4);
310 307
      }
311 308

  
src/main/res/raw/blur2_fragment_shader.glsl
46 46

  
47 47
  for (int i=1; i<=u_Radius; i+=1)
48 48
    {
49
    pixel += ( TEXTURE(u_ColorTexture,vec2(v_TexCoordinate.x+u_Offsets[i],v_TexCoordinate.y)) +
50
               TEXTURE(u_ColorTexture,vec2(v_TexCoordinate.x-u_Offsets[i],v_TexCoordinate.y)) ) * u_Weights[i];
49
    pixel += ( TEXTURE(u_ColorTexture,vec2(v_TexCoordinate.x,v_TexCoordinate.y+u_Offsets[i])) +
50
               TEXTURE(u_ColorTexture,vec2(v_TexCoordinate.x,v_TexCoordinate.y-u_Offsets[i])) ) * u_Weights[i];
51 51
    }
52 52

  
53 53
  FRAG_COLOR = pixel;

Also available in: Unified diff