|
|
@ -25,7 +25,7 @@ public class LomoishFilter extends BaseFilter { |
|
|
|
+ "uniform float inv_max_dist;\n" |
|
|
|
+ "uniform float inv_max_dist;\n" |
|
|
|
+ "vec2 seed;\n" |
|
|
|
+ "vec2 seed;\n" |
|
|
|
+ "float stepsize;\n" |
|
|
|
+ "float stepsize;\n" |
|
|
|
+ "varying vec2 vTextureCoord;\n" |
|
|
|
+ "varying vec2 "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+";\n" |
|
|
|
+ "float rand(vec2 loc) {\n" |
|
|
|
+ "float rand(vec2 loc) {\n" |
|
|
|
+ " float theta1 = dot(loc, vec2(0.9898, 0.233));\n" |
|
|
|
+ " float theta1 = dot(loc, vec2(0.9898, 0.233));\n" |
|
|
|
+ " float theta2 = dot(loc, vec2(12.0, 78.0));\n" |
|
|
|
+ " float theta2 = dot(loc, vec2(12.0, 78.0));\n" |
|
|
@ -44,18 +44,18 @@ public class LomoishFilter extends BaseFilter { |
|
|
|
// sharpen
|
|
|
|
// sharpen
|
|
|
|
+ " vec3 nbr_color = vec3(0.0, 0.0, 0.0);\n" |
|
|
|
+ " vec3 nbr_color = vec3(0.0, 0.0, 0.0);\n" |
|
|
|
+ " vec2 coord;\n" |
|
|
|
+ " vec2 coord;\n" |
|
|
|
+ " vec4 color = texture2D(sTexture, vTextureCoord);\n" |
|
|
|
+ " vec4 color = texture2D(sTexture, "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+");\n" |
|
|
|
+ " coord.x = vTextureCoord.x - 0.5 * stepsizeX;\n" |
|
|
|
+ " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x - 0.5 * stepsizeX;\n" |
|
|
|
+ " coord.y = vTextureCoord.y - stepsizeY;\n" |
|
|
|
+ " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y - stepsizeY;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " coord.x = vTextureCoord.x - stepsizeX;\n" |
|
|
|
+ " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x - stepsizeX;\n" |
|
|
|
+ " coord.y = vTextureCoord.y + 0.5 * stepsizeY;\n" |
|
|
|
+ " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y + 0.5 * stepsizeY;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " coord.x = vTextureCoord.x + stepsizeX;\n" |
|
|
|
+ " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x + stepsizeX;\n" |
|
|
|
+ " coord.y = vTextureCoord.y - 0.5 * stepsizeY;\n" |
|
|
|
+ " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y - 0.5 * stepsizeY;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " coord.x = vTextureCoord.x + stepsizeX;\n" |
|
|
|
+ " coord.x = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".x + stepsizeX;\n" |
|
|
|
+ " coord.y = vTextureCoord.y + 0.5 * stepsizeY;\n" |
|
|
|
+ " coord.y = "+DEFAULT_FRAGMENT_TEXTURE_COORDINATE_NAME+".y + 0.5 * stepsizeY;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " nbr_color += texture2D(sTexture, coord).rgb - color.rgb;\n" |
|
|
|
+ " vec3 s_color = vec3(color.rgb + 0.3 * nbr_color);\n" |
|
|
|
+ " vec3 s_color = vec3(color.rgb + 0.3 * nbr_color);\n" |
|
|
|
// cross process
|
|
|
|
// cross process
|
|
|
@ -85,12 +85,12 @@ public class LomoishFilter extends BaseFilter { |
|
|
|
+ " }\n" |
|
|
|
+ " }\n" |
|
|
|
+ " c_color.b = s_color.b * 0.5 + 0.25;\n" |
|
|
|
+ " c_color.b = s_color.b * 0.5 + 0.25;\n" |
|
|
|
// blackwhite
|
|
|
|
// 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 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 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" |
|
|
|
+ " vec3 bw_color = clamp(xform + (temp - xform) * (dither - 0.5), 0.0, 1.0);\n" |
|
|
|
// vignette
|
|
|
|
// 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 dist = length(coord * scale);\n" |
|
|
|
+ " float lumen = 0.85 / (1.0 + exp((dist * inv_max_dist - 0.73) * 20.0)) + 0.15;\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" |
|
|
|
+ " gl_FragColor = vec4(bw_color * lumen, color.a);\n" |
|
|
|