📝 レンダリング 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 を使った動的 / 静的オブジェクトの影は含まれません。

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 に描画し、その深度をオフセットしてサンプリングすることで、顔などのマテリアル上に髪の影を落とせるようにしています。

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