1// A 3D version of Liquid Paint. 2// try: Iter=2, Amp=3 3// Inspired by: http://glslsandbox.com/e#8067.3 4// for 3D printing: curv -Ovsize=.15 -Ojit -o hypno_coral.{x3d,curv} 5 6parametric 7 Iter :: int_slider[0,50] = 10; 8 Amp :: slider[0,3] = 0.6; 9 Scale :: scale_picker = 0.7; 10 Speed :: slider[0,4] = 1; 11 Offset :: slider[-1.5, 2] = 0; 12 Smooth :: slider[0,5] = 3.2; 13in let 14 plasma3D = make_texture ([x,y,z,t] -> 15 let p = [x,y,z]*Scale; 16 in do 17 local t = t*Speed; 18 for (i in 1..Iter) 19 p := p + Amp/i*sin(i*p.[[Y,Z,X]] + t + [0,tau/3,tau*(2/3)]) + 1; 20 in sRGB(0.5*sin(p*pi)+0.5)); 21 gyre = gyroid >> offset (Offset) >> lipschitz 1.5; 22 gsphere = smooth Smooth .intersection [gyre, sphere 20]; 23in gsphere >> colour plasma3D >> scale 2 24