Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #@gui Cascading self glitching: fx_self_glitching_cascade, fx_self_glitching_cascade_preview(1)
- #@gui : note = note("Shifts images in a cascading fashion but computes values based on shifted and original images.")
- #@gui : note = note("<small>This filter many channel options and many operation options allowing for extremely-distorted images. Don't always trust the preview!</small>"), sep = separator()
- #@gui : 1. Shift channels = choice("RGB/sRGB","CMYK/CMY","HSV/HSV8","HSL/HSL8","HSI/HSI8","LCH/LCH8","Lab/Lab8","YCbCr/YCbCr_2","YIQ/YIQ8","YUV/YUV8","Bayer/INT24","XYZ/XYZ8")
- #@gui : 2. Alt choice = bool(0)
- #@gui : 3. Process Alpha = bool(0)
- #@gui : 4,5. Zeroth shift = point(50,50,0,1,255,255,255,175)
- #@gui : 6. Boundary = choice(3,"Zero","Nearest","Periodic","Mirror")
- #@gui : sep = separator()
- #@gui : 7. Iterations = int(3,1,32)
- #@gui : 8. Repeat post-shift operations = bool(0)
- #@gui : sep = separator()
- #@gui : 9,10. Shift target = point(55,55,0,1,255,0,0,175)
- #@gui : 11. Target for final (rather than first) shift = bool(0)
- #@gui : 12,13. Cascade centre point = point(45,45,0,1,0,255,0,175)
- #@gui : 14. Shift randomness = float(0.75,0,4)
- #@gui : 15. Boundary = choice(3,"Zero","Nearest","Periodic","Mirror")
- #@gui : 16. Power = float(0,-5,5)
- #@gui : 17. Bias = float(0,-256,256)
- #@gui : 18. Negation = bool(0)
- #@gui : 19. Operator = choice("Add","Multiply","Bitwise And","Bitwise Or","Bitwise Xor","Power","Reverse Power","Modulo","Reverse Modulo","Divide","Reverse Divide","Subtract","Reverse Subtract","Left Bitwise Shift","Reverse LBS","Right Bitwise Shift","Reverse RBS","Left Bitwise Rotation","Reverse LBR","Right Bitwise Rotation","Reverse RBR","Average","Round","Reverse Round","Sine","Reverse Sine","Cosine","Reverse Cosine","Tangent","Reverse Tangent (CPU-intensive)","Cosecant","Reverse Cosecant","Secant","Reverse Secant","Cotangent","Reverse Cotangent","Variance","Difference","Minimum","Maximum","Interference (Add)","Reverse Interference (Add)","Interference (Multiply)","Interference (Divide)","Reverse Interference (Div)","Interference (Subtract)","Reverse Interference (Subt)","Interference (Rev Subt)","Reverse Interference (Rev Subt)","Interference (Difference)","Reverse Interference (Diff)","Interference (Variance)")
- #@gui : 20. Multiplier 1 = float(1,0,10)
- #@gui : 21. Addition 1 = int(0,-1024,1024)
- #@gui : 22. Post-Shift Modulo = int(256,1,1024)
- #@gui : 23. Multiplier 2 = float(1,0,10)
- #@gui : 24. Addition 2 = int(0,-1024,1024)
- #@gui : sep = separator(), 25. Run on channel(s) = choice("All","RGBA [all]","RGB [all]","RGB [red]","RGB [green]","RGB [blue]","RGBA [alpha]","Linear RGB [all]","Linear RGB [red]","Linear RGB [green]","Linear RGB [blue]","YCbCr [luminance]","YCbCr [blue-red chrominances]","YCbCr [blue chrominance]","YCbCr [red chrominance]","YCbCr [green chrominance]","Lab [lightness]","Lab [ab-chrominances]","Lab [a-chrominance]","Lab [b-chrominance]","Lch [ch-chrominances]","Lch [c-chrominance]","Lch [h-chrominance]","HSV [hue]","HSV [saturation]","HSV [value]","HSI [intensity]","HSL [lightness]","CMYK [cyan]","CMYK [magenta]","CMYK [yellow]","CMYK [key]","YIQ [luma]","YIQ [chromas]")
- # #@gui : sep = separator(), 26. Preview type = choice("Full","Forward horizontal","Forward vertical","Backward horizontal","Backward vertical","Duplicate top","Duplicate left","Duplicate bottom","Duplicate right","Duplicate horizontal","Duplicate vertical","Checkered","Checkered inverse"), Preview split = point(50,50,0,0,200,200,200,0,10,0)
- #@gui : sep = separator(), note = note("<small>Original author: <i><a href="https://goo.gl/Ryf7Cv">David Tschumperlé</a></i>; extended by some nobody who calls themselves 'Joan Rake' or something.<p>Latest update: <i>2018/08/24</i>.</small>")
- fx_self_glitching_cascade :
- shift {$4-50}%,{$5-50}%,0,0,$6,0
- repeat $! l[$>] if {!$3} split_opacity fi l[0] to_rgb
- if {$2}
- if {$1==0} rgb2srgb
- elif {$1==1} rgb2cmy
- elif {$1==2} rgb2hsv8
- elif {$1==3} rgb2hsl8
- elif {$1==4} rgb2hsi8
- elif {$1==5} rgb2lch8
- elif {$1==6} rgb2lab8
- elif {$1==7} rgb2ycbcr_2
- elif {$1==8} rgb2yiq8
- elif {$1==9} rgb2yuv8
- elif {$1==10} rgb2int
- elif {$1==11} rgb2xyz8
- fi else
- if {$1==1} rgb2cmyk
- elif {$1==2} rgb2hsv
- elif {$1==3} rgb2hsl
- elif {$1==4} rgb2hsi
- elif {$1==5} rgb2lch
- elif {$1==6} rgb2lab
- elif {$1==7} rgb2ycbcr
- elif {$1==8} rgb2yiq
- elif {$1==9} rgb2yuv
- elif {$1==10} rgb2bayer 0
- elif {$1==11} rgb2xyz
- fi fi
- iter=0
- repeat $7
- iter={$iter+1}
- f "init(
- const stype = $11?$7:1;
- shift = ((([w,h]-1)*([$12,$13]-[$9,$10]+[u(-1,1),u(-1,1)]*sqrt((($12-$9)^2)+(($13-$10)^2))*($14^3)))/stype)%;
- const sign = $18?-1:1;
- const boundary = $15;
- );
- val = sign*((2^$16)*j(shift) + $17);
- ($19==0?(val + i):
- $19==1?(val * i):
- $19==2?(val & i):
- $19==3?(val | i):
- $19==4?xor(val,i):
- $19==5?(val^i):
- $19==6?(i^val):
- $19==7?(val%i):
- $19==8?(i%val):
- $19==9?(val / i):
- $19==10?(i / val):
- $19==11?(i - val):
- $19==12?(val - i):
- $19==13?(val << i):
- $19==14?(i << val):
- $19==15?(val >> i):
- $19==16?(i >> val):
- $19==17?for(n=0,n<(i%32),n++,rol(val)):
- $19==18?for(n=0,n<(val%32),n++,rol(i)):
- $19==19?for(n=0,n<(i%32),n++,ror(val)):
- $19==20?for(n=0,n<(val%32),n++,ror(i)):
- $19==21?avg(i,val):
- $19==22?round(val,i,0):
- $19==23?round(i,val,0):
- $19==24?i*sin(val*2*pi/$20):
- $19==25?val*sin(i*2*pi/$20):
- $19==26?sign*i*cos(val*2*pi/$20):
- $19==27?sign*val*cos(i*2*pi/$20):
- $19==28?i*tan(val*pi/$20):
- $19==29?val*tan(i*pi/$20):
- $19==30?i*sin($20/(val*2*pi)):
- $19==31?val*sin($20/(i*2*pi)):
- $19==32?sign*i*cos($20/(val*2*pi)):
- $19==33?sign*val*cos($20/(i*2*pi)):
- $19==34?i*tan($20/(val*pi)):
- $19==35?val*tan($20/(i*pi)):
- $19==36?$20*var(val,i):
- $19==37?abs(i - val):
- $19==38?min(i,val):
- $19==39?max(i,val):
- $19==40?0.005*i*(((j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16))+val):
- $19==41?0.005*val*((j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)+i):
- $19==42?0.1*i*(j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)*val:
- $19==43?0.1*i*(j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)/val:
- $19==44?0.1*val*(j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)/i:
- $19==45?0.001*i*((j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)-val):
- $19==46?0.001*val*((j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)-i):
- $19==47?0.001*i*(val-(j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)):
- $19==48?0.001*val*(i-(j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)):
- $19==49?0.001*i*abs((j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)-val):
- $19==50?0.001*val*abs((j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16)-i):
- 0.00001*$20*var(val,i,(j(0,0,0,(c+1)%(s(#0)-1)+1)*2^$16))
- );$8||$iter==$7?val*$20+$21%$22*$23+$24;"
- if {$2}
- if {$1==0} srgb2rgb
- elif {$1==1} cmy2rgb
- elif {$1==2} hsv82rgb
- elif {$1==3} hsl82rgb
- elif {$1==4} hsi82rgb
- elif {$1==5} lch82rgb
- elif {$1==6} lab82rgb
- elif {$1==7} ycbcr_22rgb
- elif {$1==8} yiq82rgb
- elif {$1==9} yuv82rgb
- elif {$1==10} int2rgb
- elif {$1==11} xyz82rgb
- fi else
- if {$1==1} cmyk2rgb
- elif {$1==2} hsv2rgb
- elif {$1==3} hsl2rgb
- elif {$1==4} hsi2rgb
- elif {$1==5} lch2rgb
- elif {$1==6} lab2rgb
- elif {$1==7} ycbcr2rgb
- elif {$1==8} yiq2rgb
- elif {$1==9} yuv2rgb
- elif {$1==10} bayer2rgb 0,0,0
- elif {$1==11} xyz2rgb
- fi fi
- a c done endl
- fx_self_glitching_cascade_preview :
- index=0
- layers=l
- -fx_self_glitching_cascade $*
- #repeat {max(0,$layers)}
- #ac[$index] "-fx_self_glitching_cascade $*",$25
- #index={$index+1}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement