GLSL SandboxやShadertoyなどで公開したやつ
0
SUGIMOTO Yoshiaki @catzpaw

#define F d=max(d,(1.2-length(sqrt(abs(mod(p*s,2.)-1.))))/s);p+=s*=1.7 float l=.01,d=l,s=.3,i;vec3 O=vec3(s,1,t),p,D=vec3((FC.xy*2.-r)/r.y,s)*rotate3D(t,O.xxy);for(;i<1.&&d>1e-4;i+=.01){p=O+D*l;d=0.;s=3.;F;F;l+=F;}F;o.rgb+=hsv(l,.2/l,i+d*s); #つぶやきGLSL bit.ly/3rL4rlY pic.twitter.com/D2VUSvdyc0

2022-04-23 22:14:50
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL for(float s,e,i,z,a=sin(t*.2);++i<4e1;o+=s*vec4(s*e,s,s/e,0)*1e-6){s=2.;vec3 p=vec3(z*(FC.xy-r/s)/r.y,z-a*5.-6.)*rotate3D(t,vec3(1,7.*a,4));for(int j;++j<5;p=abs(p)-1.,s/=e=min(dot(p,p+a*2.+1.7),.6)+.1,p/=e);z+=length(p)/s;} bit.ly/2NRK6L0 四次元ボックス pic.twitter.com/oHWvvQzqP1

2021-03-26 12:57:03
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL for(float e,i,s,z;++i<5e1;o+=e*vec4(s,1,e/i,1)*6e-5){e=2.;vec3 p=vec3(z*(FC.xy-r/e)/r.y,z)*rotate3D(t*.2,vec3(2,1,7));p.z=mod(p.z,e)+mod(t*e,e)-e;p.y+=.7;for(int j;++j<6;p=abs(p)-1.,e/=s=min(dot(p,p),.9)+.07,p/=s);z-=p.x/e;} bit.ly/31dCmGl お花トンネル pic.twitter.com/bPV3lGCQvJ

2021-03-24 21:44:39
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL for(float z,e,i,s;++i<5e1;o+=e*vec4(sin(t)+1.2,s+s,s,1)*1e-4){e=2.;vec3 p=vec3(z*(FC.xy-r/e)/r.y,z-4.);p.y+=sin(t*.1)*e;p.xz*=rotate2D(t*.1);for(int j;++j<6;p=abs(p)-1.5,e/=s=min(dot(p,p),.75),p/=s);z+=length(p.xz)/e;} bit.ly/3c6tLM4 サイバー提灯スペース pic.twitter.com/jC6CtnuyLe

2021-03-21 10:47:05
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec3 p,q=vec3(1,.5,.9);for(float s,i,z,e;++i<5e1;z+=e=length(p)/s,e<3e-3?o.rgb+=e*q*i:p){p=vec3(z*(FC.xy)/r.y,z)*rotate3D(t*.3,q)-.6;q=q.yzx;s=4.;for(int j;++j<8;s*=e=2./dot(p,p),p=abs(p)*e-q);} bit.ly/38ZqwUK pic.twitter.com/p0C2X3sH69

2021-03-21 00:46:51
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec2 p=sin(9.*FC.xy/r.y*rotate2D(.78))+sin(t*.17)*.2;for(float a=sin(t*.1),s=.4,i=0.;++i<5.;s*=1.2,a*=1.4)p=((p*rotate2D(-floor((atan(p.x,p.y)+.24)/.49)*.49))-s)*rotate2D(a);p+=t*.1;o=vec4(hsv(p.x,.5,abs(sin(floor(p.y*9.)))),1); bit.ly/2NG7HOU pic.twitter.com/CRWVGN5Mea

2021-03-20 20:51:41
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec3 p;mat2 m=rotate2D(t*.3);for(float s,i,z,e;++i<60.;z+=e=length(p)/s,e<.06?o.rgb+=hsv(p.z*e,.5,e):p){p=vec3(z*(FC.xy-.5*r)/r.y,z-2.);p.yz*=m;p.xz*=m;s=2.;for(int j;++j<8;s*=e=2./clamp(dot(p,p),.4,1.),p=abs(p)*e-vec3(2,1,.7));} bit.ly/3e89nLO 減らねえ。 pic.twitter.com/jxVhbxE9nY

