LaTo one more comment.
I prefer separate overshoot value for edges and non edges instead of Lfactor,
but this is just my opinion, your mod is nice.
Thanks to Didee for the wonderful ideas.
Edit
Another comment.
Code:
### SOFT
sharpdiff = mt_makediff(tmp,last,U=1,V=1)
sharpdiff = mt_lutxy(sharpdiff,sharpdiff.removegrain(19,-1),
\ "x 128 - abs y 128 - abs > y "+string(soft)+" * x "+string(100-soft)+" * + 100 / x ?",U=1,V=1)
soft==0 ? last : mt_makediff(tmp,sharpdiff,U=1,V=1)
(ss_x > 1.0 || ss_y > 1.0) || (dest_x != ox || dest_y != oy) ? spline36resize(dest_x,dest_y) : last
### SOOTHE
diff = mt_makediff(clp,last,U=1,V=1)
diff2 = diff.temporalsoften(1,255,0,32,2)
diff3 = mt_lutxy(diff,diff2,"x 128 - y 128 - * 0 < x 128 - 100 / "+string(keep)+
\ " * 128 + x 128 - abs y 128 - abs > x "+string(keep)+" * y 100 "+string(keep)+" - * + 100 / x ? ?",U=1,V=1)
soothe ? mt_makediff(clp,diff3,U=2,V=2) : last.mergechroma(clp)
return edgemode!=-1 ? last : edge.spline36resize(dest_x,dest_y).greyscale()
}
If (dest_x != ox || dest_y != oy) then
last and
clp have different dimensions.