gray-matterという便利なライブラリがあります。
「Next.js+gray-matterのススメ」でも書いたようにコンテンツとコンフィグをまとめて1つのマークダウンにかけるようなやつです。
TypeScript でセクションを使う時に少し困ったのでメモしておきます。
gray-matterという便利なライブラリがあります。
「Next.js+gray-matterのススメ」でも書いたようにコンテンツとコンフィグをまとめて1つのマークダウンにかけるようなやつです。
TypeScript でセクションを使う時に少し困ったのでメモしておきます。
ツイッターで書いた以下の #つぶやきGLSL の作成ログ。
四角の動きを表現したい。
#つぶやきGLSL#define B(y).08/length(p-vec2(clamp(cos(y),-.5,.5),clamp(sin(y),-.5,.5))),#define C(y).07/length(p-vec2(cos(2.*y),sin(2.*y))*.25)
vec2 p=(FC.xy*2.-r)/r;
float pi=acos(-1.),a=B(t)b=B(t+pi)c=B(t+pi/2.)d=B(t-pi/2.)e=C(-t),f=C(-t+pi);
o=vec4(a+d+f,b+d+e,c+e+f,1); pic.twitter.com/fibWLBhBqH— Narumium (@Nr_Narumium) November 17, 2020
ツイッターで書いた以下の #つぶやきGLSL の作成ログ。
今回タグを入れられなかった。
#define G(n)o.rgb+=m[n]*i/6.;#define C(n)abs(p.x-p.y+i-n)<=.13
mat3 m=mat3(.9);vec2 p=1.5*(FC.xy*2.-r)/r,q;float i,y,a;for(i=0.;i<6.1;i+=.3,y=mod(t,4.)+1.7,a=abs(i-y),q=p){if(C(3.)){if(a<=.6)q=p+.2-a/3.;if(q.x*q.x*q.y*q.y*q.y-pow(dot(q,q)-1.,3.)>0.)G(2)else G(1)}if(C(3.15))G(0)} pic.twitter.com/zO7zSAw7PY— Narumium (@Nr_Narumium) November 14, 2020
ツイッターで書いた以下の #つぶやきGLSL の作成ログ。
移動ゲートっぽい感じを書いてみたかった。
#つぶやきGLSL
void main(){
vec2 p=(gl_FragCoord.xy*2.-r)/r;
float h=atan(p.y,p.x),l=length(p);h=floor((h+acos(-1.))*6.)/6.;
gl_FragColor.g=abs(l-(.9-sin(h*9.+t)*.1));
gl_FragColor.b=.03/abs(l-(.7-cos(h*9.+t*2.)*.3));
if(l<.7-(sin(h*9.-t)+cos(h*5.+t))*.1)gl_FragColor.r=.6;
} pic.twitter.com/7IdC6lbcRB— Narumium (@Nr_Narumium) November 13, 2020
ツイッターで書いた以下の #つぶやきGLSL の作成ログ。
前回の斜め方向ドットが若干コレジャナイ感があったので焼き直し。
#つぶやきGLSL#define C(c,k)y=abs(.5-sin(t)*2.-(c));if(y<.5&&length(f-.1)<0.1-y*.2)gl_FragColor.rgb+=k;
void main(){
mat3 m=mat3(.9);float y;
vec2 p=(gl_FragCoord.xy*2.-r)/r,l=floor(p*5.)/5.,f=p-l;
C(l.x+l.y,m[0])
C(-l.x+l.y,m[1])
C(l.x-l.y,m[2])
C(-l.x-l.y,m[0]+m[1])
} pic.twitter.com/eh3n5ifwJU— Narumium (@Nr_Narumium) November 12, 2020
ツイッターで書いた以下の #つぶやきGLSL の作成ログ。
タイトルに迷ったので通し番号でナンバリング。
FMラジオ感(?)が足りない #つぶやきGLSL#define C(c,n,s)y=2.-abs(sin(t+s))*3.;if(y<c)if(length(f-.1)<.1*(-y+c))gl_FragColor.rgb+=m[n];
void main(){
mat3 m=mat3(.9);
vec2 p=(gl_FragCoord.xy*2.-r)/r,l=floor(p*5.)/5.,f=p-l;
float y;
C(l.x+l.y,2,0.)
C(l.y-l.x,0,.4)
C(-l.y,1,.8)
} pic.twitter.com/sGY0lD6sGm— Narumium (@Nr_Narumium) November 11, 2020
ツイッターで書いた以下の #つぶやきGLSL の作成ログです。
#つぶやきGLSL
void main(){mat3 m=mat3(.5);vec2 p=(gl_FragCoord.xy*2.-r)/r;float y=mod(t,6.),c=floor(y/2.);y-=c*2.;gl_FragColor.rgb=c<.1?m[2]:c<2.?m[0]:m[1];if(2.-y*4.<p.x+p.y)for(float i=-2.;i<2.;i+=.2)if(abs(p.x-p.y+i)<max(y-1.,.2)*.1)gl_FragColor.rgb=c<.1?m[0]:c<2.?m[1]:m[2];} pic.twitter.com/67saR3nF1d— Narumium (@Nr_Narumium) November 9, 2020
ちょっといつもと違う感じにお絵描きがしたくなったので、基本になる四角形を色々書いてみます。正方形、長方形、角丸、適当な4点などの基本形。
トゥーンシェーディング(セルシェーディング)はアニメ風の塗りを表現します。
今回は3Dを描画するときのトゥーンレンダリングではなくて、画像をそれっぽく変換してみたいと思います。
することを簡単に書くと、明るさを数段階に分けることとエッジ抽出です。
今回はやりたいことと考え方のまとめで、上手くは行きません。