2021-03-05 17:55:44
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec3 p;mat3 m=rotate3D(t,vec3(cos(t*.3),sin(t*.17),0));for(float s,i,z,e;++i<1e2;z+=e=length(p)/s,o.rgb=p*e){p=vec3(z*(FC.xy-.5*r)/r.y,z);p.y-=.4;p*=m;s=2.;for(int j;++j<8;s*=e=2./clamp(dot(p,p),0.,1.),p=abs(p)*e-1.08);} bit.ly/3e8wANN pic.twitter.com/EjGeNhjNaV

2021-03-05 15:37:11
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec3 p;for(float s,i,z,e;++i<1e2;e<1e-3?o.bag=p:p=vec3(z*(FC.xy-.5*r)/r.y,mod(z+t,1.)-.8)){s=1.;for(int j;++j<8;p=abs(p)*e-vec3(1,1,.3))s*=e=2./clamp(dot(p,p),.5,.9);z+=e=length(p)/s;} bit.ly/30d0xEa ループ1回目にpがセットされてないお行儀の悪さよ。 pic.twitter.com/SIPfrIWG2q

2021-03-05 14:07:00
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL o=abs(FC.yxxy*2.-r.yxxy)/r.y;for(int i=0;++i<7;o=o.ywzx/dot(o,o)+sin(vec4(1,.7,.4,2)*t)*o.yzwx-o);o=floor(abs(o))*.1; bit.ly/3r78Ayh pic.twitter.com/N1FvvrwnOl

2021-03-01 16:17:33
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。 shadertoy.com/view/tldBz2 2000年にゼビウス軍が攻めてきたときの様子。 あの時はうちも衝撃波でベランダのガラスにヒビいったりして大変だった。 大家さんが直してくれたと思ったら敷金からガッツリ引かれてて引っ越しのとき随分モメたし。 pic.twitter.com/2XXn2GdQU3

2021-02-13 12:14:15
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。 shadertoy.com/view/wtKcRh フルスクリーンでも見れるようにかなり調整したよ。 音楽は、君のママが聴いてた頃のトランス風。 pic.twitter.com/9acREKKBV7

2021-01-18 11:42:28
SUGIMOTO Yoshiaki @catzpaw

ついでだからGLSL Sandbox版も。 glslsandbox.com/e#70591.1 グラフィックボードとディスプレイの進化に合わせて高精細な感じにした。先代のような派手さは無いけど。 pic.twitter.com/ZcNLVjVrX2

2021-01-15 02:45:56
拡大
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL #define H(s) (fract(sin(Q.x*s)+sin(Q.y*s)*i)*.8+.1) float i=1.,v;vec2 p=FC.xy/1e2,q,Q;for(;i<4.;i+=.3)Q=floor(q=p*i+vec2(sin(t+i),t)),q=fract(q)-vec2(H(i),H(5.)),v+=smoothstep(.01,0.,dot(q/H(i),q))/i;o+=max(v+.3,1.-2.*FC.y/r.y); bit.ly/3ieGnlm pic.twitter.com/KXzRHuCO05

2021-01-14 22:48:01
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。石がいっぱい。 shadertoy.com/view/ttcyDs マウスボタン押すとエッジ検出表示になって石の数をかぞえやすくなりますよ! pic.twitter.com/i5vcRn7lVz

2021-01-11 20:09:39
拡大
拡大
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。六花2。 shadertoy.com/view/3dyfDV 去年のやつがかなり重かったのでフラクタル内のFoldRotateをHexRotateに置き換え、距離関数内に収束計算ができるだけ入らないようにして高速化。さすがにWQXGAだとまだ重いけど、フルHDなら60fps出るんじゃない? pic.twitter.com/b8hBVKEycM

2020-12-17 22:26:27
SUGIMOTO Yoshiaki @catzpaw

というわけで今週のGLSLシェーダー。ダイヤモンド。 shadertoy.com/view/WdGfRh なるたけ速くなるようにはしてるんだけど、ディスパーションのために1ピクセルあたり7回もレイマーチングやってるので激重。ちょっと実用的とは言えない。 pic.twitter.com/cDFZPNuLIJ

2020-12-06 11:39:56
拡大
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec2 p=FC.xy/r+vec2(6,t);for(float i=1.;i<9.;i+=.3)p+=sin(i*p.yx-t)/i;o=sin(p.xyyy+t)*.5+.5; bit.ly/3fAKCX9 92文字。最初のvec2(6,t)がないと非常にカッコ悪いことになるので外せなかったりする。 pic.twitter.com/vYr1vFkmDw

