2017年末の現状
Unity の3Dを触り始めて約1年。そこそこちゃんとした Shader が書けるようになってきました。 レンダリングサンプルはこんな感じ。
全編スクラッチしており、Normal Map や Matcap の設定はもちろん、アーティスティックな光や影の色を設定で作れるようになっています。
なんでまとめ記事書くの?
年末なので振り返り。
あと、よくゲーム開発系の話をする、同僚の いも@EFB~相手は死ぬ~ (@adarapata) | Twitter さんに 「ところでシェーダ書くのにどの辺を調べました?」と聞かれ、返答ながなが書いたら これコンテンツになるやつじゃん
って気づいたため。
もともと持ってた技術
やったこと
- WebGL を 用いて Shader を用いてできることの全体像を掴む
- wgld.org
- 2016年 週3 ランチでハンズオンしつつ読み進めた
- これだけで丸1年かかって2017年になってしまった・・
- Unity の全体像を掴む
- 有名な猫本(https://www.amazon.co.jp/dp/B01H4ONR86)をみながら Unity 入門
- Unity の Shader 処理の全体像を掴む
- esprog.hatenablog.com
- Unity で Shader を扱う際は
ShaderLab
という、Cg/HLSL
(一般的な Shader 言語) をラップしたものを使う - Unity の用意したライブラリやら方言やらに慣れなきゃ作れない(SQLとかにも通じるものがある)
- やりたい事別の Shader の処理を理解する
- esprog.hatenablog.com
- alfa.hatenablog.jp
- 「
Surface Shader(コードをそんなに書かなくてもプリセットでそこそこ綺麗に出力)
を、スクラッチで書いた場合」を見比べながら理解する。 - 私が表現したいものは Unity が用意したものでは実現できないので、色々自作できるように知識をつける。
- たとえば、光源の位置から影となる箇所を算出するなど、色々ある
- Standard Shader を読み解く
- unity3d.com
- あとは、ユニティちゃんシェーダーとか。
- Web フレームワークとか OSS とかでもそうなんだけど、詳細知りたいなら公式の実装を見る事のが一番!
- 逆に、公式が使っていない(サンプル公開していない)機能を使うのは危険だよね。いつオミットされてもおかしくない。
- 実際に Shader を書いて見る
- ここは 4. 5. を行き来しながら進めてる。
- アイデアと関連付け能力の見せ所
- 数学的な知識があると、より表現の幅が広がる〜〜と実感している
まとめ
まずは全体像をみて脳内に目次を作る。次に実装・資料確認を繰り返し、細かい所のナレッジを溜めていった。 web ほど流行り廃りは早くない世界なので、どっしりと落ち着いて学習を進めていける。 こういった再利用可能な描画技術の蓄積は、表現の豊かさに直結するので、気になったアナタもぜひこの沼に浸かりましょう。