It reminds me of the nebulous filter I had made (code isn’t entirely my creation, I translated c# into gmic and extended it as well as optimized it) though I didn’t use that much distortion for this one (can be set to use more), but the idea should be similar as I think they both use trigonometric functions. But, to answer your question, yes.

This is the filter I refer to:

##
Code is super simple, here's the code

```
#@cli rep_nebulous: _main_surf_xy_factor>0,_main_surf_x_factor>0,_main_surf_y_factor>0,-100<=_x_center[%]<=100,-100<=_y_center[%]<=100,0<=_fxyangle<=360,_wave,0<=_lighting_angle<=360,_disturbance>=0,_distx,_disty,0<=_distangle<=360,_disturbance_mode={ 0= do_not_scale | 1=scale_by_axisfact },_color={ 0=gray | 1=color },_alpha_base={ 0=None | 1=hard_light | 2=hard_shade | 3=soft_light | 4=soft_light },_subpixelevel>=0,subpixelprocessingmethod={ 0=Average | 1=Linear | 2=Grid | 3=Bicubic | 4=Lanczos }
#@cli : Creates a Nebulous texture inspired by its Paint.NET plugin equivalent made by MadJik.\n
#@cli : '_main_surf_xy_factor' - Amount of waves by xy-axis.
#@cli : '_main_surf_x_factor' - Amount of waves by x-axis.
#@cli : '_main_surf_y_factor' - Amount of waves by y-axis.
#@cli : '_x_center' - Placement of Nebulous texture relative to the center by x-axis.
#@cli : '_y_center' - Placement of Nebulous texture relative to the center by y-axis.
#@cli : '_fxyangle' - Function angle of Nebulous texture.
#@cli : '_wave' - Amount of waves within waves.
#@cli : '_lighting_angle' - Shifts color output within waves
#@cli : '_disturbance' - Multiplier for distortion.
#@cli : '_distx' - Distorts function by x-axis.
#@cli : '_disty' - Distorts function by y-axis.
#@cli : '_distangle' - Distortion function Angle
#@cli : '_disturbance_mode' - Influences how the distortion result is calculated.
#@cli : '_color' - Color Output
#@cli : '_alpha_base' - determines the alpha based on waves angle.
#@cli : '_subpixelevel' - Subpixel processing level
#@cli : '_subpixelprocessingmethod' - Subpixel processing method. Only applicable when '_subpixelevel' is greater than 0.\n
#@cli : Default value: '_main_surf_x_factor=10','_main_surf_y_factor=10','_x_center[%]=0','_y_center[%]=0','_fxangle=0','_wave=1','_lighting_angle=0','_disturbance=0','_distx=100','_disty=100','_distangle=0','_disturbance_mode=0','_color=1','_alpha_base=0','_subpixellevel=1','_subpixelprocessingmethod=1'\n
#@cli : Author: Reptorian.
#@cli : $ 640,480,1,1 rep_nebulous 10,,,,,45,,,750,100,100,15,0,1,3 n 0,255 drgba
rep_nebulous:
skip ${2=10},${3=10},${4=0},${5=0},${6=0},${7=1},${8=0},${9=0},${10=100},${11=100},${12=0},${13=0},${14=1},${15=0},${16=0},${17=1}
if $1==0||$2==0||$3==0 v + error "Variable 1 to 3 cannot be zero!" v - fi
if $9<0 v + error "Disturbance factor cannot be less than 0!" v - fi
use_sub={abs($16)}
sublevel={$use_sub+1}
spec_count={!14?0+($15?1:0):3+($15?1:0)}
repeat $! l[$>]
iw={w}
ih={h}
{$use_sub?w*$sublevel:w},{$use_sub?h*$sublevel:h},1,$spec_count,"begin(
const sd=w/h;
const shx=($4*w)/2;
const shy=($5*h)/2;
const sx=w>h?1:1/sd;
const sy=w>h?sd:1;
const sx2=2/sx;
const sy2=2/sy;
const ang=-pi*$6/180;
const cos_ang=cos(ang);
const sin_ang=sin(ang);
const distlvl=$9*$1;
const dist=pi/(distlvl/100);
const disth=$10;
const distv=$11;
const dang=-pi*$12/180;
const cos_dang=cos(dang);
const sin_dang=sin(dang);
const k=pi+((-pi+(pi*$7))*10)/10;
const ld=-($8-$6)*pi/180;
const IX_mul=$2*4;
const IY_mul=$3*4;
const cx_mul=$13?$2:1;
const cy_mul=$13?$3:1;
const iml=1.5*($1*10);
const angld=ang+ld;
const hpi=pi/2;
);
ix=(((x+shx)/w-.5)*iml)/sx;
iy=(((y+shy)/h-.5)*iml)/sy;
IX=ix*cos_ang-iy*sin_ang;
IY=ix*sin_ang+iy*cos_ang;
IX*=IX_mul;
IY*=IY_mul;
if(distlvl,
dix=(x/w-.5)*sx2;
diy=(y/h-.5)*sy2;
DIX=dix*cos_dang-diy*sin_dang;
DIY=dix*sin_dang+diy*cos_dang;
cx=DIX*cx_mul;
cy=DIY*cy_mul;
fsd=sin(((cx+cy)/2)/dist);
fcd=cos(((cy-cx)/2)/dist);
IX+=disth*(fsd-fcd);
IY-=distv*(fsd+fcd);
);
t=atan2(IY,IX);
r=sqrt(IX*IX+IY*IY)/100;
ti=sin(t)*cos(r)*k+r+angld;
$15?(
cg=[sin(pi+ti),sin(hpi+ti),sin(ti)];
g=sum(cg);
alp=$15>2?($15==3?g:g*-1):($15==2?(g*-1<0?-1:1):(g<0?-1:1));
$14?[cg,alp]:[g,alp];
):(
$14?[sin(pi+ti),sin(hpi+ti),sin(ti)]:sin(ti)+sin(hpi+ti)+sin(pi+ti);
);"
rm..
if $use_sub r $iw,$ih,1,{s},{$17+2} fi
endl done
```

On the 3000x3000, ask and you shall receive: