先日渋谷で開催された「Shader Forge 102 〜ShaderForgeをつかって学ぶシェーダー入門〜」へ行ってきました。 UnityAsset「ShaderForge」の勉強会2回目です。 講師の小林さんの話がとてもわかりやすいので、この回楽しみにしていました。 【Unity道場14】Shader Forge 102 〜ShaderForgeをつかって学ぶシェーダー入門〜 カスタムライティング/トゥーンシェーダー編 - dots. [ドッツ]
ShaderForgeをつかって学ぶシェーダー入門
シェーダーの書き方、考え方を勉強。 本日はカスタムライティングを学んでいきます。 ノードの機能、パターンを見ていく。 シェーダーに関しては、デザイナーの方に作って欲しいが、コードベースのシェーダーを書くのは難しい。 ノードベースの場合、「Maya」 「3dMax」の ShaderFxとかにも応用ができるかも。
絵作り
シェーダーのGPUで処理される、画像処理の手順を示したスクリプト。 C#とは考え方が違う(CPU と GPU) 並列処理ができるのがGPU。 全部並列処理で書かれているので、Vertexを取得を順番ではなく、一気に取得することができる。 シェーダーを使えば同じTextureを使っても表現が違う。
今回の「shaderForge」は信頼度が高い。更新も頻繁にされている。
カスタムライティングとは
Unity - マニュアル: サーフェイスシェーダーでのカスタムライティングモデル
影を落としたい時には LightAttenを使う。 頂点を目印に影ができる。
このままだと影が荒くなってしまう。
LambertShader
LambertとはテカリのないShader。
Dotproductノード(内積)
光線と法線の内積は、オブジェクトへの光の当たり具合を知ることができる。 ノードのオプション
- standerd 何もせず
- positive マイナス計算しない
- negative プラス計算せず
- ads 絶対値
- normalized 1 ~ 0で判定(-1が0になる)
Half Direction は反射(スペキュラー計算)で使う。 これを使って Half Lambert 通常のLambertは、影の入り方がキツイので、もう少しゆるくするのがHarfLamberd
Blinn-Phingモデル
Half Lambertにスペキュラを足す。
Powerノード 値の累乗。 絞込(明るい部分)ができる。
トゥーンシェーダー
ToonColorShaderとToonLineSahderと別れている。
CompMask:2次元ベクトルを作成する。
ランプシェーダー
傾斜シェーダー。 色がパキッと分ける。 Stepノードと Lerpノードを使う。
環境光
AmbientColor:周りの色に影響されるかどうか。
FallOff
Texture設定で wrap modeをclampにしないと変な所に色がつく場合がある。
Costomlightingではなく Emissionに繋いでも大丈夫。 ToonShaderの場合だとEmissionの方が良いのかも。
ToonLineShader
マテリアルベースのアウトラインは、軽いが弱点がある。
交差線・クリース線が出ない。 直接テクスチャに書き込む方がよいときもある。
その他アウトラインに関しては、イメージエフェクトのポストエフェクトでも出せる。 PencilはFPS出ないのでゲームで使うのは難しいらしい。 Unityでステンシルを用いたアウトライン表現 - 太郎Work
Unityちゃんシェーダー
Normalの影響を与えたい、与えたくない。これをswichで分けている。 Falloffを使っていない。 グラデーションはシェーダーで作っている。 影を頂点カラーを使っている。(テクスチャベース)入り抜きのためのテクスチャを用意。 Comp maskでデータを取り出している。
スライド
スライドが公開されていますので、こちらを見たほうがためになると思います。
【Unity道場14】Shader Forge 102 〜カスタムライティング/トゥーンシェーダー編の講義スライドと実習用Unityプロジェクトを公開いたしました。https://t.co/1QwVd0fdAn https://t.co/HsLswxqeSL #unity道場
— 小林信行 N.Kobayashi (@nyaa_toraneko) 2016年11月1日
感想
今回PCしか持っていってなく、ShaderForgeを動かすのがトラックパットだけでは操作がとても面倒くさかった。 小林さんも言ってらしたのですが、マウス(3ボタン)がないと生産性が全然違うとのことで、次はマウスを持参しようと思いました。
今回は、前回の入門編と違って、私がやってみたかったトゥーンシェーダーの作り方だったので、とても興味深く聞くことができました。 実践できる部分も多いと感じたので、今後手を動かして実装物を作成していきたいです。
10日で学ぶUnity 5 2Dゲーム入門 カジュアルゲーム制作で楽しく覚えよう! 株式会社フーモア Unity部 エムディエヌコーポレーション 2016-11-15 売り上げランキング : 487129 Amazonで詳しく見る |