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