スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Unity トゥーンシェーダ

このブログに

「Unity トゥーンシェーダ」

で迷い込む人が結構います。正直トゥーンシェーダは標準で存在するのでそれで良いじゃんと思うのですが、駄目なんですかね。検索で探すのはまあ簡単に調べられていいのだと思いますけれど、一言だけ言わせてもらうと、

汎用のトゥーンシェーダなど存在しない。

これはもう

ホモが嫌いな女子なんていません

ぐらいの確定事項。基本的な仕組みを把握して、それでシェーダの書き方がある程度分かってしまえばどうということはありません。ちなみに私はシェーダの書き方が分からないから基本シェーダエディタで、まれにテキストエディタで自力となっています。シェーダエディタだと、アウトライン付のトゥーンとか書けないですからね。

さて、近道というか逆に遠くなりそうな気もしますけれども標準のシェーダを使えそうなシェーダにするために私がやってたこと。

・ランプテクスチャの変更(必須)
・パラメータ調整を可能にする(ランプテクスチャ作るのも作ってもらうのも面倒だった)
 ↑主に入力と出力をいじるパラメータ
・アウトラインはZを後方に(標準はあまりにも干渉してた)
・アウトラインをさらに細く(標準はあまりにも太い)
・アウトラインの拡張をスクリーン基準に(標準のシェーダはワールド座標で法線分なので)

トゥーンシェーダに関しては基本的にトゥーンシェーダ単体で全てが完結するものでは決してありません。モデル側の仕込みも基本必要です。トゥーンシェーダの肝となる部分はライティングの部分です。コレに干渉するのはもちろん法線です。なのでトゥーンのかかり方を変えたいという場合は法線を調整してください。うちでは途中でめんどくさくなったんでシェーダで調整できるようにしています。ちなみに影の部分との境目にアウトラインを出したいとかいいはじめた人がいたら裏拳かましてください。後はライティングの数値の最低値とか色々小手先テクニックでなんとかがんばってください。

アウトラインに関してです。はっきり言ってポストエフェクトでのアウトラインは出来ないものだと割り切ってもらっても問題ないです。重いので。多分レンダーテクスチャ使用しないとプライマリサーフェスにα無いような気がしますし。さて、基本的に標準のアウトラインはポリゴンを法線方向に引き伸ばすシェーダです。なのでアウトラインのポリゴンが普通のポリゴンと干渉しないように適度なZオフセットをかけます。さらに標準は一番細く設定しても太いので設定できるレンジを変更します。はっきり言ってRangeではなくfloatに変更したほうが良いでしょう。そして、アウトラインのポリゴン拡張幅は法線をスクリーン変換したものです。コレは画面に近づくと拡張幅が変わることを意味します。ですのでスクリーン変換した後で正規化してから設定サイズ分スケールしちゃいましょう。Normalizeの処理は基本的に重たい処理ですが、処理負荷は主にフラグメント側に持っていかれるので、そんなに気にしないでも大丈夫だと思われます。
関連記事

コメントの投稿

非公開コメント

プロフィール

masanotooru

Author:masanotooru
雪国で働くプログラマでしたが、会社を辞めて関西にいます。
プログラムの話もしますが漫画が好きなので漫画の話をします。
バイクを買ったので、そっちの話も増えました。
最近はUnityばかりなのでそっちメイン。

Google Adsense
検索フォーム
カテゴリ
最新コメント
メールフォーム

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。