Trying to make my 1st "pipeline filter"

Here is an update for this. The preview is a bit faster now. You can see the processing time with the checkmark. The filter takes approx 40 seconds on a 5800 x 3500px picture:


Added a few things here and there…
I still have the “double application” bug in the preview (only with presets), it’s only really annoying with the “Roll the DIce!” preset, which randomizes a lot of things, and is quite slow. Didn’t have the time to look into it, I guess i’m saving it for last! :sweat_smile:
BTW, i had to remove almost all of the floor(u(min-max)) to convert floats to integers because it was so damn slow (Now these sliders don’t update with status, but that’s ok for now)… Is there any way to get random integers faster, using “u”?

Code 25/04/23

#@gui Uglify : uglify, uglify_preview(0)
#@gui : note = note("<small>Author: <i><a href="http://prawnsushi.free.fr">Prawnsushi</i></a>.      Latest Update: <i>2023/25/04</i>.</small>")
#@gui : sep = separator()
#@gui : Write settings on picture = int(0,0,1)
#@gui : note = note{"<small>Use original input image resolution or choose processing resolution (i.e. Half res + Upscale 2x). Beware: Preview lies.</small>"}
#@gui : Original Resolution = int(1,0,1)
#@gui : Processing Resolution = int(1000,500,5000)
#@gui : Upscale 2x (Iterations) = _int(0,0,5)
#@gui : sep = separator()
#@gui : - Presets = choice(0,"Default","1 - From Scratch","2 - Soft","3- Cracked","4 - Black","5 - Faded Black")
#@gui : sep = separator()
#@gui : Pre-Process = int(1,0,1)
#@gui : - Sharpening = int(0,0,500)
#@gui : - Blur = float(0,0,10)
#@gui : - Local normalization = float(0,0,3)
#@gui : sep = separator()
#@gui : Sloppiness = int(1,0,1)
#@gui : - Distort = float(3,0,20)
#@gui : - Blur = float(3,0,50)
#@gui : - Blend Mode = choice(13,"add","and","average","blue","burn","darken","difference","divide","dodge","exclusion","grainextract","grainmerge","green","hardlight","hardmix","hue","interpolation","lighten","lightness","linearburn","linearlight","luminance","multiply","negation","or","overlay","pinlight","red","reflect","saturation","screen","shapeaverage","softburn","softdodge","softlight","stamp","subtract","value","vividlight","xor")
#@gui : - Strength = float(0.5,0.0,1.0)
#@gui : sep = separator()
#@gui : Watering = int(1,0,1)
#@gui : - Smoothing = int(12,0,40)
#@gui : - Iterations = int(1,0,10)
#@gui : Fuzzy Frame Size = int(30,0,350)
#@gui : - Frame Blur = int(20,0,150)
#@gui : - Frame Strentgh = float(0.5,0,5)
#@gui : Plasma Seed ( -1 : Random ) = int{-1,-1,999999}
#@gui : - Plasma Saturation = int(-100,-100,100)
#@gui : - Plasma Blur = float(0,0,50)
#@gui : - Blend Mode = choice(7,"add","and","average","blue","burn","darken","difference","divide","dodge","exclusion","grainextract","grainmerge","green","hardlight","hardmix","hue","interpolation","lighten","lightness","linearburn","linearlight","luminance","multiply","negation","or","overlay","pinlight","red","reflect","saturation",screen","shapeaverage","softburn","softdodge","softlight","stamp","subtract","value","vividlight","xor")
#@gui : - Plasma Strength = float(0.6,0,1)
#@gui : sep = separator()
#@gui : Cracks = int(1,0,1)
#@gui : Sharpening = int(150,0,500)
#@gui : - Shock Filter = int(1,0,1)
#@gui : Light Relief (0 means all off) = float(0.15,0,1)
#@gui : - Light2 = float(0.02,0,1)
#@gui : - Light3 = float(0.02,0,1)
#@gui : sep = separator()
#@gui : Sketch = int(1,0,1)
#@gui : - Likeness = int(25,0,30)
#@gui : - Threshold Min = int(0,0,255)
#@gui : - Threshold Max = int(255,0,255)
#@gui : - Thickness = int(2,0,40)
#@gui : - Sketch strength = float(1,0,1)
#@gui : --- Messy lines = float(0.9,0,1)
#@gui : - Blend Mode = choice(22,"add","and","average","blue","burn","darken","difference","divide","dodge","exclusion","grainextract","grainmerge","green","hardlight","hardmix","hue","interpolation","lighten","lightness","linearburn","linearlight","luminance","multiply","negation","or","overlay","pinlight","red","reflect","saturation",screen","shapeaverage","softburn","softdodge","softlight","stamp","subtract","value","vividlight","xor")
#@gui : note = note("<small>Setting Sktech Strength to 0 disables Messy lines too.\n Messy lines uses 'Breaks' by David Tschumperlé.</small>")
#@gui : sep = separator()
#@gui : Noise = float(3,0,6)
#@gui : Canvas = float(0.3,0,1)
#@gui : Canvas style = int(0,0,100)
#@gui : Color = color(255,255,255,0)
#@gui : sep = separator()
#@gui : Post-Process = int(1,0,1)
#@gui : Emboss = float(1.5,0,5)
#@gui : Mix Original Hue/Sat = float(0.5,0,1)
#@gui : Brightness = float(0,-100,100)
#@gui : Contrast = float(0,-100,100)
#@gui : Gamma = float(0,-100,100)
#@gui : Hue = float(0,-100,100)
#@gui : Saturation = float(0,-100,100)
#@gui : sep = separator()
#@gui : - Old Presets = _choice(0,"Default","1 - From Scratch","2 -Soft","3 - Cracked","4 - Black","5 - Faded Black")_0