2020-11-26 11:37:02
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL #define F(x) fract(1.-time*x) #define E(x) smoothstep(.8,1.,F(x)) #define G(x,y) E(x)*E(y) vec2 mainSound(float time){return vec2(F(sin(time*4.)*1e2)*E(.5)+F(1e2)*G(2.,4.)+F(3e4)*E(8.)+F(2e3)*G(4.,3.)+F(5e3)*E(4.))*.3;} bit.ly/398uw64 音のみ。

2020-11-24 21:39:32
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL float i,s=sin(t*.2);vec2 p=(2.*FC.xy-r)/r.y*s;for(;++i<9.;p.x=fract(p.x)-.5)p=p.yx*s/dot(p,p);o-=p.y-.25;o.x+=p.x; bit.ly/3pR6YZo pic.twitter.com/QTlEPKic5a

2020-11-23 03:26:15
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダーはスケールシーケンサ3。 shadertoy.com/view/ts3fDN コード譜が1か所にまとまったおかげでできなくなった事もあるが基本的に自由度が上がったうえで色々楽になった。 搭載音源は従来通りFC音源とC30だけど、もちろん好きな音源を追加して鳴らせるよ! pic.twitter.com/7mP9V050Ev

2020-11-21 20:43:42
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL float i,l,d=6.28;vec3 p,v=vec3(0,3,fract(t)*d);for(;++i<99.&&d>.01;l+=d*.4)d=length(cross(p=cos(vec3(l*(FC.xy*2.-r)/r.y,l)*rotate3D(2.,v.xyx)+v),p.zxy))-.1;v.z=cos(l);p=ceil(sin(p*20.))/l;o=(.05+v.zxxx/i)*l+p.x+p.y-p.z;o.b-=.1; bit.ly/3kfO0Yt pic.twitter.com/UmQkx778GN

2020-11-11 12:12:01
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL float i,l,d=6.28;vec3 p,v=vec3(0,3,fract(t)*d);for(;++i<99.&&d>.01;l+=d*.4)d=length(cross(p=cos(vec3(l*(FC.xy*2.-r)/r.y,l)+v),p.zzy));o=1.-l*.08+v.xyyx*l/i; bit.ly/2Ue61f6 そして、さっきの格子をレイマーチングに持ってきてアレンジ。いとも簡単に結像する。 pic.twitter.com/ou1QLBAsvc

2020-11-10 23:04:29
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL float i,v;vec3 c,p,q,s,u=((FC.xy*2.-r)/r.y).xyy;s.z=3.14;p=s.xzx;for(u.z=1.;++i<80.;c+=hsv(p.y,.2,1.-v))p+=u*(v=length(cross(q=cos(p+s*t),q.yzx)))*.4;o=c.xyzz/i; bit.ly/36pvWGn 以前見かけたド変態格子シェーダーの再現に成功した! こいつぁド変態だ!! pic.twitter.com/O2plJEzBv7

2020-11-10 20:49:26
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL float i,l,d=.5;vec3 p,v=vec3(0,1.5,fract(t*d)*12.6);for(;++i<99.&&d>.01;l+=d*.4)p=vec3(l*(FC.xy*2.-r)/r.y,l)+v,d=min(6.-length((p-v).xy+sin(p.yx)),dot(cos(p),sin(p.yzx)))+sin(sin(p.z*3.5)+v.z)*.1+1.;o=l*.1-v.xyyx*l/i; bit.ly/3lfOP4T 少し足せそうで足せない。 pic.twitter.com/pb0VnaXOK2

2020-11-10 11:41:31
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL vec2 g=abs(FC.rg*2.-r)/r.g;o=.4+(g/(cos(4.*dot(g*g.g,g*g.g)-t-t))-g).ggrg-dot(g,g); bit.ly/3eGpq1t 妙gにgが多gいgシェggーダーggrg g pic.twitter.com/T14PW8cRlm

2020-11-09 21:34:18
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL アポロニアン。 float i,j,k,l,s,d=.4;vec3 p,v=vec3(0,d,1);for(;++i<99.&&d>5e-4;l+=d){p=vec3(l*(FC.xy*2.-r)/r.y,l)*rotate3D(t*.5,v)+fract(t)*2.+v;j=s=1.;for(;++j<9.;)p=mod(p-1.,2.)-1.,d=dot(p,p),k=(1.1+sin(t)*.1)/d,p*=k,s*=k;d*=.14/s;}o+=l/j; bit.ly/36kDqdJ pic.twitter.com/n3PNUn6r2m

2020-11-09 10:00:28
SUGIMOTO Yoshiaki @catzpaw

