summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-08-09 00:00:43 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-08-09 00:00:43 +0000
commit0b885b8096c4f1bf2018fca269bd06b9161a81a8 (patch)
treef4fb5c912645d2228c3ff551151887415ae1b540
parent79eddf8c0a1509470b0acf9abda2320d77345c2d (diff)
parent8673c2adc72069a25aaa99776fec7c93495daa07 (diff)
downloadbase-0b885b8096c4f1bf2018fca269bd06b9161a81a8.tar.gz
Merge "Fix graphical artifact in the fisheye effect"
-rw-r--r--media/mca/filterpacks/java/android/filterpacks/imageproc/FisheyeFilter.java4
1 files changed, 4 insertions, 0 deletions
diff --git a/media/mca/filterpacks/java/android/filterpacks/imageproc/FisheyeFilter.java b/media/mca/filterpacks/java/android/filterpacks/imageproc/FisheyeFilter.java
index 2ff65889e1ac..e0dbd571d560 100644
--- a/media/mca/filterpacks/java/android/filterpacks/imageproc/FisheyeFilter.java
+++ b/media/mca/filterpacks/java/android/filterpacks/imageproc/FisheyeFilter.java
@@ -49,6 +49,8 @@ public class FisheyeFilter extends Filter {
private int mHeight = 0;
private int mTarget = FrameFormat.TARGET_UNSPECIFIED;
+ // The constant min_dist, below, is an arbitrary number that gives good enough precision in
+ // the center of the picture without affecting the fisheye effect noticeably.
private static final String mFisheyeShader =
"precision mediump float;\n" +
"uniform sampler2D tex_sampler_0;\n" +
@@ -59,8 +61,10 @@ public class FisheyeFilter extends Filter {
"varying vec2 v_texcoord;\n" +
"void main() {\n" +
" const float m_pi_2 = 1.570963;\n" +
+ " const float min_dist = 0.01;\n" +
" vec2 coord = v_texcoord - vec2(0.5, 0.5);\n" +
" float dist = length(coord * scale);\n" +
+ " dist = max(dist, min_dist);\n" +
" float radian = m_pi_2 - atan(alpha * sqrt(radius2 - dist * dist), dist);\n" +
" float scalar = radian * factor / dist;\n" +
" vec2 new_coord = coord * scalar + vec2(0.5, 0.5);\n" +