uglify :

com,origres,procres,dccires,preset,bst,bstsharp,bstblur,locnorm,\
filt,dist,distblur,distmerge,diststr,wc,bilsize,bilrep,fuzz,fuzzblur,\
fuzstr,plsmseed,plsmsat,plsmblur,plasmerge,plastr,cracks,sckrad,sck,lgtone,\
lgttwo,lgthree,sketch,sklike,cutmin,cutmax,linthick,linestr,brkstr,skmerge,\
noistr,cnvs,cvmod,cvr,cvg,cvb,cva,post,emboss,huestr,\
bri,con,gam,hue,sat=${1-54}

m "BlendMode : $""=__mode" BlendMode "add","and","average","blue","burn","darken","difference","divide","dodge","exclusion","grainextract","grainmerge","green","hardlight","hardmix","hue","interpolation","lighten","lightness","linearburn","linearlight","luminance","multiply","negation","or","overlay","pinlight","red","reflect","saturation","screen","shapeaverage","softburn","softdodge","softlight","stamp","subtract","value","vividlight","xor","error"

m "BlendModeP : $""=__modep" BlendModeP "add","and","average","blue","burn","darken","difference","divide","dodge","exclusion","grainextract","grainmerge","green","hardlight","hardmix","hue","interpolation","lighten","lightness","linearburn","linearlight","luminance","multiply","negation","or","overlay","pinlight","red","reflect","saturation","screen","shapeaverage","softburn","softdodge","softlight","stamp","subtract","value","vividlight","xor","error"

m "BlendModeL : $""=__model" BlendModeL "add","and","average","blue","burn","darken","difference","divide","dodge","exclusion","grainextract","grainmerge","green","hardlight","hardmix","hue","interpolation","lighten","lightness","linearburn","linearlight","luminance","multiply","negation","or","overlay","pinlight","red","reflect","saturation","screen","shapeaverage","softburn","softdodge","softlight","stamp","subtract","value","vividlight","xor","error"

to_rgba

nm[0] ORIG
ORIGW={0,w}
ORIGH={0,h}

if !$origres
  res=$procres,$procres
  rr2d[ORIG] $res,0,6
fi
n 0,255

if $bst
  if $bstblur blur $bstblur fi
  if $bstsharp sharpen $bstsharp fi
  if $locnorm  normalize_local $locnorm,$locnorm  fi
fi

[ORIG] nm. REND

