RenderingUnityのシェーダでノーマルマップのZ値を使って情報量を増やした発光表現を紹介します。関連Unity2019.2.10やりたいこといま、下図のようなモデルが描画されているとします。ゲームでは、武器やキャラクターの演出で輪郭部分を発光させることがよくあります。この場合よく行われる実装が視線ベクトルと法線の内積を使って云々する方法です。シェーダで表現するとこんな感じになります。Shaderを使っていますが、記事の本筋には関係ないです。コメントが書いてある部分にだけ注目してください。レンダリング結果は以下のようになります。この方法はシンプルでいいですが、輪郭表現もシンプルで情報量が少ない印象です。ノーマルマップのZ値を使って情報量を増やすそこで、ノーマルマップのZ値を利用することで情報量を増やします。ノーマルマップの性質を考えると、Z値が1の部分は「平ら」な部分であると考えられます。逆に言うと(Unpack後の)Z値が0に近い部分は「溝」やら「エッジ」やらを表しているといえます。そこで、Z値が小さい部分を発光させる処理を追加してみます。}}powを掛けて調整していますが、要はノーマルマップのZ値が小さいところほど光るようにしているだけです。レンダリング結果この処理を適用するとレンダリング結果は以下のように変わります。情報量が増えて細かい溝の部分まで発光するようになりました。1はてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。