シェーダー芸勉強ログ

※モバイルだと動かないのもあるっぽいです

20210823 - 星空

Player

AE で星空を描くチュートリアル を WebGL で真似てみた。 FBM で星の濃いところと薄いところを作ったり、その FBM をそのまま加算してグローエフェクトの代わりにしたり。星はボロノイで丸を描いて、各セルの中心点をシードにした乱数で個体差を出してみた。 星の半径を直接 px で指定できるように、 uv ではなく実座標を投げられるボロノイを実装したりした。

20210609 - さんかく

Player

20210608 - ルービック的なやつ

Player

距離函数に与えるベクタを回転行列で回すことで、物体が回ってるように見えるやつを試してみた。 素朴に距離函数と光源のドット積でハイライトをつけると、本来影になって光らないはずの場所も光ることがあるのに気づいた。 いくつかの (離散的な) 振る舞いからランダムに一つを選ぶ、みたいのに苦労したけど、これうまい書き方あるんだろうか。

20210607 - ネオ集団行動

Player

陰関数 (f(x) - y = 0) を使って平面図形を描くやつをやってみた (0 を境として、正と負で色を切り替えると図形が現れる)。 絶対値 (abs(f(x) - y)) を使うとアウトラインだけ出せることに気づいた。 0 ~ 1 に clamp した値をブーリアンみたいに使って非連続な動きを出すやつを使ってみた。

20210606 - DDRA みたいな空

Player

FBM (非整数ブラウン運動) を使うといい感じのフラクタルができるのを学んだ。 ボリュームレンダリングの考え方は この記事 を参考にした。

20210605 - Hello, World

Player

初めてのシェーダー芸。 レイマーチングの このスライド が面白かった。 実装は この記事 を見ながら書いた。 各ピクセルの色を決定する関数を直接手書きするので、「1から自分で書いた」感が強くて楽しい。