if $filt
  if $diststr
    [ORIG] nm. FILT
    local[REND,FILT]
    usrmod=$dist,$distblur
    if [$usrmod]!=[0,0]
      if $dist apc. "deform $dist" fi
      if $distblur blur. $distblur fi
      blend[REND,FILT] ${__mode{$distmerge+1}},$diststr
      n[REND] 0,255
    fi
  done
  fi
fi

if $wc
  if $plastr
    [ORIG] nm. PLAS
    local[PLAS]
      if $plsmseed>-1 srand $plsmseed fi
      plasma 1,2,5
      if $plsmsat!=0 adjust_colors 0,0,0,0,$plsmsat fi
      if $plsmblur>0 blur $plsmblur fi
    done
        blend[REND,PLAS] ${__modep{$plasmerge+1}},$plastr
  fi
#~ fi

#~ if $wc
  if $fuzz
    [ORIG] nm. FUZZ
    local[FUZZ]
      fc 0,0,0
      negate
      frame_fuzzy $fuzz
      if $fuzzblur blur $fuzzblur,0 fi
        deform $fuzz
        spread {$fuzz/2},{$fuzz/2}
        split c rm. . negate.  a c
      if $fuzstr!=1
        mul $fuzstr
      fi
    done
    blend_median[REND,FUZZ]
  fi
fi

local[REND]
  if $cracks
    if $sckrad
      deform 1.5 sharpen $sckrad,$sck dilate_circ 1.5 sharpen $sckrad,$sck
    fi

    if $lgtone
      repeat 3
        fx_light_relief $lgtone,$lgttwo,$lgthree,0,0.2,50,50,20,0.084,0,0
        blur 2 erode_circ 3 sharpen $sckrad
      done
    fi
  fi

  if $wc
    if $bilrep>0
      repeat $bilrep
        deform {0,w/1000}
        bilateral $bilsize,$bilsize,$bilsize,$bilsize
      done
    fi
  fi
done

if $post
  if $huestr
    [ORIG] nm. HUE
    [ORIG] nm. SAT
    b[HUE,SAT] 5
    blend[HUE,REND] hue,$huestr
    blend[SAT,REND] saturation,{$huestr}
  fi
fi

if $sketch
  if $linestr>0
    [ORIG] nm. LINE

    local[LINE]

      r 50%,50%,1,6
      deform {0,w/2000}
      rolling_guidance {31-$sklike},20,0
      r 200%,200%,1,6
      gradient_norm negate

      if $brkstr>0
        +fx_breaks. 1,5,20,0,3
        blend[-1,-2,LINE] multiply,$brkstr
      fi
      if $linthick erode_circ. $linthick spread {$linthick/10} dilate_circ. 3 fi
      n. $cutmin,$cutmax
      sharpen. 100
      spread. 1.7
    done
    split[REND] c
    a[1,2,3] c
    blend[LINE,REND] ${__model{$skmerge+1}},$linestr
    a[REND] [-1],c
  fi
fi

normalize[REND] 0,255
keep[REND]

if $post
  usrmod=$bri,$con,$gam,$hue,$sat
  if [$usrmod]!=[0,0,0,0,0]
  adjust_colors[REND] $bri,$con,$gam,$hue,$sat
  fi
fi

if $dccires
  repeat $dccires
    r 200%,200%
  done
fi

  if $noistr
  fx_noise $noistr,0,11,1,0,50,50
  fi
  if $cnvs
    +fc 255,255,255
    noise. 50,2
    to_gray.
    . .
    if $cvmod
      __wat=$cvmod,1,45
    else
      __wat=0,0,0
    fi
    parallel " blur_x. 30 water. $__wat  sharpen. 50  spread. 1.7 "," blur_y.. 30  water.. $__wat sharpen.. 50 spread.. 1.7  "
    *. ..
    keep[0,-1] n. 0,255
    +gradient. xy,1 -a[-2,-1] c
    *. {$cnvs/100}
    warp[REND] .,3,1,1,1
  fi

+fc[REND] $cvr,$cvg,$cvb,$cva
move[-1] 0
blend[0,REND] alpha
nm[0] REND
keep[REND]

