2019年7月に作ったシェーダーを紹介する(VRChatライブコーディングもやったぞ!)

f:id:kaneta1011:20190719164311p:plain
サムネ用

はじめに

毎月やっている月毎に制作したシェーダーの紹介第6回目です。

今月は先月までと比べて忙しい時期だった(後先月頑張りすぎて燃え尽きていた...)ので、あまり活動できませんでしたがいくつかシェーダーを作ったので紹介します。

7/3

f:id:kaneta1011:20190719164250p:plain

仕事から帰ってきて友人と通話している間にのんびりシェーダーライブコーディングの練習をしていてできたものです。

Travelerに登場した物体と似たようなものを出そうという意思と、bloom表現をボリューメトリックにしようと考えてできました。

一度のマーチングループで衝突判定とボリューム累積を行っているので、結構いい加減な見た目になっていますが、これはこれでありだと思ってます。

動くものはこちらから glslfan.com

7/16

会社の同僚にこちらのページを教えてもらい、インスパイアされて作り始めました。 www.reddit.com

Glow表現

レイマーチングでGlow表現をする時はボリューム累積を行うのが一般的なので、今回も例に漏れずそのようにしています。

自分が今までやっていたボリューム累積と異なるところとして

  • マーチ数は変更せずにシーンの深度を見てマーチ距離を決定する
  • ディザパターンを使用して見た目の情報量を増やす

を取り入れてみました。

f:id:kaneta1011:20190720230436p:plain
ピクセル毎にマーチ距離が一定の特に工夫なしのボリューム累積

f:id:kaneta1011:20190720230627p:plain
ディザパターンあり

f:id:kaneta1011:20190720230716p:plain
深度からマーチ距離を決定する

深度を見てマーチ距離を決定することで、距離が近い箇所のボリューム累積が正確になり何もしないよりかは良い見た目になったと思います。

ディザパターンはこちらのShadertoyで実装されていたベイヤー配列というパターンを使わせていただきました。

www.shadertoy.com

ja.wikipedia.org

特殊な距離関数合成

距離関数に関する情報はiq氏のページがとても有名ですが、MERCURYというデモグループのこちらのページにもとても有益な距離関数の情報が載っています(こちらは主に距離関数同士の合成に関するメソッドが多数あります)

mercury.sexy

f:id:kaneta1011:20190720233227p:plain
minによる合成

f:id:kaneta1011:20190720233310p:plain
fOpUnionStairsによる合成

スパイクブラー

f:id:kaneta1011:20190720233614p:plain
ブラー

このブラーをスパイクブラーと呼ぶか知りませんが、トゲトゲになるので僕はそのように読んでいます。

実は全然特殊なことをしていなくて、スクリーン中央から放射状にノイズを作成してアニメーション変数iTimeのオフセットとして利用しています。

iTimeにオフセットしてモーションブラーは過去にTraveler 2で利用したテクニックですが、これを放射状なノイズに変更するだけで全然違った印象になりました!

f:id:kaneta1011:20190720234038p:plain
放射状ノイズ

7/17

帰宅直前、玄関の前あたりでブタジエン氏に誘われて2度目のVRChatライブコーディングをやりました!

今回はなんと坪倉氏制作の4人ライブコーディングバトル特化の闘技場風のワールドで、私含めて4名のライブコーダーで二時間弱で同時にコーディングを実現できました!!

当日の様子はこちらにアーカイブされています。

www.youtube.com

私はアイデアが思いつかないときは過去に見た映像などを再現しようと頑張る傾向にあります。

コーディングが終わった後に、「元ネタを忘れてしまったがTwitterで見た映像を再現しようとした」という話をしたら、観覧者の一人だったfotfla氏が元ネタを知っていて、まさかの裏ライブコーディングで同じネタで作っていました...!

こんなこともあるのかと盛り上がっていました。

さいごに

7月も何とかシェーダーを作ることができました。

3日坊主で有名な僕が、7ヵ月も続けられていることが今でも驚きです...(それだけシェーダーで遊ぶのは楽しい)

最近はGLSLやシェーダーライブコーディングを始める人が多くて、TLを眺めるだけでもとても楽しいですし、VRChatというプラットフォームでみんなでワイワイシェーダーを書いてボイチャするという空間が楽しすぎました!

8月は何を作るかまだ未定ですが、もし何か作ったら紹介します。