今日のGLSLシェーダー。互いを食おうとするフレンチクルーラー。 shadertoy.com/view/WdtfR7 実はカメラマンがすげー頑張ってて被写体をセンターに入れることにすべてを賭けている。フレームアウトしたら腹を切って詫びる所存とのこと。 pic.twitter.com/UEE9lePmzF

2020-11-07 19:27:15
拡大
拡大
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL 文字数減らした。 float i,d=1.;vec3 p,c=vec3(.1),a=normalize(vec3((FC.xy*2.-r)/r.y,d));for(;i<2.&&d>.1;i+=d*.5){p=(c+a*i)*rotate3D(t*c.x,c);d=0.;for(int j;++j<8;)p=mod(abs(p),8.),d=max(1.-dot(p,p),d),p-=1.6+sin(t)*.3-p;}o.xzy=hsv(i,.2,log(i)); bit.ly/3mTS7Lt pic.twitter.com/8shV0Jr0Vv

2020-11-06 14:56:16
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL float i,j,l,d=9.;vec3 p,q;for(i;++i<20.&&d>1e-5;l+=d){p=vec3(l*(FC.xy*2.-r)/r.y,5.-l)*rotate3D(t*5.,vec3(1,sin(t),1));for(j=0.;j<1.2;j+=.2)d=min(d,length(vec3(length(p.xz)-2.+j,p.y+j,0)+j)-.3-j);}o+=cos(p.xyzz)*9./i; bit.ly/364NVl5 pic.twitter.com/LUhLErawHA

2020-11-05 10:06:59
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL うそジュリア集合。170文字。本物でも収まるけど。 vec2 p=(FC.xy*2.-r)/r.y,c=sin(t*vec2(.7,.9))*.005+vec2(-.8,.155);float i;for(i;++i<1e2&&(p.x<9.);){p=vec2(p.x*p.x-p.y*p.y,p.x*p.y*2.)+c;}i*=.01;o=vec4(abs(cos(p)*i),i,1); bit.ly/32aNEvU pic.twitter.com/AZUYuVlTLB

2020-11-04 15:16:39
SUGIMOTO Yoshiaki @catzpaw

今日のGLSLシェーダー。FPVドローン。 shadertoy.com/view/WstfRr 距離関数がCommonタブにあるのはSoundでも地形を参照してるから。 pic.twitter.com/Dc0SOAjmrS

2020-11-02 18:44:27
SUGIMOTO Yoshiaki @catzpaw

今日のGLSLシェーダー。麻の葉文様。 shadertoy.com/view/tsVyDt 距離関数なので線の太さ自由に変えれます。着物のシェーダーに移植してみてね。 pic.twitter.com/z0d9U8VjNR

2020-10-31 18:21:59
拡大
SUGIMOTO Yoshiaki @catzpaw

久しぶりのGLSLシェーダー。ローディングぐるぐるリベンジ。 glslsandbox.com/e#68914.0 pic.twitter.com/C8R0TMkyYD

2020-10-28 19:46:48
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL void main(){vec3 d=vec3((gl_FragCoord.xy*2.-r)/8e2,1),o=d*0.,a=vec3(0,1,t);for(int i=0;i<20;i++)o+=length(cos(o+a)+cos(o.yyy)+sin(o.zyz+a))*d-d;gl_FragColor=vec4(vec3(dot(o,o)*1e-3)+o*2e-2,1);} pic.twitter.com/o5u6EPDvmb

2020-04-16 19:44:21
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL void main(){vec2 p=(gl_FragCoord.xy*2.-r)/min(r.y,r.x);p=vec2(length(p),atan(p.x,p.y));p+=sin((p.xx-t)*9.);p+=sin((p+t)*5.);gl_FragColor=vec4(sin(p.x+p.y+vec3(0,1,2)+t*6.28)*.5+.5,1);} pic.twitter.com/cRBnIav3Vc

2020-04-16 18:22:48
SUGIMOTO Yoshiaki @catzpaw

#つぶやきGLSL void main(){vec2 p=mod(gl_FragCoord.xy*8./min(r.y,r.x),1.)-.5;gl_FragColor=vec4(sin((atan(p.x,p.y)+t)*vec3(1,2,4)),1);} pic.twitter.com/s8cwKN7THG

