From 48e261321eb782fde8ffc1c0dff8e65704731666 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Tue, 10 Sep 2019 23:37:37 +0200 Subject: [PATCH] Fix default vertex shader definition --- .../cameraview/filter/BaseFilter.java | 19 ++++++++++----- .../cameraview/filters/AutoFixFilter.java | 4 ++-- .../filters/BlackAndWhiteFilter.java | 4 ++-- .../cameraview/filters/BrightnessFilter.java | 4 ++-- .../cameraview/filters/ContrastFilter.java | 4 ++-- .../filters/CrossProcessFilter.java | 4 ++-- .../cameraview/filters/DocumentaryFilter.java | 8 +++---- .../cameraview/filters/DuotoneFilter.java | 4 ++-- .../cameraview/filters/FillLightFilter.java | 4 ++-- .../cameraview/filters/GammaFilter.java | 4 ++-- .../cameraview/filters/GrainFilter.java | 14 +++++------ .../cameraview/filters/GrayscaleFilter.java | 4 ++-- .../cameraview/filters/HueFilter.java | 4 ++-- .../filters/InvertColorsFilter.java | 4 ++-- .../cameraview/filters/LomoishFilter.java | 24 +++++++++---------- .../cameraview/filters/PosterizeFilter.java | 4 ++-- .../cameraview/filters/SaturationFilter.java | 6 ++--- .../cameraview/filters/SepiaFilter.java | 4 ++-- .../cameraview/filters/SharpnessFilter.java | 20 ++++++++-------- .../cameraview/filters/TemperatureFilter.java | 4 ++-- .../cameraview/filters/TintFilter.java | 4 ++-- .../cameraview/filters/VignetteFilter.java | 6 ++--- 22 files changed, 82 insertions(+), 75 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filter/BaseFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filter/BaseFilter.java index 4a1b0334..b69f4392 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filter/BaseFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filter/BaseFilter.java @@ -44,11 +44,18 @@ public abstract class BaseFilter implements Filter { private final static String TAG = BaseFilter.class.getSimpleName(); private final static CameraLogger LOG = CameraLogger.create(TAG); - private final static String DEFAULT_VERTEX_POSITION_NAME = "aPosition"; - private final static String DEFAULT_VERTEX_TEXTURE_COORDINATE_NAME = "aTextureCoord"; - private final static String DEFAULT_VERTEX_MVP_MATRIX_NAME = "uMVPMatrix"; - private final static String DEFAULT_VERTEX_TRANSFORM_MATRIX_NAME = "uTexMatrix"; - private final static String DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME = "vTextureCoord"; + @SuppressWarnings("WeakerAccess") + protected final static String DEFAULT_VERTEX_POSITION_NAME = "aPosition"; + + @SuppressWarnings("WeakerAccess") + protected final static String DEFAULT_VERTEX_TEXTURE_COORDINATE_NAME = "aTextureCoord"; + + @SuppressWarnings("WeakerAccess") + protected final static String DEFAULT_VERTEX_MVP_MATRIX_NAME = "uMVPMatrix"; + + @SuppressWarnings("WeakerAccess") + protected final static String DEFAULT_VERTEX_TRANSFORM_MATRIX_NAME = "uTexMatrix"; + protected final static String DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME = "vTextureCoord"; @NonNull private static String createDefaultVertexShader(@NonNull String vertexPositionName, @@ -63,7 +70,7 @@ public abstract class BaseFilter implements Filter { "varying vec2 "+fragmentTextureCoordinateName+";\n" + "void main() {\n" + " gl_Position = "+vertexModelViewProjectionMatrixName+" * "+vertexPositionName+";\n" + - " vTextureCoord = ("+vertexTransformMatrixName+" * "+vertexTextureCoordinateName+").xy;\n" + + " "+fragmentTextureCoordinateName+" = ("+vertexTransformMatrixName+" * "+vertexTextureCoordinateName+").xy;\n" + "}\n"; } diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixFilter.java index a05669cb..b85cd828 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/AutoFixFilter.java @@ -24,7 +24,7 @@ public class AutoFixFilter extends BaseFilter implements OneParameterFilter { + "float hist_scale;\n" + "float density_offset;\n" + "float density_scale;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " shift_scale = " + (1.0f / 256f) + ";\n" + " hist_offset = " + (0.5f / 766f) + ";\n" @@ -32,7 +32,7 @@ public class AutoFixFilter extends BaseFilter implements OneParameterFilter { + " density_offset = " + (0.5f / 1024f) + ";\n" + " density_scale = " + (1023f / 1024f) + ";\n" + " const vec3 weights = vec3(0.33333, 0.33333, 0.33333);\n" - + " vec4 color = texture2D(tex_sampler_0, vTextureCoord);\n" + + " vec4 color = texture2D(tex_sampler_0, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float energy = dot(color.rgb, weights);\n" + " float mask_value = energy - 0.5;\n" + " float alpha;\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteFilter.java index 4395e713..d523f82a 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BlackAndWhiteFilter.java @@ -11,9 +11,9 @@ public class BlackAndWhiteFilter extends BaseFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "uniform samplerExternalOES sTexture;\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float colorR = (color.r + color.g + color.b) / 3.0;\n" + " float colorG = (color.r + color.g + color.b) / 3.0;\n" + " float colorB = (color.r + color.g + color.b) / 3.0;\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessFilter.java index 5aa8e416..dfb60e99 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/BrightnessFilter.java @@ -17,9 +17,9 @@ public class BrightnessFilter extends BaseFilter implements OneParameterFilter { + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" + "uniform float brightness;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " gl_FragColor = brightness * color;\n" + "}\n"; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastFilter.java index cc2e601c..ad8ead97 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/ContrastFilter.java @@ -17,9 +17,9 @@ public class ContrastFilter extends BaseFilter implements OneParameterFilter { + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" + "uniform float contrast;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " color -= 0.5;\n" + " color *= contrast;\n" + " color += 0.5;\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessFilter.java index 1ff8cca1..7423c576 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/CrossProcessFilter.java @@ -13,9 +13,9 @@ public class CrossProcessFilter extends BaseFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " vec3 ncolor = vec3(0.0, 0.0, 0.0);\n" + " float value;\n" + " if (color.r < 0.5) {\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryFilter.java index c4a1532f..8f48ae8c 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DocumentaryFilter.java @@ -22,7 +22,7 @@ public class DocumentaryFilter extends BaseFilter { + "float stepsize;\n" + "uniform float inv_max_dist;\n" + "uniform vec2 scale;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "float rand(vec2 loc) {\n" + " float theta1 = dot(loc, vec2(0.9898, 0.233));\n" + " float theta2 = dot(loc, vec2(12.0, 78.0));\n" @@ -41,8 +41,8 @@ public class DocumentaryFilter extends BaseFilter { + " stepsize = " + 1.0f / 255.0f + ";\n" // black white - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" - + " float dither = rand(vTextureCoord + seed);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + + " float dither = rand("+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + seed);\n" + " vec3 xform = clamp(2.0 * color.rgb, 0.0, 1.0);\n" + " vec3 temp = clamp(2.0 * (color.rgb + stepsize), 0.0, 1.0);\n" + " vec3 new_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" @@ -50,7 +50,7 @@ public class DocumentaryFilter extends BaseFilter { + " float gray = dot(new_color, vec3(0.299, 0.587, 0.114));\n" + " new_color = vec3(gray, gray, gray);\n" // vignette - + " vec2 coord = vTextureCoord - vec2(0.5, 0.5);\n" + + " vec2 coord = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" - vec2(0.5, 0.5);\n" + " float dist = length(coord * scale);\n" + " float lumen = 0.85 / (1.0 + exp((dist * inv_max_dist - 0.83) * 20.0)) + 0.15;\n" + " gl_FragColor = vec4(new_color * lumen, color.a);\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java index 385ed99b..645d5c5e 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/DuotoneFilter.java @@ -20,9 +20,9 @@ public class DuotoneFilter extends BaseFilter implements TwoParameterFilter { + "uniform samplerExternalOES sTexture;\n" + "uniform vec3 first;\n" + "uniform vec3 second;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float energy = (color.r + color.g + color.b) * 0.3333;\n" + " vec3 new_color = (1.0 - energy) * first + energy * second;\n" + " gl_FragColor = vec4(new_color.rgb, color.a);\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightFilter.java index 8ba50692..3d3f8b00 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/FillLightFilter.java @@ -18,10 +18,10 @@ public class FillLightFilter extends BaseFilter implements OneParameterFilter { + "uniform samplerExternalOES sTexture;\n" + "uniform float mult;\n" + "uniform float igamma;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " const vec3 color_weights = vec3(0.25, 0.5, 0.25);\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float lightmask = dot(color.rgb, color_weights);\n" + " float backmask = (1.0 - lightmask);\n" + " vec3 ones = vec3(1.0, 1.0, 1.0);\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaFilter.java index 55cc2e86..b7ba5c39 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GammaFilter.java @@ -15,11 +15,11 @@ public class GammaFilter extends BaseFilter implements OneParameterFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "uniform samplerExternalOES sTexture;\n" + "uniform float gamma;\n" + "void main() {\n" - + " vec4 textureColor = texture2D(sTexture, vTextureCoord);\n" + + " vec4 textureColor = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " gl_FragColor = vec4(pow(textureColor.rgb, vec3(gamma)), textureColor.w);\n" + "}\n"; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainFilter.java index 01ddd853..ac94ba8a 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrainFilter.java @@ -19,7 +19,7 @@ public class GrainFilter extends BaseFilter implements OneParameterFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" + "vec2 seed;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "uniform samplerExternalOES tex_sampler_0;\n" + "uniform samplerExternalOES tex_sampler_1;\n" + "uniform float scale;\n" @@ -40,18 +40,18 @@ public class GrainFilter extends BaseFilter implements OneParameterFilter { + "void main() {\n" + " seed[0] = " + RANDOM.nextFloat() + ";\n" + " seed[1] = " + RANDOM.nextFloat() + ";\n" - + " float noise = texture2D(tex_sampler_1, vTextureCoord + vec2(-stepX, -stepY)).r * 0.224;\n" - + " noise += texture2D(tex_sampler_1, vTextureCoord + vec2(-stepX, stepY)).r * 0.224;\n" - + " noise += texture2D(tex_sampler_1, vTextureCoord + vec2(stepX, -stepY)).r * 0.224;\n" - + " noise += texture2D(tex_sampler_1, vTextureCoord + vec2(stepX, stepY)).r * 0.224;\n" + + " float noise = texture2D(tex_sampler_1, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + vec2(-stepX, -stepY)).r * 0.224;\n" + + " noise += texture2D(tex_sampler_1, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + vec2(-stepX, stepY)).r * 0.224;\n" + + " noise += texture2D(tex_sampler_1, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + vec2(stepX, -stepY)).r * 0.224;\n" + + " noise += texture2D(tex_sampler_1, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + vec2(stepX, stepY)).r * 0.224;\n" + " noise += 0.4448;\n" + " noise *= scale;\n" - + " vec4 color = texture2D(tex_sampler_0, vTextureCoord);\n" + + " vec4 color = texture2D(tex_sampler_0, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float energy = 0.33333 * color.r + 0.33333 * color.g + 0.33333 * color.b;\n" + " float mask = (1.0 - sqrt(energy));\n" + " float weight = 1.0 - 1.333 * mask * noise;\n" + " gl_FragColor = vec4(color.rgb * weight, color.a);\n" - + " gl_FragColor = gl_FragColor+vec4(rand(vTextureCoord + seed), rand(vTextureCoord + seed),rand(vTextureCoord + seed),1);\n" + + " gl_FragColor = gl_FragColor+vec4(rand("+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + seed), rand("+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + seed),rand("+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + seed),1);\n" + "}\n"; private float strength = 0.5f; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java index a4a49f3d..884af10f 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/GrayscaleFilter.java @@ -12,9 +12,9 @@ public class GrayscaleFilter extends BaseFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float y = dot(color, vec4(0.299, 0.587, 0.114, 0));\n" + " gl_FragColor = vec4(y, y, y, color.a);\n" + "}\n"; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueFilter.java index a013d5b4..5dd80d81 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/HueFilter.java @@ -15,7 +15,7 @@ public class HueFilter extends BaseFilter implements OneParameterFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "uniform samplerExternalOES sTexture;\n" + "uniform float hue;\n" + "void main() {\n" @@ -25,7 +25,7 @@ public class HueFilter extends BaseFilter implements OneParameterFilter { + " vec4 kYIQToR = vec4 (1.0, 0.9563, 0.6210, 0.0);\n" + " vec4 kYIQToG = vec4 (1.0, -0.2721, -0.6474, 0.0);\n" + " vec4 kYIQToB = vec4 (1.0, -1.1070, 1.7046, 0.0);\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float YPrime = dot(color, kRGBToYPrime);\n" + " float I = dot(color, kRGBToI);\n" + " float Q = dot(color, kRGBToQ);\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsFilter.java index a5490d88..f4a0f05f 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/InvertColorsFilter.java @@ -11,10 +11,10 @@ public class InvertColorsFilter extends BaseFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "uniform samplerExternalOES sTexture;\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float colorR = (1.0 - color.r) / 1.0;\n" + " float colorG = (1.0 - color.g) / 1.0;\n" + " float colorB = (1.0 - color.b) / 1.0;\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/LomoishFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/LomoishFilter.java index aaaf88a0..48545ee9 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/LomoishFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/LomoishFilter.java @@ -25,7 +25,7 @@ public class LomoishFilter extends BaseFilter { + "uniform float inv_max_dist;\n" + "vec2 seed;\n" + "float stepsize;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "float rand(vec2 loc) {\n" + " float theta1 = dot(loc, vec2(0.9898, 0.233));\n" + " float theta2 = dot(loc, vec2(12.0, 78.0));\n" @@ -44,18 +44,18 @@ public class LomoishFilter extends BaseFilter { // sharpen + " vec3 nbr_color = vec3(0.0, 0.0, 0.0);\n" + " vec2 coord;\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" - + " coord.x = vTextureCoord.x - 0.5 * stepsizeX;\n" - + " coord.y = vTextureCoord.y - stepsizeY;\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x - 0.5 * stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y - stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" - + " coord.x = vTextureCoord.x - stepsizeX;\n" - + " coord.y = vTextureCoord.y + 0.5 * stepsizeY;\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x - stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y + 0.5 * stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" - + " coord.x = vTextureCoord.x + stepsizeX;\n" - + " coord.y = vTextureCoord.y - 0.5 * stepsizeY;\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x + stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y - 0.5 * stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" - + " coord.x = vTextureCoord.x + stepsizeX;\n" - + " coord.y = vTextureCoord.y + 0.5 * stepsizeY;\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x + stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y + 0.5 * stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" + " vec3 s_color = vec3(color.rgb + 0.3 * nbr_color);\n" // cross process @@ -85,12 +85,12 @@ public class LomoishFilter extends BaseFilter { + " }\n" + " c_color.b = s_color.b * 0.5 + 0.25;\n" // blackwhite - + " float dither = rand(vTextureCoord + seed);\n" + + " float dither = rand("+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" + seed);\n" + " vec3 xform = clamp((c_color.rgb - 0.15) * 1.53846, 0.0, 1.0);\n" + " vec3 temp = clamp((color.rgb + stepsize - 0.15) * 1.53846, 0.0, 1.0);\n" + " vec3 bw_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" // vignette - + " coord = vTextureCoord - vec2(0.5, 0.5);\n" + + " coord = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" - vec2(0.5, 0.5);\n" + " float dist = length(coord * scale);\n" + " float lumen = 0.85 / (1.0 + exp((dist * inv_max_dist - 0.73) * 20.0)) + 0.15;\n" + " gl_FragColor = vec4(bw_color * lumen, color.a);\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeFilter.java index 5ce1d386..12ec8d24 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/PosterizeFilter.java @@ -12,8 +12,8 @@ public class PosterizeFilter extends BaseFilter { private final static String FRAGMENT_SHADER = "#extension GL_OES_EGL_image_external : require\n" + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" - + "varying vec2 vTextureCoord;\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " vec3 pcolor;\n" + " pcolor.r = (color.r >= 0.5) ? 0.75 : 0.25;\n" + " pcolor.g = (color.g >= 0.5) ? 0.75 : 0.25;\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationFilter.java index 905addbd..26e7acfb 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SaturationFilter.java @@ -20,17 +20,17 @@ public class SaturationFilter extends BaseFilter implements OneParameterFilter { + "uniform vec3 exponents;\n" + "float shift;\n" + "vec3 weights;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " weights[0] = " + 2f / 8f + ";\n" + " weights[1] = " + 5f / 8f + ";\n" + " weights[2] = " + 1f / 8f + ";\n" + " shift = " + 1.0f / 255.0f + ";\n" - + " vec4 oldcolor = texture2D(sTexture, vTextureCoord);\n" + + " vec4 oldcolor = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float kv = dot(oldcolor.rgb, weights) + shift;\n" + " vec3 new_color = scale * oldcolor.rgb + (1.0 - scale) * kv;\n" + " gl_FragColor = vec4(new_color, oldcolor.a);\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float de = dot(color.rgb, weights);\n" + " float inv_de = 1.0 / de;\n" + " vec3 verynew_color = de * pow(color.rgb * inv_de, exponents);\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaFilter.java index 7099bbea..4631a3ef 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SepiaFilter.java @@ -13,7 +13,7 @@ public class SepiaFilter extends BaseFilter { + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" + "mat3 matrix;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " matrix[0][0]=" + 805.0f / 2048.0f + ";\n" + " matrix[0][1]=" + 715.0f / 2048.0f + ";\n" @@ -24,7 +24,7 @@ public class SepiaFilter extends BaseFilter { + " matrix[2][0]=" + 387.0f / 2048.0f + ";\n" + " matrix[2][1]=" + 344.0f / 2048.0f + ";\n" + " matrix[2][2]=" + 268.0f / 2048.0f + ";\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " vec3 new_color = min(matrix * color.rgb, 1.0);\n" + " gl_FragColor = vec4(new_color.rgb, color.a);\n" + "}\n"; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessFilter.java index 5e60543a..4fd24e53 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/SharpnessFilter.java @@ -19,22 +19,22 @@ public class SharpnessFilter extends BaseFilter implements OneParameterFilter { + "uniform float scale;\n" + "uniform float stepsizeX;\n" + "uniform float stepsizeY;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " vec3 nbr_color = vec3(0.0, 0.0, 0.0);\n" + " vec2 coord;\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" - + " coord.x = vTextureCoord.x - 0.5 * stepsizeX;\n" - + " coord.y = vTextureCoord.y - stepsizeY;\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x - 0.5 * stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y - stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" - + " coord.x = vTextureCoord.x - stepsizeX;\n" - + " coord.y = vTextureCoord.y + 0.5 * stepsizeY;\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x - stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y + 0.5 * stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" - + " coord.x = vTextureCoord.x + stepsizeX;\n" - + " coord.y = vTextureCoord.y - 0.5 * stepsizeY;\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x + stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y - 0.5 * stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" - + " coord.x = vTextureCoord.x + stepsizeX;\n" - + " coord.y = vTextureCoord.y + 0.5 * stepsizeY;\n" + + " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x + stepsizeX;\n" + + " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y + 0.5 * stepsizeY;\n" + " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" + " gl_FragColor = vec4(color.rgb - 2.0 * scale * nbr_color, color.a);\n" + "}\n"; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureFilter.java index b9c7e6df..0f6f081a 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TemperatureFilter.java @@ -17,9 +17,9 @@ public class TemperatureFilter extends BaseFilter implements OneParameterFilter + "precision mediump float;\n" + "uniform samplerExternalOES sTexture;\n" + "uniform float scale;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " vec3 new_color = color.rgb;\n" + " new_color.r = color.r + color.r * ( 1.0 - color.r) * scale;\n" + " new_color.b = color.b - color.b * ( 1.0 - color.b) * scale;\n" diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintFilter.java index 3958c20f..97cb0eac 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/TintFilter.java @@ -21,12 +21,12 @@ public class TintFilter extends BaseFilter implements OneParameterFilter { + "uniform samplerExternalOES sTexture;\n" + "uniform vec3 tint;\n" + "vec3 color_ratio;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " color_ratio[0] = " + 0.21f + ";\n" + " color_ratio[1] = " + 0.71f + ";\n" + " color_ratio[2] = " + 0.07f + ";\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " float avg_color = dot(color_ratio, color.rgb);\n" + " vec3 new_color = min(0.8 * avg_color + 0.2 * tint, 1.0);\n" + " gl_FragColor = vec4(new_color.rgb, color.a);\n" + "}\n"; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteFilter.java b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteFilter.java index b4b8af3b..6db68bc2 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteFilter.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/filters/VignetteFilter.java @@ -21,13 +21,13 @@ public class VignetteFilter extends BaseFilter implements TwoParameterFilter { + "uniform float inv_max_dist;\n" + "uniform float shade;\n" + "uniform vec2 scale;\n" - + "varying vec2 vTextureCoord;\n" + + "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" + "void main() {\n" + " const float slope = 20.0;\n" - + " vec2 coord = vTextureCoord - vec2(0.5, 0.5);\n" + + " vec2 coord = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+" - vec2(0.5, 0.5);\n" + " float dist = length(coord * scale);\n" + " float lumen = shade / (1.0 + exp((dist * inv_max_dist - range) * slope)) + (1.0 - shade);\n" - + " vec4 color = texture2D(sTexture, vTextureCoord);\n" + + " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" + " gl_FragColor = vec4(color.rgb * lumen, color.a);\n" + "}\n";