if $post
  if $emboss
  fx_emboss_relief 5,0,0.5,$emboss,1,0,1
  fi
fi

if $com
  expand_y 35,0
  shift 0,35
  text "${1--1}",10,30,12,1,255
  text ${__mode{$distmerge+1}}" "${__modep{$plasmerge+1}}" "${__model{$skmerge+1}},10,50,20,1,255
fi



uglify_preview :

__output=${1--2}
preset,old_preset={[$5,${-1}]}

if $preset==1
  variables=0,1,1000,0,1,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,-1,-100,0,23,0,0,0,0,0,0,0,0,0,0,255,2,0,0,22,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0
elif $preset==2
  variables=0,1,1000,0,2,1,0,2,0,1,20,10,7,0.4,1,12,2,127,42,0.365,-1,0,0,11,0.5,1,1,0,0.01,0.02,0.02,1,30,0,255,5,1,0,22,6,0,0,255,255,255,255,1,0,0.8,0,0,9,0,0
elif $preset==3
  variables=0,1,1000,0,3,0,0,0,0.3,1,3,3,13,0.5,1,12,1,0,20,0.5,-1,-100,0,37,0.755,1,500,1,0.027,0.02,0.02,1,25,0,255,2,1,0.9,22,6,0.3,0,255,255,255,255,1,1.5,1,0,0,31,0,0
elif $preset==4
  variables=0,1,1000,0,0,1,0,0,2.3736,1,3,3,13,0.5,1,23,2,30,20,0.5,-1,80,0,7,0.2,1,0,1,0.01,0.02,0.02,1,28,0,255,2,1,0.9,22,6,1,11,255,255,255,255,1,1.1,0,0,0,-30,0,-100
elif $preset==5
  variables=0,1,1000,0,0,1,308,0,2.3736,1,3,3,0,0.5,1,23,2,350,1,0.5,-1,100,0,10,1,1,0,1,0.2,0.02,0.02,1,29,0,255,2,0.9,1,22,6,1,19,134,110,71,255,1,1,0,0,0,13.4,0,-100
fi

if $preset
  if $preset==$old_preset
    if [$__output]!=[$variables]
      __output=${1-4},0,${6--2}
    fi
else
  __output=$variables
  fi
fi

com,origres,procres,dccires,preset,bst,bstsharp,bstblur,locnorm,\
filt,dist,distblur,distmerge,diststr,wc,bilsize,bilrep,fuzz,fuzzblur,\
fuzstr,plsmseed,plsmsat,plsmblur,plasmerge,plastr,cracks,sckrad,sck,lgtone,\
lgttwo,lgthree,sketch,sklike,cutmin,cutmax,linthick,linestr,brkstr,skmerge,\
noistr,cnvs,cvmod,cvr,cvg,cvb,cva,post,emboss,huestr,\
bri,con,gam,hue,sat=$__output

uglify $__output

u "{"$com"}""{"$origres"}""{"$procres"}""{"$dccires"}""{"$preset"}""{"$bst"}""{"$bstsharp"}""{"$bstblur"}""{"$locnorm"}"\
"{"$filt"}""{"$dist"}""{"$distblur"}""{"$distmerge"}""{"$diststr"}""{"$wc"}""{"$bilsize"}""{"$bilrep"}""{"$fuzz"}""{"$fuzzblur"}"\
"{"$fuzstr"}""{"$plsmseed"}""{"$plsmsat"}""{"$plsmblur"}""{"$plasmerge"}""{"$plastr"}""{"$cracks"}""{"$sckrad"}""{"$sck"}""{"$lgtone"}"\
"{"$lgttwo"}""{"$lgthree"}""{"$sketch"}""{"$sklike"}""{"$cutmin"}""{"$cutmax"}""{"$linthick"}""{"$linestr"}""{"$brkstr"}""{"$skmerge"}"\
"{"$noistr"}""{"$cnvs"}""{"$cvmod"}""{"$cvr,$cvg,$cvb,$cva"}""{"$post"}""{"$emboss"}""{"$huestr"}"\
"{"$bri"}""{"$con"}""{"$gam"}""{"$hue"}""{"$sat"}""{"$preset"}"


2 Likes