Anime Shading Plus
Show / Hide Table of Contents

📝 レンダリング PASS の説明


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

ASP に必要な最小構成の renderer feature は 3 つあります。renderer data に必ず次の renderer feature を追加し、有効化してください: ASP Material Pass、ASP ShadowMap、ASP Depth-Offset Shadow


これら 3 つの renderer feature は、それぞれ独立した 3 つの PASS に対応しています。このページでは、それぞれの PASS の用途を詳しく説明します。

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 を半透明オブジェクトに適用できない理由でもあります。半透明オブジェクトは深度情報を書き込まないためです。

ASP Shadow Map


キャラクター 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