package com.af.experiments.FxCameraApp.shaders; public class GlCGAColorspaceShader extends GlShader { private static final String FRAGMENT_SHADER = "precision mediump float;" + "varying vec2 vTextureCoord;" + "uniform lowp sampler2D sTexture;" + "void main() {" + "highp vec2 sampleDivisor = vec2(1.0 / 200.0, 1.0 / 320.0);" + //"highp vec4 colorDivisor = vec4(colorDepth);" + "highp vec2 samplePos = vTextureCoord - mod(vTextureCoord, sampleDivisor);" + "highp vec4 color = texture2D(sTexture, samplePos);" + //"gl_FragColor = texture2D(sTexture, samplePos);" + "mediump vec4 colorCyan = vec4(85.0 / 255.0, 1.0, 1.0, 1.0);" + "mediump vec4 colorMagenta = vec4(1.0, 85.0 / 255.0, 1.0, 1.0);" + "mediump vec4 colorWhite = vec4(1.0, 1.0, 1.0, 1.0);" + "mediump vec4 colorBlack = vec4(0.0, 0.0, 0.0, 1.0);" + "mediump vec4 endColor;" + "highp float blackDistance = distance(color, colorBlack);" + "highp float whiteDistance = distance(color, colorWhite);" + "highp float magentaDistance = distance(color, colorMagenta);" + "highp float cyanDistance = distance(color, colorCyan);" + "mediump vec4 finalColor;" + "highp float colorDistance = min(magentaDistance, cyanDistance);" + "colorDistance = min(colorDistance, whiteDistance);" + "colorDistance = min(colorDistance, blackDistance);" + "if (colorDistance == blackDistance) {" + "finalColor = colorBlack;" + "} else if (colorDistance == whiteDistance) {" + "finalColor = colorWhite;" + "} else if (colorDistance == cyanDistance) {" + "finalColor = colorCyan;" + "} else {" + "finalColor = colorMagenta;" + "}" + "gl_FragColor = finalColor;" + "}"; protected String mShaderName = "CGA Colors"; public String getName() { return mShaderName; } public GlCGAColorspaceShader() { super(DEFAULT_VERTEX_SHADER, FRAGMENT_SHADER); } }