投稿記事

2024年 06月の記事 (1)

ふたさこ 2024/06/16 18:03

シェーダーでエフェクトを作った話

ふたさこのサクフウです。
まずは方針の変更についてお知らせします。

前回にてイベントシーンの実装報告をまとめてやるみたいな感じで言ってましたが小分けに報告していくことにしました。
理由としては強いやつが強すぎるからです。進捗遅れてます。
あとやってることが幅広いので一つの記事にまとめずらいこともあります。

なので小分けに戦果報告していく方針にしました。
本記事はその第一弾です。

今回はふたなりネーロエとエロトラップダンジョンver2のイベントシーンで使われるエフェクトを作ったので紹介します。

前回の進捗報告にて作ったイベントシーンを紹介しました。
その中に動画編集で後付けしたエフェクトがあったイベントシーンを紹介したのを覚えているでしょうか?これです。

この円形に広がる波紋のエフェクトを動画編集の後付けではなくUnity上で実装しました。
こんな感じ。


それでは作った所感です。

今回エフェクトを作ったのはたったの一つですがなかなか手強い敵でした。
理由は単純です。倒し方がわからない全く未知の敵だったからです。

私はこいつを倒すためにシェーダーというものを学ばなければなりませんでした。

目を盗まれたバトー

シェーダーとは端的に言えばものの見え方を決めるプログラムです。
配置した3Dモデルなどを実際の画面上にどう描画するか決めます。

例えばトゥーンシェーダー。これは3Dモデルの陰影の描写をデフォルメすることでアニメっぽく見えるようにしたシェーダーです。

逆により細かく陰影を描写するシェーダーを作れば3Dモデルはよりリアルに見えるでしょう。

やたら綺麗でリッチになってるマインクラフトの動画を見たことはありませんか?
あれはMODによって陰影や光をより細かく描写するようなシェーダーに変えてあるのが一因です。

さて、ここだけ聞くとシェーダーは3DCGの技術であってドットでゲーム作ってる私にはなにも関係ないのでは?と思う方いるかもしれません。

しかしシェーダーとはものの見え方を決めるプログラムです。
陰影の描写だけでなく、ゲーム画面の見え方そのものにすらその力は届きます。

今回エフェクトを作るにあたってそんな力であるシェーダーを新しく学ばなければなりませんでした。

とはいえそれだけでした。周到に計画しシェーダーの作り方を学ぶと順当に敵は倒れました。
今回のエフェクト制作による進捗の遅れはありません。
前回の記事にてシェーダーの学習も込みで入れてだいたい今ぐらいに全部終わるだろうと言ってました(結局別の要因で大幅に遅れる事態になりましが)

とはいえそれでもシェーダーとは恐ろしい敵であると私は感じました。
ナメック星でフリーザにとどめを刺したあとの悟空みたいな顔になってます。

今回と同じようにこれから先においても、シェーダーはどうしてもそうしなければならないときにしか手を出すことはないでしょう。

ところでシェーダーのなにがそんなに恐ろしかったのでしょうか?
それはちょっとおもしろすぎることです。

深淵なるシェーダーへ

先ほどシェーダーの概要の説明で私が陰影の描写がどうこう言ってるの聞いて「あっ、この人そういうの好きそう」と思った人もいるのではないでしょうか?

そのとおりです。普段からイラストの研究で陰影の描写がどうこう言ってるこの私がシェーダーのことを嫌いになるわけがありませんでした。

それに限らずエフェクトを作るという点でもシェーダーは大変おもしろいものでした。
シェーダーとはものの見え方を決めるプログラムです。
その範囲であればなんでもできます。

やろうと思えば私が今まで苦労して作ったドットアニメを文字通りうんちにしか見えなくなるようなシェーダーをも作ることができるでしょう。

なんでもできてなんでも試せます。
さらにUnityではシェーダー作りを加速させるシェーダーグラフという機能も用意されています。

シェーダーとはものの見え方を決めるプログラムです。
なのでシェーダー用の言語を学びプログラミングしなければなりませんがUnityが用意したシェーダーグラフではプログラミングを全くせずにシェーダーを作ることができます。

今回エフェクトを作るにあたって一応シェーダー用の言語がなんとなく読める程度にしてから臨みましたが必要ありませんでした。

さらにシェーダーグラフではリアルタイムに結果が出るので試行錯誤がさらに加速します。
その結果、やればやるほどエフェクトが改善していきます。
クリエイターとしてこんなに楽しい瞬間はありません。

ではなぜ今回計画通りに終わったのでしょうか?
それはどこまで作れたらやめるのかを明確にしておいたからです。

倒すためにシェーダーについて調査していた時点でエフェクト作りに入れ込んで無限に時間を使うのが目に見えていたので明確な線引きを用意していました。
それで正解でした。

今回作った波紋エフェクトもまだまだ手を加えたい余地があります。
例えばもっと画面全体を水面のように揺らしたいとか。
しかし心を鬼にして今回は手を引いてます。エフェクトを作ってもゲームは完成しません。完成すればいいのに!

あとそれとは抜きにゲーム制作初心者がシェーダーに手を出すのは私はおすすめしません。
なんのためになにを作るのか明確じゃないとシェーダーやシェーダーによるエフェクト制作は沼ります。
エフェクト制作初心者であればそういう試行錯誤を推奨しますが、ゲーム制作初心者がやることではないと私は思いました。

シェーダーグラフもUnityの操作に慣れてないと結構わけわからず、ゲーム制作そのものの挫折の可能性が高まります。
それを乗り越えても、普通にシェーダー作るのは大変です。
どうしても使いたいなら既にあるものをそのまま利用するのが良いと思います。

結論としてはシェーダーはおもろいけど、沼。ふたさこのサクフウに特攻ついてます。危ない。

最後にシェーダーグラフになれるために試しで作ったグリッチエフェクトをついでに置いておきます。

苦労して作ったドットアニメがこうなるのはちょっとした感動があります。かっこいい。
でもまだ改善の余地が……表示のずれ幅をもっとランダムにすればさらに……

最後に

次回の記事についてです。
次回は進捗が遅れた原因その1の紹介になるかと思います。7月の頭ごろに投稿予定です。

よろしくお願いします。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索