feather expandable limits, feather gausian taper, clear canvas tweaks
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / playback3d.C
index 53f6c9e6aa4abc298d6e4c37d9f9125c15fbb4c8..f5ef5c4f6b866c88601ba1a8717e19f08627efea 100644 (file)
@@ -285,13 +285,15 @@ static const char *feather_frag =
        "       float fg = rv>=0 ? vv : 1.;\n"
        "       float bg = rv>=0 ? 1. : vv;\n"
        "       int len = points.length();\n"
+       "       float sig2 = -log(255.0);\n"
        "       for( int i=0; i<len; ++i ) {\n"
        "               float dx = float(points[i].x) - gl_FragCoord.x;\n"
        "               float dy = float(points[i].y) - gl_FragCoord.y;\n"
        "               float dd = dx*dx + dy*dy;\n"
        "               if( dd >= rr ) continue;\n"
-       "               float d = dd*dr;\n"
-       "               float a = (1.-d)*fg + d*bg;\n"
+       "               float ss = dd / rr;\n"
+       "               float d = exp(ss * sig2);\n"
+       "               float a = d*fg + (1.-d)*bg;\n"
        "               if( rv*(color.a-a) > 0 ) color = vec4(a);\n"
        "       }\n"
        "}\n";