9月シェーダーお絵かき勉強記録

9月からシェーダー(主にシェーダーお絵かき)の勉強を始めました。
自分にしてはかなりコンスタントに進捗を上げれたので、noteにまとめてみることにします。技術的なことは書いてなくて(最後に参考サイトまとめがあります)感想文&シェーダーは良いぞみたいな記事です。シェーダーに興味を持つきっかけになれば幸いです。

きっかけです。せっかくの長期休みだったので目に見える成長がしたいなと思い。開発中のUnity製VJソフトのアップデートと余った時間でシェーダーをやるぞ!!という気持ちでした。

9/1

色々落ち着いてきて、シェーダーを学び始めました。
過去に3回ほどシェーダーにチャレンジしてはちょっと色を出して挫折してをしてました。4度目の挑戦になります。
この時点では順番に学んでいこうと正規化について調べたりしてましたが、絵が出るわけではないので楽しさはあまりなく、このままだとまた挫折していたと思います。(時間をかけて正規化について考えたのは今に繋がってるので、大事なことだとは思います)

VRChatでシェーダーを学ぶ配信をしてたらMALO(上ツイート)さんにブタジエンさんを紹介して頂きました。シェーダーお絵かきについての記事やシェーダーで使う行列について教えて頂けたりととてもお世話になりました...ありがとうございます。

球が出ました。
まだコピペだったと思います。

あとブタジエンさんに影響されてHHKB買いました。(超良いです。おすすめ、特殊配列最高)

ライティングが出来ました。コピペしつつ、ちょっとシェーダーと仲良くなれた気がします。ライティングの計算を理解する時に微分、内積が出てきて、シェーダーの数学的楽しさもちょっと見えた気がしました。数学は得意ではないのでそれ以上の話はほぼ丸暗記でやってますが...

9/2

ほとんどコピペですが、シェーダーお絵かきっぽいものが出来ました。
コードで絵を出す感覚がめちゃくちゃ楽しくて最高になってきました。

きのこが出ました。距離関数を組み合わせてモデリングをする方法を学んだ結果です。

9/5

カンニングなしで球を出せるようになりました。

9/7

この辺りから、「球は出せるけど...この先は?」と
僕には絵が出せないのでは、みたいな感じになってた気がします(pmod,IFSがまともに使えてないのでそれはそう)

9/9

コピペをいじっただけですが、IFSをやりました。

VRChatでシェーダーを書く、「おさんぽ会」というのに参加させていただきました。集中して2時間近くシェーダーを書いて、かなり達成感があって楽しかったです。

9/19

日付がだいぶ飛びます。間も進捗は出てるんですが、あんまり目立ったことはしてなかったので

MEROOM(VRChat)でCUBEの距離関数を考える会が発生していて(怖すぎ)、その流れで配信しながらライブコーディングっぽいことをしました。
それっぽい絵が出て、シバヅケさんからアニメーションの作り方も教わったのでだいぶ楽しくなってきました。

9/20

先日のMEROOM会で、感覚をつかんで絵を出せるようになってきました。楽しい。

9/21

twistを学びました。だいぶそれっぽい絵になってきました。楽しい。

9/22

今まで、画面全体を使うタイプの絵が多かったですが、たまたまオブジェクト感のある絵が出せました。かっこいい。これは距離関数以外のところも適当にいじっていて、「意外と適当に触っても良いのか~」と学びを得た気がします。

twistを使った絵を出そうと作りました。
アニメーション難しい...BPM同期をさせたのでだいぶVJ(というよりSJ?)感が出て楽しくなってます。

あとタイムラプスみたいなのは見返すのが楽しくて良いです。

9/23

だるぐだ(VRChat)で、うにさんとライブコーディングっぽいことをしました。30分もしないうちに3Dの絵が出て最高

シェルさんと解説サイトを一緒に読んでいく会みたいなのをしました。
楽しい。

9/25

VRChatのクラブイベントでライブコーディングVJをしました。
楽しかったです。良い空間を作れてたら嬉しいです。

9/26

twistが好きで、twistを使うだけの会(個人開催)をしました。
VRChatでまたライブコーディングっぽいことをしました。レイマーチングを書く段階でバグを起こしてしまって、だいぶ時間をロスした気がします。前回と比べてそれっぽくはなったので良かったです。

9/27

カクカクした表現とは別に可愛い感じを作りたかったので、smoothMinを学びました。法線計算が間違ってて、色がたまに変です。
よく見ると、それぞれの球は周期的な動きをしてるだけですが、全体としては面白い動きをしててシェーダー楽しい。

9/28

シェルさんと「音のライブコーディングもやってみたいよね~」みたいな話になって、glslサウンドをやりました。本当はSonic Piをやる予定だったんですが、せっかくシェーダーを触っているのでお試しにシェーダーでやってみたら結構シェルさんがするすると作曲しちゃいました(凄い)、僕は200hzの音を出して満足したので途中からいつも通りシェーダーお絵かきをしてました。合作というか、セッションみたいなことが出来て超楽しかったです。ライブコーディングセッション(?)またやりたい。

距離関数ごとに色を変える方法を考える会が発生していて(怖すぎ)、それを見よう見まねで実装しました。ぶつかったときに色がmixするようになっていてめちゃくちゃ良い表現になりました(シバヅケさんありがとう~)

9/29

またシェルさんとシェーダーセッション(?)をしました。
前回はシェルさんの音楽に映像を寄せていきましたが、今回は僕の映像にシェルさんの音楽が寄ってくる感じで、お互いに影響し合う感じがセッションならではの楽しさでした。無限にやりたい。

9/30

反射表現を調べました。結構色々あるみたいで、難しい。

またまたシェルさんとシェーダーセッション(?)をしました。
今回はシェルさんがレースゲームっぽい感じの音を作っていたので、レース感のある絵にしてみました。せっかくなので、対戦相手的な何か飛ばしたいなと思い飛行機っぽい物をモデリングしてみました。シェーダーモデリング楽しい。
飛行アニメーションが「私、sin,cosで出来てるんです。」みたいな感じになるのが、難しいです。アニメーション上手くなりたい。

まとめ

コードを書いて絵(音)を出す体験は、めちゃくちゃ楽しくて最高です。
昔ちょっとblenderでVJ素材を作ってみたこともあったのですが、楽しさより作業感が勝ってしまってあまりハマれなかったです。シェーダーは特に意味もなくエディタを開いてとりあえず書いて絵が出た!楽しい!みたいなことを毎日してた気がします。好みの問題ですが、シェーダーで書く場合はやりたい処理をコードにするだけで良くて、UIを覚えたり、ショートカットを調べたりみたいなコストが無いのが良いなと感じました。(その代わりに、処理について調べる必要はありますが)

シェーダーが楽しいというのもありますが、周りの人たちのおかげで続いている点も多いと思います。ほぼ同時期にシェーダーを始めた人がいたり、セッションしたり、教えて頂けたり、シェーダーに飽きを感じない理由が沢山ありました。ありがとうございます。シェーダーが楽しすぎてUnityが全然進まない病が怖いですが、10月もコンスタントにシェーダーを書いていきたいなと思います。熱しやすくて冷めやすいので急にやめてたらしばいてください。


おまけ

シェーダーを学ぶにあたって、かなり参考にした(シャトルラン並みに往復してる)記事をまとめて貼っておきます。


この記事が気に入ったらサポートをしてみませんか?