2020-04-16 17:36:18
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。 "Kurogane" を無理矢理VR対応にしました。 shadertoy.com/view/tl3Sz7 ポストエフェクトのパスでmainVRを作るととても面倒なことになるのでmainImageのみにしてるんだけど、VRかどうかは判別したい。…ので、前段のmainVR内で隅に紫の点を打って判別できるようにした。 pic.twitter.com/ok8wYaCZL6

2020-02-23 00:49:45
拡大
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。踊る鉄。 shadertoy.com/view/tl3Sz7 音楽にLPFを使ったらコンパイル時間が3秒ぐらいになったので各所を調整してCore i7系で1.1~2秒ぐらいに収まるようにした。 オートフォーカス付きDOFを入れたけどTwitterの動画じゃ全部ぼやけてるから分からんか。 pic.twitter.com/lHrjDR6kvl

2020-02-07 23:20:57
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。きらきらマンデルボックス。 shadertoy.com/view/3ty3Wt 音楽入りだけど2秒ぐらいでコンパイルできる。我ながらScaleSequencerは優秀。 800x450までは60fps出るようにチューニングした。フルHDだと、よほどものすごいビデオカードでもなけりゃガクガクになるはず。 pic.twitter.com/sm8KpV9qAd

2020-01-31 23:47:27
SUGIMOTO Yoshiaki @catzpaw

今週のGLSLシェーダー。スケールシーケンサ2。 プログラムの無駄を減らし、データ構造を若干整理した。 曲はエジプト風の音階だけど、scale=10のところを7にすると日本風マイナーペンタトニック、8にすると琉球ペンタトニックになってゴキゲンである。ブルーノートは苦手。 shadertoy.com/view/3tVGz3 pic.twitter.com/tz3MhXOKas

2020-01-24 23:02:19
拡大
SUGIMOTO Yoshiaki @catzpaw

先日のGLSLサウンドシェーダーのシーケンサが微妙に気に食わなかったから改造中なんだけど画面が寂しいので、ちょっと超かっこいいだけの2Dフラクタルでお茶を濁している。 pic.twitter.com/41mkGddItH

2020-01-22 23:33:08
拡大
拡大
SUGIMOTO Yoshiaki @catzpaw

今日のGLSLシェーダー。波形テーブル音源。 ナムコC30(N167)相当(8音色設定可能)なのでドルアーガの塔とかできるんじゃねーの? ついでにファミコン音源もDPCM以外入れた。 曲作るのめんどかったから半自動作曲のシーケンサにした。スケールを変更すると楽しいよ。 shadertoy.com/view/WlV3DD pic.twitter.com/A85Jcgrwva

2020-01-18 02:13:59
拡大
SUGIMOTO Yoshiaki @catzpaw

今年最初のGLSLシェーダー。果てしなく広がる横浜駅西口。 音が鳴ります。ていうか絵よりも音作ってた時間のほうが長い。 Yokohama 2020 shadertoy.com/view/3lGGRz pic.twitter.com/ClMYD7fkL8

2020-01-07 13:39:07
拡大
SUGIMOTO Yoshiaki @catzpaw

多分今年最後のGLSLシェーダー。 ビットパターンエディタ。 shadertoy.com/view/Wl3GWS ShadertoyのBufferを使ってみたかっただけ。 …なのだが、めっちゃ便利ツールな気がしてきた。 pic.twitter.com/DnKhqJPfDF

2019-12-28 01:15:46
拡大
拡大
SUGIMOTO Yoshiaki @catzpaw

久しぶりのGLSLシェーダー。下水道の世界。 サウンドを合成する練習。…なので音楽が鳴ります注意。 shadertoy.com/view/Wlc3zB pic.twitter.com/t3qnvbyWEZ

2019-12-18 23:41:11
拡大
SUGIMOTO Yoshiaki @catzpaw

canvasの解像度がどうのこうの言ってたのは、 GLSL Sandbox 仕様のフラグメントシェーダーを好きなように出せるHTMLを作りたかったから。普段WebGLを使ってる人からしたら何のことはないブツだが俺にとってはなかなかの強敵だった。backbufferは使わない割に面倒臭いので未対応。 pic.twitter.com/NrqiFCCSUs

2019-12-06 23:13:32
拡大
SUGIMOTO Yoshiaki @catzpaw

久しぶりのGLSLシェーダー。ガラスの世界。 glslsandboxでセーブしようとしたら502が出るのでglslfanで。 glslfan.com/?channel=-LghI… Inigo Quilezのこの記事を参考にしてたはずなんだけど。 iquilezles.org/www/articles/w… pic.twitter.com/9G0WXurY0a

2019-06-07 00:11:44