Android Open Source - FxCameraApp Gl Fast Blur Shader From Project Back to project page FxCameraApp .
License The source code is released under:
MIT License
If you think the Android project FxCameraApp listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.af.experiments.FxCameraApp.shaders;
/ / f r o m w w w . j a v a 2 s . c o m
import static android.opengl.GLES20.glUniform1f;
public class GlFastBlurShader extends GlShader {
private static final String VERTEX_SHADER =
"attribute vec4 aPosition;" +
"attribute vec4 aTextureCoord;" +
"const lowp int GAUSSIAN_SAMPLES = 9;" +
"uniform highp float texelWidthOffset;" +
"uniform highp float texelHeightOffset;" +
"uniform highp float blurSize;" +
"varying highp vec2 centerTextureCoordinate;" +
"varying highp vec2 oneStepLeftTextureCoordinate;" +
"varying highp vec2 twoStepsLeftTextureCoordinate;" +
"varying highp vec2 oneStepRightTextureCoordinate;" +
"varying highp vec2 twoStepsRightTextureCoordinate;" +
//"const float offset[3] = float[](0.0, 1.3846153846, 3.2307692308);" +
"void main() {" +
"gl_Position = aPosition;" +
"vec2 firstOffset = vec2(1.3846153846 * texelWidthOffset, 1.3846153846 * texelHeightOffset) * blurSize;" +
"vec2 secondOffset = vec2(3.2307692308 * texelWidthOffset, 3.2307692308 * texelHeightOffset) * blurSize;" +
"centerTextureCoordinate = aTextureCoord.xy;" +
"oneStepLeftTextureCoordinate = centerTextureCoordinate - firstOffset;" +
"twoStepsLeftTextureCoordinate = centerTextureCoordinate - secondOffset;" +
"oneStepRightTextureCoordinate = centerTextureCoordinate + firstOffset;" +
"twoStepsRightTextureCoordinate = centerTextureCoordinate + secondOffset;" +
"}" ;
private static final String FRAGMENT_SHADER =
"precision highp float;" + // ?????????????????
"uniform lowp sampler2D sTexture;" +
"varying highp vec2 centerTextureCoordinate;" +
"varying highp vec2 oneStepLeftTextureCoordinate;" +
"varying highp vec2 twoStepsLeftTextureCoordinate;" +
"varying highp vec2 oneStepRightTextureCoordinate;" +
"varying highp vec2 twoStepsRightTextureCoordinate;" +
//"const float weight[3] = float[]( 0.2270270270, 0.3162162162, 0.0702702703 );" +
"void main() {" +
"lowp vec4 color = texture2D(sTexture, centerTextureCoordinate) * 0.2270270270;" +
"color += texture2D(sTexture, oneStepLeftTextureCoordinate) * 0.3162162162;" +
"color += texture2D(sTexture, oneStepRightTextureCoordinate) * 0.3162162162;" +
"color += texture2D(sTexture, twoStepsLeftTextureCoordinate) * 0.0702702703;" +
"color += texture2D(sTexture, twoStepsRightTextureCoordinate) * 0.0702702703;" +
"gl_FragColor = color;" +
"}" ;
private float mTexelWidthOffset;
private float mTexelHeightOffset;
private float mBlurSize = 1.0f;
public GlFastBlurShader() {
super (VERTEX_SHADER, FRAGMENT_SHADER);
}
protected String mShaderName = "Fast blur" ;
public String getName() {
return mShaderName;
}
public float getTexelWidthOffset() {
return mTexelWidthOffset;
}
public void setTexelWidthOffset(final float texelWidthOffset) {
mTexelWidthOffset = texelWidthOffset;
}
public float getTexelHeightOffset() {
return mTexelHeightOffset;
}
public void setTexelHeightOffset(final float texelHeightOffset) {
mTexelHeightOffset = texelHeightOffset;
}
public float getBlurSize() {
return mBlurSize;
}
public void setBlurSize(final float blurSize) {
mBlurSize = blurSize;
}
//////////////////////////////////////////////////////////////////////////
@Override
public void onDraw() {
glUniform1f(getHandle("texelWidthOffset" ), mTexelWidthOffset);
glUniform1f(getHandle("texelHeightOffset" ), mTexelHeightOffset);
glUniform1f(getHandle("blurSize" ), mBlurSize);
}
}
Java Source Code List com.af.experiments.FxCameraApp.FilterAdapter.java com.af.experiments.FxCameraApp.MyActivity.java com.af.experiments.FxCameraApp.Utils.BitmapFactoryUtils.java com.af.experiments.FxCameraApp.Utils.ExifUtils.java com.af.experiments.FxCameraApp.Utils.Fps.java com.af.experiments.FxCameraApp.Utils.LogWriter.java com.af.experiments.FxCameraApp.Utils.OpenGlUtils.java com.af.experiments.FxCameraApp.View.CameraView.java com.af.experiments.FxCameraApp.View.DefaultPreview.java com.af.experiments.FxCameraApp.View.GlPreview.java com.af.experiments.FxCameraApp.View.PreviewTexture.java com.af.experiments.FxCameraApp.camera.CameraHelperBase.java com.af.experiments.FxCameraApp.camera.CameraHelperCupcake.java com.af.experiments.FxCameraApp.camera.CameraHelperDonut.java com.af.experiments.FxCameraApp.camera.CameraHelperEclair.java com.af.experiments.FxCameraApp.camera.CameraHelperFactory.java com.af.experiments.FxCameraApp.camera.CameraHelperFroyo.java com.af.experiments.FxCameraApp.camera.CameraHelperGingerbread.java com.af.experiments.FxCameraApp.camera.CameraHelperHonycomb.java com.af.experiments.FxCameraApp.camera.CameraHelperICS.java com.af.experiments.FxCameraApp.camera.CameraHelper.java com.af.experiments.FxCameraApp.display.DisplayHelperBase.java com.af.experiments.FxCameraApp.display.DisplayHelperFactory.java com.af.experiments.FxCameraApp.display.DisplayHelperFroyo.java com.af.experiments.FxCameraApp.display.DisplayHelperHoneycombMR2.java com.af.experiments.FxCameraApp.display.DisplayHelperHoneycomb.java com.af.experiments.FxCameraApp.display.DisplayHelper.java com.af.experiments.FxCameraApp.ogles.DefaultConfigChooser.java com.af.experiments.FxCameraApp.ogles.DefaultContextFactory.java com.af.experiments.FxCameraApp.ogles.DefaultWindowSurfaceFactory.java com.af.experiments.FxCameraApp.ogles.EGLLogWrapper.java com.af.experiments.FxCameraApp.ogles.GLES20ConfigChooser.java com.af.experiments.FxCameraApp.ogles.GLES20ContextFactory.java com.af.experiments.FxCameraApp.ogles.GlImageBitmapTexture.java com.af.experiments.FxCameraApp.ogles.GlImageResourceTexture.java com.af.experiments.FxCameraApp.ogles.GlImageTexture.java com.af.experiments.FxCameraApp.ogles.GlPreviewTextureFactory.java com.af.experiments.FxCameraApp.ogles.GlSurfaceTexture.java com.af.experiments.FxCameraApp.ogles.GlTextureView.java com.af.experiments.FxCameraApp.ogles.PixelBuffer.java com.af.experiments.FxCameraApp.ogles.PreviewSurfaceHelperBase.java com.af.experiments.FxCameraApp.ogles.PreviewSurfaceHelperFactory.java com.af.experiments.FxCameraApp.ogles.PreviewSurfaceHelper.java com.af.experiments.FxCameraApp.ogles.Texture.java com.af.experiments.FxCameraApp.renderer.GLES20FramebufferObject.java com.af.experiments.FxCameraApp.renderer.GlFrameBufferObjectRenderer.java com.af.experiments.FxCameraApp.renderer.MainRenderer.java com.af.experiments.FxCameraApp.shaders.GlBilateralShader.java com.af.experiments.FxCameraApp.shaders.GlBoxBlurShader.java com.af.experiments.FxCameraApp.shaders.GlBulgeDistortionShader.java com.af.experiments.FxCameraApp.shaders.GlCGAColorspaceShader.java com.af.experiments.FxCameraApp.shaders.GlColorInvertShader.java com.af.experiments.FxCameraApp.shaders.GlColorMatrixShader.java com.af.experiments.FxCameraApp.shaders.GlColorPackingShader.java com.af.experiments.FxCameraApp.shaders.GlConvolutionShader.java com.af.experiments.FxCameraApp.shaders.GlEmbossShader.java com.af.experiments.FxCameraApp.shaders.GlFalseColorShader.java com.af.experiments.FxCameraApp.shaders.GlFastBlurShader.java com.af.experiments.FxCameraApp.shaders.GlGaussianBlurShader.java com.af.experiments.FxCameraApp.shaders.GlGlassSphereShader.java com.af.experiments.FxCameraApp.shaders.GlGrayScaleShader.java com.af.experiments.FxCameraApp.shaders.GlHarrisCornerDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlHazeShader.java com.af.experiments.FxCameraApp.shaders.GlMonochromeShader.java com.af.experiments.FxCameraApp.shaders.GlNobleCornerDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlPerlinNoiseShader.java com.af.experiments.FxCameraApp.shaders.GlPinchDistortionShader.java com.af.experiments.FxCameraApp.shaders.GlPixellateShader.java com.af.experiments.FxCameraApp.shaders.GlPolarPixellateShader.java com.af.experiments.FxCameraApp.shaders.GlPolkaDotShader.java com.af.experiments.FxCameraApp.shaders.GlPosterizeShader.java com.af.experiments.FxCameraApp.shaders.GlPreviewShader.java com.af.experiments.FxCameraApp.shaders.GlSepiaShader.java com.af.experiments.FxCameraApp.shaders.GlShaderGroup.java com.af.experiments.FxCameraApp.shaders.GlShader.java com.af.experiments.FxCameraApp.shaders.GlSharpenShader.java com.af.experiments.FxCameraApp.shaders.GlShiTomasiFeatureDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlSobelEdgeDetectionShader.java com.af.experiments.FxCameraApp.shaders.GlSphereRefractionShader.java com.af.experiments.FxCameraApp.shaders.GlStretchDistortionShader.java com.af.experiments.FxCameraApp.shaders.GlThreex3ConvolutionShader.java com.af.experiments.FxCameraApp.shaders.GlThreex3TextureSamplingShader.java com.af.experiments.FxCameraApp.shaders.GlToneShader.java com.af.experiments.FxCameraApp.shaders.GlTwoInputShader.java com.af.experiments.FxCameraApp.shaders.GlVignetteShader.java com.af.experiments.FxCameraApp.shaders.GlWeakPixelInclusionShader.java com.af.experiments.FxCameraApp.shaders.GlWhiteBalanceShader.java com.af.experiments.FxCameraApp.shaders.GlXRayShader.java com.af.experiments.FxCameraApp.shaders.GlXYDerivativeShader.java com.af.experiments.FxCameraApp.shaders.fx.GlLutShader.java