2019年5月に作ったシェーダーを紹介する
はじめに
毎月やっている月毎に制作したシェーダーの紹介第4回目です。
腰を据えてがっつりシェーダーを書いていた前月までと異なって、今月は1シェーダーにつき60分以内で作ったものばかりになりました。
このように短時間でシェーダーを作成するのは、シェーダーライブコーディングというジャンルで、それに挑戦しました。
4/25
現時点では何も見ずに30分でこれが限界だった(軽率なIFS)
— かねた (@kanetaaaaa) 2019年4月25日
(法線計算できなかった...https://t.co/7AlXMBLHA3 pic.twitter.com/uiaYPOwUvH
世界最大規模のデモパーティであるRevision 2019が4/19 ~ 22に開催されて、そこで行われたシェーダーライブコーディングに影響されて、現時点の実力でどんなものを30分で作れるか挑戦してみたものです。
競技中は事前に用意したコードを持ち込んだり、ググったりできないため、前月までのシェーダーを作っていた時のようにスムーズにやりたいことを実現できませんでした。
このシェーダーを作るうえで以下の詰まりポイントがありました。
- カメラ行列の計算(crossの順番等..)
- カメラ行列とレイの掛け順
- IFSするたびにスケールを変えようと思ってできなかった
- 法線計算しようとしたけどできなかった
- 全部mainに書くんじゃなくて距離関数は分けた方が整理しやすい...(IFSするあたりで結構混乱した)
4/26
その1
新幹線で30分
— かねた (@kanetaaaaa) 2019年4月26日
まだ時間があるのでもう一度やるかもhttps://t.co/1YNlsb4JQ9 pic.twitter.com/ZXXn1Ovb4Q
実家に帰る新幹線内で30分で作ったものです。
前回の反省のうちカメラに関する処理と、法線に関する処理を習得してから取り掛かりました。そのため時間にもある程度余裕ができたので、マテリアル分けに挑戦しました。
実際に動くものはこちらから見れます
https://glslfan.com/?channel=-LdJnYWiIXubgZJAMZJq&viewer=true
その2
二回目
— かねた (@kanetaaaaa) 2019年4月26日
プリミティブ感が拭えない
既に自分のできることに限界を感じているので、テクを覚えるターンが必要なのかもしれない..https://t.co/7Ni3YUJHYM pic.twitter.com/QcjXihaNKh
実家に帰る新幹線内で30分で作ったものその2です。
glslfanで作っているときに@gam0022氏が見に来てちょっかいを入れられながら作っていました。(意見をもらいながら作れるのはライブコーディングならではです!)
今回はIFSのイテレーションごとにマテリアルを変えるものに挑戦してました。
4/27
実家で30分https://t.co/tM1jGppAkT pic.twitter.com/XcnwIJ1i1x
— かねた (@kanetaaaaa) 2019年4月27日
実家で30分かけて作ったものです。
相変わらずIFSでめちゃくちゃな形状を作成しています。
先月も利用した、常に視線の反対側にライトを配置するものでライティングをしてみました。
このような角ばった形状では鉱石のような見た目になって綺麗です。
(RevisionのShader ShowDownでも同じようなライティングをしているものがあったので影響されました)
5/4
実家から東京へ帰る新幹線でおそらく60分ぐらいで作りました。
今まで着手開始から行き当たりばったりの、その場の思い付きでシェーダーを書いていましたが、この辺りから事前にどういったルックにしようか考えてから作るようになりました。また30分で完成させるのは、まだ自分にとってハードルが高いと感じたので制限時間を60分にしました。
今回はビートを刻むポストエフェクト(今回は色収差もどき)と実家で習得したPolar Foldingと鏡面反射を絶対に使用すると決めていました。
くるくる回っている球が鏡面反射をしているのですが、かなりわかりずらいですね...
5/5
少し前にtwitterで見かけたトーラストンネルをライブコーディングで作りました🤔
— かねた (@kanetaaaaa) 2019年5月4日
トーラスのuvで詰まって合計60分ぐらいかかりましたhttps://t.co/4ts64uErcZ pic.twitter.com/QNYSmrq4z3
Twitterで見かけたイケてるシェーダーに似たものを60分で作りました。
元ネタはこちらです
Raytracing a torus with polygonal cross-section by forming it out of clipped cones: https://t.co/hmshTUgD8M pic.twitter.com/eaubJFBBfq
— Edd Biddulph🐚 (@eddbiddulph) 2019年5月3日
無限に見えるトンネルは、実はトーラスの内部をぐるぐる回っているだけです。
トーラスのUV計算に時間がかかった上に、もう一度作れと言われてもとっさに出てこないので復習しておきます...
またこのシェーダーは今まで書いたシェーダーの中で一番短いものでした!
985文字でこのルック!
5/7
就業時間後の帰る前の15分で作りました。
Shader ShowDownで登場したシェーダーに若干インスピレーションを貰っています。
Modで増やした形状にオフセットをつけたかったんですが、疑似乱数がうまくいかずに時間切れになってしまいました...
5/15
久しぶりにライブコーディングをしたhttps://t.co/iVkKO04GoO pic.twitter.com/CtRg9FFbgB
— かねた (@kanetaaaaa) 2019年5月15日
しばらくゲームにはまっており、なかなかシェーダーを書けなかったので、ボリュームライトを絶対に使うぞという気持ちでリハビリも兼ねて60分制限で作りました。
形状を予め決めていなかったので、ボリュームライトがあまり目立たないシェーダーになってしまいました。
5/17
移動の新幹線で60分コーディングhttps://t.co/eufDMfRFKc pic.twitter.com/XdfFdSt4Pw
— かねた (@kanetaaaaa) 2019年5月17日
前回のリベンジで、今度はどんな形状にするか決めてから、今月二度目の実家に帰る新幹線内で作りました。こちらも60分です。
ソフトシャドウだけ自力で書けなかったのでカンニングをしてしまいましたが、ステージとボリュームライトの雰囲気がマッチしていてそれなりのルックになったと思います。
また、今月意図的に学んだテクニックをたくさん使ったので集大成のようなものになりました。
- 法線とポイントライト
- 距離関数の引き延ばし
- Polar Folding
- ボリュームライト
反省点として単色のシェーダーを作ってしまいがちなので、もっといろいろな作品を見て色使いを真似したいなと考えています。
さいごに
今月はライブコーディング月間でした。
今後の課題として以下のものがあるので、来月はこれらを消化していきたいです。
- ノイズ系の習得
- Value Noise
- FBM
- SmoothMin等の特殊な距離感数の合成
- ライブコーディングにおけるマテリアル分け手法の確立
- 未だに右往左往している..
- ライティングの習得
- AO
- ソフトシャドウ
- スペキュラ反射
- ポストエフェクト
- トーンマッピング
来月も、もし何か作ったら紹介します。