package com.af.experiments.FxCameraApp.shaders;
import static android.opengl.GLES20.glUniform1f;
public class GlPosterizeShader extends GlShader {
private static final String FRAGMENT_SHADER =
"precision mediump float;" + // 演算精度を指定します。
"varying vec2 vTextureCoord;" +
"uniform lowp sampler2D sTexture;" +
"uniform highp float colorLevel;" +
"void main() {" +
"highp vec4 color = texture2D(sTexture, vTextureCoord);" +
"gl_FragColor = floor((color * colorLevel) + vec4(0.5)) / colorLevel;" +
"}";
private float mColorLevel = 5f;
protected String mShaderName = "Posterize";
public String getName() {
return mShaderName;
}
public GlPosterizeShader() {
super(DEFAULT_VERTEX_SHADER, FRAGMENT_SHADER);
}
public float getColorLevel() {
return mColorLevel;
}
public void setColorLevel(final float colorLevel) {
mColorLevel = colorLevel;
}
//////////////////////////////////////////////////////////////////////////
@Override
public void onDraw() {
glUniform1f(getHandle("colorLevel"), mColorLevel);
}
}