Anime Shading Plus
Show / Hide Table of Contents

📝 レンダリング PASS の説明


1️⃣ 1. インストール手順・事前設定(重要) の最後でも触れていますが、

ASP に必要な基本 Renderer Feature は、ASP Material Pass と ASP Depth-Offset Shadow の 2 つです。Renderer Data に追加し、有効化してください。


この 2 つの Renderer Feature は独立した render pass です。本ページでは、追加 pass を必要としない Cube Proxy と、旧リリースラインで任意に利用できる ASP ShadowMap (Legacy) についても説明します。

Material Pass


キャラクター Renderer のマテリアルが ASP/Character または ASP/Eye Shader を使用している場合、その renderer は Material Pass に書き込まれます。
Material Pass では、renderer に関する 4 種類の情報を 1 枚の RGBA32 テクスチャに保存します。内容は次の通りです:

RGBA チャンネル 情報の種類 説明
R Material ID キャラクター描画に使われるすべての ASP マテリアルに対して、ASP Character Panel が個別の per-material ID を割り当てる。
G Color Luminance その renderer の albedo(albedo map を含む)の明度で、0~1 のグレースケール値。
B Outline Weight Vertex Color の B チャンネル由来。0 にすると outline は強制的に表示されない。
A なし 予約領域で、独自拡張用。

Material ID は非常に重要です。screen space outline やその他のポストプロセス(たとえば ToneMapping)では、現在の pixel がトゥーンレンダリングされたキャラクターかどうかを判定するために material ID を使用します。これにより、特定の効果をその pixel にだけ適用したり、非トゥーンキャラクターの pixel をスキップして処理を最適化したりできます。 また、Material Pass は renderer を別の depth map にも書き込みます。screen space outline のようなスクリーンスペース Shader は、キャラクターの手前に別のオブジェクト(非 ASP マテリアル)があるかどうかを深度情報で判定し、正しい遮蔽表現を行う必要があるためです。 これが、screen space outline を半透明オブジェクトに適用できない理由でもあります。半透明オブジェクトは深度情報を書き込まないためです。

Cube Proxy による self-shadow 除去


Cube Proxy は Renderer Feature ではなく、追加の render pass や shadow texture を作成しません。ASP/Character と ASP/Eye は、キャラクターを包む Proxy 表面で Unity の主光源 Shadow Map をサンプリングします。これにより、Proxy 内部のキャラクタージオメトリによる self-shadowing を除外しながら、Proxy 外部の物体から投射される影を維持します。

ASP Character Panel で Simple AABB Cube to Remove Self-Shadowing を有効にし、Character Center Position Offset と Self Shadow Cutoff AABB Size を調整して、Cube Proxy がキャラクター全体を包むように設定してください。

ASP Shadow Map (Legacy/Unity 2022.3、6.0、6.3 のみ)


💡 これは任意の Legacy ワークフローです。Unity 6.5 ではこの Renderer Feature を削除し、Cube Proxy のみを使用します。ASP Character Panel は ASP ShadowMap が存在して有効な場合に限り ASP ShadowMap (Legacy) と表示し、未追加でも missing とは表示しません。

キャラクター Renderer のマテリアルが ASP/Character または ASP/Eye Shader を使用している場合、その renderer の影は ASP Shadow Map に書き込まれます。これはキャラクター専用の shadow map であり、シーン内の他の shader を使った動的 / 静的オブジェクトの影は含まれません。

Image

ASP Shadow Map Renderer Feature には、ユーザーが調整できるパラメータがいくつかあります。

パラメータ名 説明
Character Shadow Map Resolution ASP Shadow Map のサイズ。1024x1024、2048x2048、4096x4096 の 3 種類から選択可能。
Clip Distance ASP Shadow Map の最遠描画距離。
Cascade Count Cascade Shadow Map の段数。最大 4 段 cascade まで対応。
Shadow Fade Ratio ASP Shadow Map の影のフェード量。0 にするとまったくフェードせず、カメラとの距離が clip distance を超えた時に影が直接切り落とされる。推奨設定は 0.5~1。

ASP Depth Offset Shadow


日本アニメ調のトゥーンキャラクターでは、額まわりに繊細な髪の影が入ることがよくあります。しかし、従来の shadow map ではその表現を再現するのが困難です。

ASP で描画されるキャラクターは通常 self-shadow を持ちません(特に顔)。そこで、設定された Layer と rendering layer mask に一致する renderer の深度を 1 枚の RT に描画し、その深度をオフセットしてサンプリングすることで、顔などのマテリアル上に髪の影を落とせるようにしています。

Image

💡 self-shadowing を避けるため、ASP では material ID を使って、あるマテリアルが自分自身で投影した depth offset shadow を受け取らないようにしています。同じマテリアルが depth offset shadow の Caster と Receiver の両方になることはできないためです。

  • Edit this page
In this article
Back to top Generated by DocFX