parent
							
								
									9d0cb83334
								
							
						
					
					
						commit
						e112ecdeb9
					
				| @ -0,0 +1,33 @@ | ||||
| package com.frank.camerafilter.filter.advance; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| import android.opengl.GLES30; | ||||
| 
 | ||||
| import com.frank.camerafilter.R; | ||||
| import com.frank.camerafilter.filter.BaseFilter; | ||||
| import com.frank.camerafilter.util.OpenGLUtil; | ||||
| 
 | ||||
| public class BeautyBlurFilter extends BaseFilter { | ||||
| 
 | ||||
|     private int blurSize; | ||||
| 
 | ||||
|     public BeautyBlurFilter(Context context) { | ||||
|         super(NORMAL_VERTEX_SHADER, OpenGLUtil.readShaderFromSource(context, R.raw.zoomblur)); | ||||
|     } | ||||
| 
 | ||||
|     protected void onInit() { | ||||
|         super.onInit(); | ||||
|         blurSize = GLES30.glGetUniformLocation(getProgramId(), "blurSize"); | ||||
|     } | ||||
| 
 | ||||
|     protected void onInitialized() { | ||||
|         super.onInitialized(); | ||||
|         setFloat(blurSize, 0.3f); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onInputSizeChanged(int width, int height) { | ||||
|         super.onInputSizeChanged(width, height); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,24 @@ | ||||
| varying highp vec2 textureCoordinate; | ||||
| 
 | ||||
| uniform sampler2D inputImageTexture; | ||||
| 
 | ||||
| uniform highp vec2 blurCenter; | ||||
| uniform highp float blurSize; | ||||
| 
 | ||||
| void main() | ||||
| { | ||||
| 	// TODO: Do a more intelligent scaling based on resolution here | ||||
| 	highp vec2 samplingOffset = 1.0/100.0 * (blurCenter - textureCoordinate) * blurSize; | ||||
| 
 | ||||
| 	lowp vec4 fragmentColor = texture2D(inputImageTexture, textureCoordinate) * 0.18; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate + samplingOffset) * 0.15; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate + (2.0 * samplingOffset)) *  0.12; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate + (3.0 * samplingOffset)) * 0.09; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate + (4.0 * samplingOffset)) * 0.05; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate - samplingOffset) * 0.15; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate - (2.0 * samplingOffset)) *  0.12; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate - (3.0 * samplingOffset)) * 0.09; | ||||
| 	fragmentColor += texture2D(inputImageTexture, textureCoordinate - (4.0 * samplingOffset)) * 0.05; | ||||
| 
 | ||||
| 	gl_FragColor = fragmentColor; | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue