ALTIMA OFFICIAL DOCUMENTATION
SHADER — 導入・使用ガイド

ARLitToon(エーアールリット・トゥーン)は、VRChat のアバターやパーティクルエフェクトのための軽量・高機能なアニメ・トゥーン調カスタムシェーダー。イラスト風・セル画風の表現に最適化された、キャラクターアバター・アバター装飾品とエフェクト制作に特化した汎用トゥーンシェーダーです。

BOOTH -ALTIMA- https://altima.booth.pm/

PARTICLE COLORDISSOLVESOFT PARTICLESHDR EMISSIONRIM LIGHTAUDIOLINKGLITTER / SPARKLEOUTLINE / SWEEPMATCAP ×3TOON SHADOWFAKE SHADOWRIM SHADEBACK LIGHTDISTANCE DARKENDITHER FADERECEIVE SHADOWTEXTURE LAYERLIGHT LIMITSPECULAR REFLECTIONDISTANCE FADE
SCROLL
TOON SHADER FOR VRCHAT FX
SEC. 01 — SETUP

はじめに・導入

// overview, file structure, requirements, import

概要

ARLitToon は物理ベースのリアル質感ではなく、イラスト風やセル画風の表現に最適化されています。パーティクルのカラー連携、ディゾルブ、ソフトパーティクル、HDR発光、リムライトといった機能を標準で備えています。

バージョン(更新履歴 / Changelog)

バージョンは小数点を使わない整数で v{見出し版}_GUIr{GUI 枝番} と表記します。見出し版(v の数字)の基準はシェーダー本体 ARLitToon.shader の _ShaderVersion、GUIr の数字は GUI(ARLitToonGUI.cs)の枝番です。現在の版はマテリアル Inspector のヘッダ(✦ ARLit Toon ✦ v48_GUIr0)で確認できます。本履歴には各版の変更点のみを記載します。各機能の使い方・設定値は前述の「機能とプロパティ一覧」を参照してください。

v48_GUIr0 3枚目の Matcap と、リムライトのマスクを追加しました。・3枚目の Matcap を追加しました。・リムライトにマスクを追加しました。・Rim Shade(縁を暗く落とす)を追加しました。・⚠️ Fake Shadow Texture の「自動フォールバック」を、初期値 OFF(描いた影を常に表示)に変更しました。・⚠️ Fake Shadow の焼きこみツールで、「焼きこみ後に落とす側の Fake Shadow Mesh を OFF にする」の初期値を ON にしました。・Fake Shadow の焼きこみツールを使いやすくしました。・Glitter(ラメ)のマスクに、Emission Map のアルファを使えるようにしました。・Emission と AudioLink に「Emission Map のアルファでマスク」を追加しました。・Fake Shadow Mesh の「落とす距離」にマイナスの値(-2〜0)を入れられるようにしました。・Inspector 最下部の「アニメーション操作可能なプロパティ」一覧を、題名をクリックして開閉する形にしました。・Inspector 上部のヘルプ切り替えタブの右隣に「Web」ボタンを追加しました。・共有マスクの取り違えを防ぐ警告を追加しました。・⚠️ 利用規約を改定しました(第2版・本版から適用)。

v47_GUIr0 影を多段に重ねられるようにし、向きの決め方を選べるようにしました。・影が「擬似影」になりました(Pseudo Light・初期値 0.5)。・環境光にも影が掛かるようになりました(常時有効・設定項目はありません)。・⚠️ Receive Shadow(落ち影を受ける)の初期値を OFF にしました。・2 影・3 影を追加しました。・影の境界に色を差せるようにしました(Shadow Border Color / Range)。・影の色にベースの色が乗るようになりました。・ヘルプ(説明文)を一括で隠せるようにしました。・ヘルプ(説明文)の文字サイズを、プロパティ名と同じ大きさに揃えました。・⚠️ 発光の明るさが 2 倍になっていた不具合を修正しました。・⚠️ Unlit モードで Matcap と Rim Light の Multiply が効くようになりました。・Unlit モードのとき、Back Light の項目も隠すようにしました。・Inspector を再編成しました。・ノーマルマップの凹凸を影へどれだけ反映させるかを選べるようにしました(Shadow Normal Strength)。・平坦な影(Shadow Flat Mode)を追加しました。

v46_GUIr1 Inspector の項目の並び順を変更しました。・Matcap から下の並びを「光の表現 → 落ち影 → 輪郭線 → 発光系 → 特殊効果」の流れに整理しました。

v46_GUIr0 Fake Shadow まわりを大きく強化しました。・Fake Shadow の焼きこみツールを追加しました。・焼きこみは「Fake Shadow Mesh が出せないワールド用の保険」として使います。・マスク画像は TGA / PNG から選べます(既定 TGA)。・Fake Shadow Mesh に、影の縁をやわらげる設定を 2 つ追加しました。・Fake Shadow Mesh の 影の重ね方 の初期値を「フラット」に変更しました。・Fake Shadow Mesh の「光が弱いときの向き」の初期値を (0, 0.7, 0.7) に変更しました。・Inspector を整理しました。

過去の更新履歴を開く(クリックで展開)
  • v45_GUIr2 Unlit モードのとき、PBR の項目をすべて隠すようにしました。
  • v45_GUIr1 パーティクル運用(Vertex Color Blend Mode = Multiply)で、PBR(Toon Specular)の環境反射が有効なままのときに警告を追加しました。
  • v45_GUIr0 ライティングを PBR(物理ベース)にしました。 Metallic で金属か非金属かを、Smoothness で表面の粗さを表す、物理ベースの光の反射(PBR BRDF)が標準のライティングになりました。トゥーンの陰影(影色・境界・ぼかし)はそのまま併用でき、セル塗りの質感は保たれます。⚠️ この版から既存マテリアルの見た目が変わる場合があります(詳細は後述)。
  • v44_GUIr2 Soft Particles(ソフトパーティクル)の設置場所を Transparency / Rendering から Particle Color(パーティクルとの連携)へ移動しました(GUI のみ)。Soft Particles はパーティクル向けの機能であるため、同じくパーティクル関連の設定である Vertex Color Blend Mode の下にまとめました。機能・プロパティ・保存値・見た目は従来と完全に同じです(Particle Color の項を参照)。
  • v44_GUIr1 Bake to Base の 「レイヤー(上から順に重なる)」 の見出しに 「・プレビューで表示」 を追記しました(GUI のみ)。この一覧の並び順・調整はプレビュー中の見た目にそのまま反映されることを明示する文言変更で、機能・保存値・見た目は従来と完全に同じです。
  • v44_GUIr0 Fake Shadow Mesh(メッシュから落とす影) を追加しました。前髪などのメッシュ自身の形を光の向きへ押し出して、顔の上に影として落とす機能です。従来の Fake Shadow Texture(描いた影) が UV に描いた静止画だったのに対し、こちらは頭の動きと光の向きに追従します。影が届く奥行きを制限しているため、背景や他のアバターが暗くなることはありません。光の無いワールドでは、指定した向き(既定はやや前上方)へ影が落ちるようフォールバックし、明るさに応じて滑らかに切り替わります。使うには、影を落とす側(前髪など)のマテリアルの Render Queue を受け手(顔など)より大きい値にしてください(設定しないと影が出ません)。既定 OFF・既存マテリアルの見た目は従来と完全に同じです(Fake Shadow Mesh の項を参照)。
  • v43_GUIr0 Fake Shadow(意匠的な落ち影) を追加しました。前髪の影のように「作者が描いた影」を、ワールドの光源に関係なく常に同じ位置・同じ濃さで顔や体の上へ表示する機能です。既存の Receive Shadow(落ち影を受ける) は実際の光源とシャドウ設定があるワールドでしか影が出ませんが、Fake Shadow Texture は照明の無いワールド・暗いワールドでも意図した陰影を保てます(両者は別機能で、併用できます)。影の形は新設の 共有マスク(RGBA パック) の指定チャンネルから読み取ります。Tiling / Offset で位置と繰り返しを調整でき、影の位置はテクスチャを描き直さずスライダーで微調整できます。影の色と濃さも調整でき、Unlit モードでも同じように影が出ます。UV に描いた静止画のため頭や光の向きには追従しません。既定 OFF・既存マテリアルの見た目は従来と完全に同じです(Fake Shadow Texture の項を参照)。
  • v42_GUIr0 Back Light(逆光ライト)にも 環境順応(Env Adapt)/環境色になじませる(Env Tint)を追加しました。逆光は「光が背後にあるかどうか」と「影で遮られているか」だけで判定していたため、ライトを弱めても逆光の明るさは変わらず、暗いワールドでは逆光だけが強く残って浮いて見えることがありました。環境順応を上げると、周囲の明るさ(環境光+メインのライト)に合わせて逆光が自動的に弱まります。明るい場所での見え方は変わりません(暗い側にだけ効きます)。環境色になじませるを上げると、周囲の光の色みが逆光の色に乗ります(明るさは変えません)。Rim Light の同名の項目とまったく同じ仕組み・同じ操作感なので、両方を使う場合も設定の勘所は共通です。暗いワールドで弱まりすぎる場合は 暗所の下限 を上げてください(Back Light の項を参照)。
  • v41_GUIr0 Rim Light に 環境順応(Env Adapt) を追加しました。これまでリムの発光は周囲の明るさに関係なく一定だったため、暗いワールドではリムだけが強く浮いて見えることがありました。環境順応を上げると、周囲の明るさに合わせてリムが自動的に減光され、暗い場所でも風景に馴染みます。明るい場所での見た目は変わりません(暗い側にだけ効く一方向の調整のため、これまでの見え方が明るくなることはありません)。暗所の下限 を上げると真っ暗な場所でもうっすら輪郭が残ります。あわせて 環境色になじませる(Env Tint) を上げると、周囲の光の色みがリムの色に乗ります(寒色の場所では青寄り、暖色の場所では暖色寄り)。色みだけを寄せて明るさは変えないため、環境順応と組み合わせても二重に暗くなることはありません。どちらも Blend Mode の Add / Multiply、および Unlit に同じように効きます。環境順応は既定 ON(= 1)ですが、明るい場所での見え方は従来と変わりません(暗い側にだけ効くため)。従来どおり明るさが一定のリムにしたい場合は環境順応を 0 にしてください(Rim Light の項を参照)。
  • v40_GUIr2 Bake to Base(テクスチャ焼きこみ) を追加しました。複数のレイヤー画像(デカール・ロゴ・模様・メイクなど)とカラー調整(Hue / Saturation / Brightness)を、ベーステクスチャへ焼きこんで1枚の画像にまとめる Unity エディタ用のツールです。実行時に重ねられるテクスチャレイヤーは1枚までですが、焼きこみなら枚数に制限がなく、焼いた後もテクスチャは1枚のままなので実行時の負荷もテクスチャメモリも増えません。マテリアル Inspector の Texture Layer の下に追加された Bake to Base から操作します。上の Texture Layer に設定した画像をそのまま焼きこめるので、「Texture Layer で位置や合成方法を決める → 焼く → 空いたスロットに次のデカールを置く」を繰り返せば何枚でも重ねられます(焼きこみ後は同じ絵が二重に乗らないよう Texture Layer が自動で OFF になり、焼いた設定はレシピに取り込まれるので前に焼いた分が消えることはありません)。カラー調整も同様に焼き重ねができます。焼く前に実際のモデル上で焼き上がりを確認できるプレビューがあり、プレビュー中に設定を動かせばリアルタイムでモデルに反映されます。プレビューと最終出力は同じ処理で作られるため見え方が一致します。焼きこみ結果は新しい PNG として保存され、元のテクスチャは変更しません。設定(レシピ)は保存されるので、いつでも1クリックで焼き直せます。シェーダー本体は変更していないため、既存マテリアルの見た目・実行時の負荷は完全に従来どおりです(Bake to Base の項を参照)。
  • v40_GUIr1 Lighting & Shadow の Receive Shadow(落ち影を受ける) に、半透明プリセットでは効かないことをその場で示す表示を追加しました(GUI のみ)。Blend Preset が Transparent / Fade / Additive のときにチェックが ON になっていると、チェックボックスの右に 「(現在の Preset では無効)」 と表示し、下の説明も原因と対処(Cutout プリセット+Dither Fade)を案内する警告表示に切り替わります。半透明のマテリアルは Unity の仕様で落ち影を受けられないため、「チェックを入れているのに影が乗らない」という誤解を防ぐための表示です。表示のみの変更で、機能・保存値・見た目は従来と完全に同じです(チェックボックスは従来どおり操作でき、Opaque / Cutout に戻せばそのまま効きます)。
  • v40_GUIr0 Glitter / Sparkle(プロシージャルラメ・スパークル) を追加しました。テクスチャを使わずに細かな輝きの粒を生成する装飾用の発光レイヤーです。視線を動かすと粒がきらめきます(金属ラメ・フレークのような表現)。形状は Point(丸点)/ Star(先端の尖った十字)/ Diamond(菱形)/ Fine Dust(微細ラメ) の4種から選べ、粒の座標系は UV / Object(三面投影で全面均一) を切り替えられます。粒の輪郭はどのサイズでもシャープに保たれ、両面表示メッシュの背面でも正しく光ります。スクロール(流れる粒)、HDR 発光(Bloom 連動)、AudioLink 連動(音に合わせた明滅)に対応します。通常 Emission とは独立した加算レイヤーのため、Emission を OFF にしても単体で発光します。発光は透明度に追従します。既定 OFF・既存マテリアルの見た目は従来と完全に同じです(Glitter / Sparkle の項を参照)。
  • v39_GUIr3 Lighting & Shadow の Receive Shadow を、Light Limit と同じ「太字の小見出し+直下にチェックボックス」の表示形式にし、上部の余白も広げました(GUI のみ)。同セクション内で視認性を上げるための表示調整で、機能・保存値・見た目(発現条件)は従来と完全に同じです。
  • v39_GUIr2 Dither Fade(ディザ擬似半透明)の設定位置を Transparency / Rendering から Texture Layer(透明マスクの下)へ移動しました(GUI のみ)。透明マスクと同じ「アルファで抜く」系の機能のため隣接配置にまとめました。表示位置のみの変更で、表示条件(半透明プリセットでは非表示)・機能・保存値・見た目は従来と完全に同じです。
  • v39_GUIr1 GUI の各項目のヘルプボックス(説明文)を整理し、簡潔にしました(GUI のみ)。冗長だった説明を要点に絞り、「詳細は README 参照」の案内は各ヘルプボックスの最後に一度だけ表示するようにしました。表示テキストのみの変更で、機能・保存値・見た目は従来と完全に同じです。
  • v39_GUIr0 Back Light(逆光ライト) を追加しました。メインの平行光(Directional Light)がキャラクターの背後にあるときだけ、輪郭の広い範囲を発光させるイラスト調の逆光表現です。Rim Light が「見る角度で常に縁が光る」のに対し、Back Light は「光が背後にある時だけ光る」ことに加え、影(シャドウ)で光が遮られている部分(上着の内側など)は光りません。Width を小さくすると光る範囲が広がり、Directivity を上げると光が真後ろに近いときだけ光ります。発光は透明度に追従し、裏面での無効化もできます。既定 OFF・既存マテリアルの見た目は従来と完全に同じです(Back Light の項を参照)。
  • v38_GUIr0 Distance Darken(カメラ距離で減光) を追加しました。カメラからの距離に応じて本体の色を減光色(既定は黒)へ近づけます。アルファ(透明度)ではなく色を変えるため、不透明(Opaque)のマテリアルでも作用します。「近づくと暗くなる」「なでなで時に手元を暗くする」といった演出に使えます。既存の Distance Fade(アルファのフェード)とは独立した機能で、併用もできます。Darken Near で最も暗くなり、Darken Far で元の色に戻ります(Near > Far にすると反転して「遠いほど暗い」になります)。発光(Emission)は減光されません。既定 OFF・既存マテリアルの見た目は従来と完全に同じです(Transparency / Rendering の項を参照)。
  • v37_GUIr4 環境光の立体化 を追加しました(常時有効・設定不要)。環境光(ライトプローブ)が主体のワールドや逆光の場面で、環境光に含まれる方向情報から光側/陰側を自動的に復元し、本体が一律の明るさで平面的に沈んで見えるのを軽減します(Lighting & Shadow の項を参照。平行光が強いワールドでは変化はわずかです)。⚠️ 常時有効な改良のため、環境光主体・逆光のワールドでは既存マテリアルも見た目が変わります。あわせて GUI に セクション設定のコピー/ペースト を追加しました:各セクションの折り畳み見出しを右クリックすると「コピー」「ペースト」が選べ、そのセクションの数値設定をひとまとめに別のマテリアルへ移せます(カラーとテクスチャは含みません=マテリアルごとの色・画像はそのまま保てます。Lighting & Shadow は Shadow Intensity / Border / Blur の3項目です)。
  • v36_GUIr0 Dither Fade(ディザ擬似半透明) を追加しました。Cutout / Opaque の描画のまま、網点(ディザ)でアルファ値どおりの擬似半透明を作ります。Fade などの半透明プリセットは Unity の仕様で落ち影(Receive Shadow)を受けられないため、「前髪を表情に重ねて透かしつつ、影も受けたい」場合は Cutout+Dither Fade を使ってください(Transparency / Rendering の項を参照)。既定 OFF・既存マテリアルの見た目は従来と完全に同じです。あわせて同梱修正として、Dither Fade 使用時に輪郭線(Outline)の色が網点の穴から面状に透けて飽和して見える問題を修正しました(Alpha Sync が ON のとき輪郭線も本体と同じ網点で追従します)。
  • v35_GUIr0 Receive Shadow(落ち影を受ける) を追加しました。ワールドの平行光が落とす影(木々や建物の落ち影、自分の前髪の影など)を、トゥーンの影色(Shadow Color / Border / Blur の設定)として受け取ります。既定 ON です。ワールド側のライトに影の設定があるときのみ発現し、影のないワールドでは従来と同じ表示です。影の縞や粗さが目立つ場合は OFF にするか、Shadow Blur を上げて馴染ませてください(Lighting & Shadow の項を参照)。
  • v34_GUIr0 Outline に Alpha Sync(本体の透明度に追従) を追加しました(既定 ON)。半透明プリセット(Transparent / Fade / Additive)で本体が透けるとき、輪郭線(と本体越しに透けて見える輪郭色)が本体の透明度(Color の A × メインテクスチャの A)に追従して一緒に薄くなります。従来の「透明度に関係なく常時表示」に戻したい場合は OFF にしてください。不透明(Opaque / Cutout)プリセットの見た目は変わりません。あわせて、Base Color (HDR) の A(アルファ)が輪郭線自体の不透明度として効くようになりました(従来は無視されていました。A=1 なら従来どおり。⚠️ 保存済みマテリアルで Base Color の A を 1 未満にしていた場合、v34 から線が薄くなります=A を 1 に戻してください)。さらに、Sweep の筋が輪郭線を飽和(白飛び)させる問題を修正しました:筋の明るさの上限が Sweep OFF のソリッド線と同じになり、どの設定でも Sweep で輪郭線が飽和しません(従来は筋の部分だけ最大2倍の明るさになっていました)。⚠️ このため Base Glow 1(旧既定)では管と筋が同じ明るさになり筋が見えません=Sweep を使っている保存済みマテリアルは Base Glow を下げてください(例: 新既定の 0.3。GUI で Sweep を OFF→再 ON しても自動補正されます)。
  • v33_GUIr0 Distance Fade(カメラ距離フェード)が輪郭線(Outline)にも効くようになりました。従来は本体だけがフェードし、輪郭線が距離に関係なく残っていた不具合の修正です。輪郭線は本体と同じ距離設定・同じ濃さでフェードします。Distance Fade を使っていないマテリアルの見た目は従来と完全に同じです。
  • v32_GUIr1 Outline の操作性を調整しました(GUI のみ・見た目と保存値は不変)。(1) Self-Illuminate を Base Color の直後(Intensity の前) に移動しました(この値が Intensity / Line Width の効き方を左右するため、先に決められる並びにしました)。(2) Sweep の Speed の表示数値を 10 倍にしました(実値0.1=表示1)。効果・保存値は変わりません。
  • v32_GUIr0 Outline に Use Outline Mask(アウトラインマスク) を追加しました。グレースケールのマスク画像で輪郭線を部分的に消せます(白=線あり/黒=線なし)。目尻・口元など 1 枚のマテリアル内で一部だけ線を消したいときに使えます。既定 OFF・マスク未指定(白)で従来と完全に同じです。あわせて、Sweep を OFF にしたときに Base Glow(Sweep 専用設定)の値が輪郭線の明るさに残り続ける不具合を修正しました(Sweep OFF 時は Base Glow に依存せず均一なソリッド線になります)。
  • v31_GUIr5 各機能のチェックボックスを OFF→再 ON したときに、調整した値を保持するようにしました(GUI のみ)。誤ってチェックを外してしまっても、Strength や輪郭線の太さ・Sweep の設定などが初期値に戻らなくなります。値が 0(=その機能が見えない状態)のときだけ、見えるように既定値を補います(Matcap は元から既定で見えるため挙動は変わりません。Outline を新規マテリアルで初めて有効化したときはシェーダー既定の見た目になります)。
  • v31_GUIr4 マテリアル Inspector の表示言語を 日本語 / English で切り替えられるようにしました(GUI のみ)。ヘッダ直下の言語トグルで切り替えます。設定はエディタ単位で記憶され、すべてのマテリアルに反映されます(マテリアル自体には保存されません=シェーダー・保存値・見た目は変わりません)。
  • v31_GUIr3 Fade / Additive プリセットの既定 Render Queue を 3000 → 3001 に変更しました(GUI のみ)。半透明エフェクトがガラス等(Transparent=3000)より既定で手前に描画されます。Transparent プリセットは従来どおり 3000 です(保存済みマテリアルはプリセットを選び直すと反映されます)。
  • v31_GUIr2 Outline の Line Width スライダーの表示の数値を1桁繰り上げました(GUI のみ)。表示レンジ 0〜2 → 0〜20。実際の効果・保存値は変わりません。
  • v31_GUIr1 Outline の Line Width スライダーの表示レンジを 0〜5 → 0〜2・小数第3位に調整しました(GUI のみ)。実際の効果・保存値は変わりません。
  • v31_GUIr0 Outline の使い勝手を調整しました。(1) Lighting Influence を Self-Illuminate(自己発光) に名称変更し、値の向きを反転(0=ライティング追従/1=自己発光)。(2) Base Glow を Sweep の設定内へ移動。※既定の輪郭線がライティング追従に変わります。旧来の常時発光にしたい既存マテリアルは Self-Illuminate を 1 にしてください。
  • v30_GUIr0 Lighting Influence(暗所追従) の追従方式を「Directional Light の総量+環境光で均一の明るさに追従」へ変更しました(輪郭線に明暗の境界が出ないよう改善)。0(既定)での見た目・後方互換は変わりません。
  • v29_GUIr0 Lighting Influence(暗所追従) がメインの Directional Light+環境光に追従するよう改良しました(環境光だけを見て線が灰色に沈む問題の改善)。0(既定)での見た目・後方互換は変わりません。
  • v28_GUIr0 Lighting Influence(暗所追従) を本体(肌・髪など)と同じ明るさで馴染むよう改良しました(薄暗いワールドで線だけ明るく残る問題の改善)。0(既定)での見た目・後方互換は変わりません。
  • v27_GUIr0 Lighting Influence(暗所追従) の暗所での下限を Light Min Limit と同じ明るさにそろえました(真っ暗なワールドで線が本体より明るく残る不具合の修正)。0(既定)での後方互換は変わりません。
  • v26_GUIr0 Outline(輪郭線)に Lighting Influence(暗所追従) を追加しました。既定 0=従来どおりの自己発光(既存マテリアルは見た目不変)。
  • v25_GUIr0 リアルタイムライトが多数あるワールドでアバターの明るい部分が白飛びする問題を修正しました(追加ライトをまとめて1回の明るさ制御にかける方式に変更)。追加ライトの陰影は簡易(頂点単位・最大4灯)になりますが、トゥーン表現では影響はごくわずかです。
  • v24_GUIr0 強いリアルタイムライトのあるワールドでアバターの明るい部分が白飛びする問題を修正しました(明るさの上限 Light Max Limit が追加のリアルタイムライトにも効くように)。Light Limit 無効時は従来どおりです。
  • v23_GUIr0 Outline の Edge Fade を Sweep 専用に変更しました(ハードエッジのメッシュで輪郭線まで消える不具合の修正)。項目は Sweep の設定内へ移動(保存済みの値は維持されます)。
  • v22_GUIr0 Outline に Edge Fade を追加しました(半透明時に裏側の Sweep が放射状に透ける問題を軽減)。既定 2=ON、0 で従来動作。不透明では見た目は変わりません。
  • v19_GUIr0 Matcap に Contrast(コントラスト) を追加しました(既定 1.0=既存マテリアルは不変)。
  • v18_GUIr0 2枚目 Matcap を独立レイヤー化し、カラー Tint・Strength・Blend を 1枚目・2枚目で個別に設定できるようにしました(OFF 時の挙動は不変)。
  • v17_GUIr0 Matcap に 2枚目スロット(Mask Select) を追加しました(既定 OFF=既存マテリアルは不変)。
  • v16_GUIr0 Rim Light に 「裏面で無効化」 を追加しました(既定 OFF=既存マテリアルは不変)。
  • v15_GUIr0 Matcap に 「裏面で無効化」 を追加しました(既定 OFF=既存マテリアルは不変)。
  • v14_GUIr0 Particle の Vertex Color Blend Mode から Additive を削除しました(None / Multiply の2択)。保存済みマテリアルで Additive を選んでいた場合は Multiply 相当の表示にフォールバックします。あわせて内部のライト下限クランプ処理を整理しました(挙動・見た目は不変)。
  • v13_GUIr0 使い勝手の調整。(1) Particle の Vertex Color Blend Mode の初期値を None に変更。(2) Outline 有効化時の初期設定を Sweep OFF / Intensity 1 / Line Width 0.1 に調整。いずれも保存済みマテリアルの見た目は変わりません。
  • v12_GUIr0 (1) Rim Light に Blend Mode(Add / Multiply) を追加。(2) Texture Layer に 透明マスクモード を追加。あわせて Outline の Line Width スライダー表示レンジを 0〜5 に変更しました(実際の値・効果は不変)。
  • v10_GUIr0 Sweep の減衰を片側から両側対称に変更。Count を整数入力(IntRange)に変更し、Pivot Offset(周回中心) を追加。アバター本体への適用ガイドを README に追加しました。
  • v9_GUIr0 機能を Outline(輪郭線) と Sweep(周回発光) の二層構造に再編。Base Glow の既定値を 1 に変更しました。
  • v8_GUIr0 Outline の輪郭描画を反転外殻(Inverted Hull)パス方式に変更。Line Width・Extrude Mode・Base Glow を追加し、Rim Power を廃止しました。
  • v7_GUIr0 Outline Sweep の周回基準をカメラビューポイント基点(画面上の角度)に変更し、Axis プロパティを廃止しました。
  • v6_GUIr0 Outline Sweep(アウトライン周回発光) を追加しました。
  • v5_GUIr0 Dissolve のノイズが、回転して配置したオブジェクトの一部の面で一方向に伸びた縞模様になる不具合を修正しました(v0 から潜在していた問題です)。無回転で配置していたオブジェクトの見た目は変わりません。
  • v4_GUIr0 内部コードの整理(リファクタリング)。機能・見た目・パフォーマンスに変更はありません。マテリアルの再設定は不要です。
  • v3_GUIr1 Unlit モード ON のとき、影の詳細プロパティ(Shadow Color〜Shadow Blur)を自動的に非表示にするよう変更(Unlit では影が計算されないため。GUI のみの更新)。
  • v3_GUIr0 Light Limit の常時 ON をシェーダー既定値(_UseLightLimit=1)として組み込み。Inspector を開いていないマテリアルでもクランプが有効になりました。
  • v2_GUIr2 Light Limit 常時 ON の焼き込み処理を Inspector 表示時に確実化(セクション折りたたみ時にクランプが効かず白飛びする不具合を修正。GUI のみの更新)。
  • v2_GUIr1 Light Limit を常時 ON 化(有効/無効チェックボックスを廃止)。Unlit モード時は設定 UI を自動的に非表示に変更(GUI のみの更新)。
  • v2_GUIr0 Light Limit(Directional Light 影響度クランプ/白飛び・黒つぶれ防止)を追加。
  • v1_GUIr0 初版リリース。

ファイル構成

Assets/ └── ALTIMA/ ├── ARLitToon/ ← シェーダー本体(独立サブフォルダ) │ ├── Shaders/ │ │ └── ARLitToon.shader ← シェーダー本体 │ ├── Editor/ │ │ ├── ARLitToonGUI.cs ← マテリアル Inspector GUI │ │ └── ARLitToonBaker.cs ← テクスチャ焼きこみツール(無くてもシェーダーは動作します) │ └── README.md ← 本ガイド └── (アバターアイテム各種) ← アイテムは ALTIMA 直下に併存

シェーダーは ALTIMA/ARLitToon/ という専用サブフォルダで独立させています。これにより、同じ ARLitToon シェーダーを使う別のアバターアイテムを追加購入した際の二重インポートや、アイテムフォルダ削除によるシェーダーの巻き込み削除を防げます。

動作環境

Unity2019.4 LTS 以上(2022.3 LTS 推奨)
レンダリングパイプラインBuilt-in(Legacy)
VRChat SDKSDK3(Avatars / Worlds)
対応プラットフォームPC 専用

VRChat の Android(Quest)版では、アバターに使用できるシェーダーは VRChat SDK 付属の VRChat Mobile シェーダーのみに制限されています。本シェーダーを Quest アバターに適用した場合、VRChat クライアントがカスタムシェーダーを自動的に VRChat Mobile シェーダーへ置き換えます。本シェーダーは PC プラットフォーム向けのアバター・パーティクルエフェクト専用です。

インポート手順

  • 配布パッケージ(.unitypackage)をプロジェクトにインポートすると Assets/ALTIMA/ARLitToon/ に展開されます。
  • Unity が自動コンパイルを行います。マテリアルの Shader ドロップダウンから ALTIMA > ARLitToon を選択して適用してください。

ARLitToonGUI.cs は必ず Editor フォルダ内に配置してください。フォルダ外に置いた場合でも #if UNITY_EDITOR ガードにより動作しますが、Editor 内への配置を推奨します。

セクションの並びは Unity の Inspector(マテリアル設定画面)の表示順と同じです。Inspector と本ガイドを見比べながら設定できます。

Inspector ヘッダ(✦ ARLit Toon ✦)の直下に、左寄せの言語タブ(日本語 / English)があります。ラベルとヘルプ文の表示言語を切り替えられます。設定はエディタ単位で記憶され、すべてのマテリアルに反映されます(マテリアル自体には保存されません)。

言語タブの右隣に 「ヘルプ非表示」/「ヘルプ表示」 のタブがあります(初期状態はヘルプ表示 ON=タブには「ヘルプ非表示」と出ます)。タブの文言は押したときに起きることを表します。押すと各項目の解説文が一括で隠れ、プロパティだけのコンパクトな表示になります。操作に慣れたあとや、画面が狭いときにどうぞ。設定値や見た目には一切影響しません(表示だけの設定で、エディタ単位で記憶されます)。なおヘルプの文字サイズはプロパティ名と同じ大きさで、エディタの文字サイズ設定に自動で追随します。

どちらも「設定したのに効かない」の原因を伝えるもので、隠すと原因が追えなくなるためです。

  • 警告メッセージ(黄色のアイコン)
  • 項目が丸ごと無効になっている理由の説明(例:Unlit モードが ON のとき、PBR(BRDF)・Lighting & Shadow・Toon Shadow・Back Light に出る案内)

ヘルプ切り替えタブの右隣の 「Web」 ボタンを押すと、本ガイドの Web 版がブラウザで開きます。表示言語が English のときは英語版のページが開きます。

SEC. 02 — CORE

Transparency / Rendering

// 透明度と描画設定

用途に合わせて Preset から選択するだけで、内部のブレンドや Cutoff 設定が自動で最適化されます。基本的には Preset を選ぶだけで、下記の詳細設定を手動で触る必要はありません。

# Blend Preset(ブレンドプリセット)

  • Opaque: 不透明(デフォルト)。通常の体や服、武器など。最も処理が軽いです。
  • Cutout: 葉っぱや金網など。テクスチャのアルファでバッサリと切り抜きます。
  • Fade: 魔法のエフェクトなど、全体が徐々に透けていく表現。アルファ値で段階的にフェード(フェードイン/アウト)させたい場合はこのモードを使います。※複数光源下でも白飛びしない事前乗算(Premult)方式に最適化されています。
  • Additive: 炎や光る魔法陣など、背景に色を加算して光らせる表現。アルファ値によるフェードも可能です。
  • Transparent: ガラスやスライムなど。透明にしつつ光の反射(ハイライト)は残したい時に。常時半透明の「素材の質感」表現向けで、アルファで徐々に消すフェード用途ではありません。

(※半透明系のプリセットでは、完全な透明部分に発生する描画エラーを防ぐための安全処理が自動適用されます)

他のシェーダーでは Transparent 系モードでアルファによる段階的フェードを行えることが多いですが、本シェーダーの Transparent はガラス等の常時半透明の質感表現に最適化されており、マテリアルの透明度(_Color.a やテクスチャのアルファ)を下げても、ハイライト(鏡面反射)・環境反射(映り込み)・発光は透けずに残ります(質感を保つため)。アニメーションで _Color.a を 0 にしても照り返し・映り込み・発光だけが残ります。
そのため、マテリアルのアルファや _Color のアルファでオブジェクト全体をフェードイン/アウトしたい場合は、Fade(不透明な発光・反射も含めて透ける) または Additive を選択してください。
【例外:パーティクルの寿命フェード】 Transparent でも、パーティクルの頂点カラーのアルファ(Color over Lifetime) で下げた場合は、ハイライト・環境反射・発光(Dissolve エッジ・Rim・Emission 含む)もすべて完全に消えます。これは「マテリアル透明度=ガラスの透け具合(映り込みは残る)」「パーティクル寿命=存在そのもの(消えれば全部消える)」を区別しているためです。Transparent のガラスマテリアルを Dissolve で消すエフェクトもこの仕組みで、映り込みごと自然に消滅します。Vertex Color Blend Mode を Multiply にして使ってください。

# 詳細設定(通常は変更不要)

プロパティ説明
ZWrite(深度書き込み)オブジェクトの前後関係(奥行き)情報を書き込むかどうかの設定です。Preset が自動で最適な値を設定するため、通常は変更不要です。On は不透明向けで前後関係が正しく描画され、Off は半透明向けで重なり順の描画を可能にします。
Cull(カリング)描画する面を指定します。Back(標準)は表面のみ、Off は裏表両面、Front は裏面のみを描画します。布や葉、リボンなど裏側も見せたい薄い形状では Off にします。
Alpha Cutoffテクスチャのアルファ値が、この数値より低い部分を切り抜く(消す)しきい値です。主に Cutout モードで使用します。半透明系プリセットでは透明部分のエラー防止のため自動で 0.001 に設定されます。
Render Queue(描画順)オブジェクトを描画する順番です。数値が大きいほど後(手前)に描画されます。Preset が自動設定します。

💡 【描画順のバグ対策(Zソート)】Fade / Additive は既定で Render Queue = 3001(ガラス等の Transparent = 3000 より手前)に設定されます。これは、同じ Render Queue(3000 同士)だと Unity が前後をオブジェクト単位の距離で並べ替えるため、半透明エフェクトがガラスの裏に回り込んで見える現象を避けるためです。それでもパーティクルやエフェクトが奥のガラスなどに隠れて見えなくなる場合は、インスペクターの Render Queue の数値を 3050 などへさらに上げることで手前に描画できます。逆に手前に出すぎる場合は数値を下げてください。

# Distance Fade(カメラ距離フェード)

カメラからの距離に応じてオブジェクトのアルファをフェードさせる機能です。一人称視点で自分のオーラやエフェクトが視界を塞ぐのを防いだり、近づくと消える演出に使えます。輪郭線(Outline)も本体と同じ距離設定でいっしょにフェードします。

プロパティ説明
Use Distance Fade機能の有効/無効。
Fade Nearこの距離(カメラからの距離)以下で完全に透明になります。
Fade Farこの距離以上で完全に不透明(通常表示)になります。

アルファを操作する機能のため、半透明プリセット(Fade / Additive / Transparent)での使用を前提としています。Cutout / Opaque でも Dither Fade を ON にすれば使用できます(アルファが網点の密度として反映されます)。Fade Near を Fade Far より大きい値にすると挙動が反転し、「遠いほど透明」になります。_DistanceFadeNear / _DistanceFadeFar はアニメーションも可能です。

# Distance Darken(カメラ距離で減光)

カメラからの距離に応じて、本体の色を減光色(既定は黒)へ近づける機能です。上の Distance Fade がアルファ(透明度)を操作するのに対し、こちらは色そのものを変えるため、不透明(Opaque)のマテリアルでも作用します。「近づくと暗くなる」「なでなで時に手元を暗くする」「覗き込みを暗くして隠す」といった演出に使えます。Distance Fade とは独立したトグルで、併用もできます。

プロパティ説明
Use Distance Darken機能の有効/無効。
Darken Color近づいたときに寄せる色(既定は黒=暗くする)。
Darken Nearこの距離(カメラからの距離)以下で最も強く減光します。
Darken Farこの距離以上で元の色(通常表示)に戻ります。
Darken Strength減光の最大の強さ(0=無効/1=Near で完全に Darken Color)。

色を操作する機能のため、不透明・半透明どちらのプリセットでも使用できます。Darken Near を Darken Far より大きい値にすると挙動が反転し、「遠いほど暗い」になります。加算系の発光(Emission / Rim / AudioLink 等)は減光の対象外です(本体色のみが暗くなります)。_DistanceDarkenColor / _DistanceDarkenStrength などはアニメーションも可能です。

SEC. 03 — CORE

Base(基本の見た目)

// キャラクターの肌や服、エフェクトの基本的な色と模様

キャラクターの肌や服、エフェクトの基本的な色と模様を決定します。

プロパティ説明
Albedo テクスチャモデルの表面に貼り付ける基本の画像です。A(アルファ)チャンネルを持たせることで、切り抜きや半透明の表現も可能です。
Color全体の色合いを調整します。テクスチャの色を上書きして別の色にしたり、暗いワールドに合わせて少し暗く落としたい時に使います。(アニメーションで色を変えることも可能です)
Color Intensity色の明るさ(強度)を 0 から調整します。全体をパッと明るく見せたい時に数値を上げます。
Hue Shift(色相)テクスチャを編集せずに色相を回転させて色違いを作れます。0 で無変化。アニメーションさせると虹色に変化させることもできます。
Saturation(彩度)/ Brightness(明度)彩度と明度を補正します。どちらも 1 で無変化(2 で2倍)。色をくすませたり鮮やかにしたい時に。
Albedo/Normal Scroll(スクロール)X・Y にスクロール速度を入れると、Albedo と Normal が同じ速度で流れます(0 で停止)。流れる炎・水・スキャンライン等のエフェクトに使います。入力欄は X/Y のみです(Z/W は未使用)。

Hue/Saturation/Brightness はデフォルト値(Hue=0 / Sat=1 / Bright=1)では一切処理を行わない(恒等変換)ため、既存マテリアルの見た目とパフォーマンスに影響しません。

SEC. 04 — CORE

Texture Layer(重ね合わせ)

// 2枚目の重ね合わせ・透明マスク

ベーステクスチャの上にもう1枚の画像を重ねる「色オーバーレイ」と、画像の明るさでベースを透明にくり抜く「透明マスク」の2つを備えた機能です。両者は独立したトグルで、片方だけ・両方の併用ができます(同じ Layer テクスチャを共有します)。

① 色オーバーレイ(Use Texture Layer) — ロゴ・刺繍・ワンポイント模様・タトゥー・メイク・エフェクトの二層パターンなどに使えます。

プロパティ説明
Use Texture Layer色オーバーレイの有効/無効。
Layer テクスチャ (A=合成マスク)重ねる画像を設定します。画像のアルファ(透明度)チャンネルが合成強度のマスクになります(白=合成 / 黒=スキップ)。別途マスク画像を用意する必要はありません。Tiling/Offset でベースとは独立に配置・繰り返しを調整できます。
Color Tint (HDR)レイヤー画像にかける色味。HDR 対応のため、Add/Screen と組み合わせて発光的な重ねも可能です。
Blend Mode合成方法。Normal(通常の上重ね)/ Multiply(乗算・陰影や汚し)/ Add(加算・発光的な重ね)/ Screen(スクリーン・明るく重ねる)。
Opacity合成の強さ(0=完全に透明 〜 1=最大)。アニメーション可能で、模様をフェードイン/アウトさせられます。
Scroll(スクロール)X・Y に速度を入れるとレイヤー画像が流れます(0 で停止)。入力欄は X/Y のみです(Z/W は未使用)。

② 透明マスク(Use Texture Layer as Alpha Mask) — グレースケールのマスク画像でベース形状を切り抜く機能です。

プロパティ説明
Use Texture Layer as Alpha Mask透明マスクの有効/無効。
Layer / マスク テクスチャマスク画像を設定します(色オーバーレイと共有)。画像の明るさが透明度になります(黒=透明 / 白=不透明 / グラデーション=半透明)。色オーバーレイ OFF でマスクだけ使う場合は、このトグルを開くとテクスチャ欄が表示されます。
Scroll(スクロール)マスクを流して、くり抜く位置を動かせます(0 で停止)。入力欄は X/Y のみです(Z/W は未使用)。

グレースケール(黒〜白)のマスク画像を用意し、透けさせたい部分を黒、残したい部分を白で描きます。中間色やグラデーションは半透明になります。色オーバーレイと併用する場合は同じ画像の 明るさ=透明マスク/アルファ=色の合成マスク と役割が分かれます。

透明マスクが見えるのは半透明系の Blend Preset(Cutout / Fade / Transparent) のときです。Opaque(不透明)では不透明度が無視されるため透けません。くっきり切り抜くなら Cutout、グラデーションで滑らかに透かすなら Fade が向いています。Transparent では素材の透明感を保つ設計上、反射・発光などのハイライトはマスクで消えずに残ります(ガラス表現用)。

色オーバーレイの重ね合わせはオブジェクトの色(見た目)にのみ作用し、不透明度は変更しません。色相シフト(Hue Shift)はベース色のみに作用し、このレイヤー画像には影響しません(ロゴ等の色を保つため)。無効時はほぼ負荷ゼロです。

# Dither Fade(ディザ擬似半透明)

Cutout / Opaque の描画のまま、細かい網点(ディザ)パターンでピクセルを間引き、アルファ値どおりの擬似半透明を作る機能です。上の透明マスクと同じ「アルファで抜く」系の機能のため、本セクションに配置しています。

プロパティ説明
Dither Fade機能の有効/無効(既定 OFF)。ON にするとテクスチャやレイヤーマスクのアルファ値がそのまま「残すピクセルの割合」になります。

Fade などの半透明プリセットは Unity の仕様で落ち影(Receive Shadow)を受けられません。前髪など「半透明にしたいが影も受けたい」部位は、Cutout プリセット+Dither Fade ON にすることで、影を受けながらアルファどおりに透かすことができます。仕様上の注意: 網点はピクセル単位の間引きのため、至近距離では点々のパターンが見える場合があります(アンチエイリアス(MSAA)が有効な環境では目立ちにくくなります)。Scene ビューと Game ビュー、また VRChat 実機では、解像度・アンチエイリアス・カメラ角度が異なるため網点の見え方(透け具合)が変わります。最終的な見た目は VRChat 実機でご確認ください。 Alpha Cutoff は併用でき、Cutoff 未満のアルファは従来どおり完全に切り抜かれます。Distance Fade やテクスチャレイヤーの透明マスクによるアルファも網点として反映されます。半透明プリセット(Fade / Transparent / Additive)ではこの機能は無効です(通常のアルファブレンドが使われます)。輪郭線(Outline)との併用: Outline の Alpha Sync が ON(既定)のとき、輪郭線も本体と同じ網点で追従します(網点の穴から輪郭色が面状に透けて飽和して見えることを防ぎます)。Alpha Sync を OFF にすると輪郭線は網点に追従せず常時表示になります。

SEC. 05 — CORE

Bake to Base(テクスチャ焼きこみ)

// レイヤーとカラー調整をベーステクスチャへ焼きこむ

複数のレイヤー画像(デカール・ロゴ・模様・メイクなど)とカラー調整を、ベーステクスチャへ焼きこんで1枚の画像にまとめる Unity エディタ用のツールです。上の Texture Layer が「実行時に1枚だけ重ねる」機能なのに対し、こちらはあらかじめ1枚に焼いてしまうため、重ねる枚数に制限がなく、実行時の負荷もテクスチャメモリも増えません(焼いた後はテクスチャ1枚のままです)。

💡 この機能は追加ファイル Editor/ARLitToonBaker.cs で提供されます。配布パッケージには常に含まれています。このファイルが無い場合、マテリアル Inspector に Bake to Base の項目が表示されないだけで、シェーダーの他の機能はすべて通常どおり動作します。

項目説明
焼きこみレシピを作成このマテリアル用の設定ファイル(レシピ)を作ります。マテリアルと同じフォルダに <マテリアル名>_BakeRecipe.asset として保存され、レイヤー構成が記録されます。
焼き元テクスチャ (Base)焼きこみの土台になる画像です。レシピを作った時点の Albedo テクスチャが自動で入ります。焼いた後もこの項目は変わりません(何度でもここから焼き直せます)。焼いたテクスチャはこの画像と同じフォルダに保存されます(直下の 出力フォルダ に表示されます)。
出力解像度既定は「焼き元と同じ」です。変更する場合は焼き元の縦横比を保ったまま拡大縮小されます。
基本色の調整(プレビューで表示)焼き元テクスチャにだけ掛かる Hue / Saturation / Brightness です。この調整はマテリアルには直接反映されず、プレビューまたは焼きこみで初めて見えます。レイヤーには作用しません。1つの値としてだけ持つので、何度焼き直しても調整が積み重なることはありません。
マテリアルの カラー調整 (HSV) も取り込むマテリアル側の Hue / Saturation / Brightness を焼きこみに含め、焼いた後は 基本色の調整 へまとめて、マテリアル側は初期値(0 / 1 / 1)へ戻します(既定 ON)。チェックボックスのみで、値の編集は上の Base セクションで行います(プレビュー中は取り込む値が数値で表示されます)。Color と Color Intensity は焼きこみません(色変えギミック等でアニメーションさせるために残します)。
Texture Layer も焼きこむ上の Texture Layer に設定したレイヤーを、最下層(いちばん奥)に重ねて焼きこみます(既定 ON)。テクスチャ・Color Tint・Blend Mode・Opacity・Tiling / Offset・透明マスクの設定がそのまま反映されます。焼きこみ後は Texture Layer が自動的に OFF になり、その設定は下のレイヤー一覧の先頭へ取り込まれます(重ね順は取り込み後に ▲▼ で入れ替えられます)(同じ絵が二重に乗るのを防ぎ、かつ焼き直しても同じ結果になるようにするためです)。スロットが空くので、次のデカールに使えます。
レイヤー焼きこむ画像が 上から順に重なります(一覧の上にあるものほど奥、下にあるものほど手前)。▲▼ で順番の入れ替え、✕ で削除、左のチェックで一時的な無効化ができ、値も後から編集できます。焼きこみは毎回この一覧どおりに焼き元テクスチャから作り直すため、後から直して焼き直せます。焼きこんだ Texture Layer は (Texture Layer から取り込み) と表示されます。
レイヤーの調整(このレイヤーのみ)そのレイヤーの画像にだけ掛かる Hue / Saturation / Brightness です。基本色にも他のレイヤーにも一切作用しません。デカールの色だけを変えたいときはここを使ってください。
レイヤーを追加Texture Layer とは別に、画像を何枚でもここへ足して一度に焼きこめます(実行時には存在しないレイヤーです)。1枚ごとに テクスチャ / Color Tint (HDR) / Blend Mode / Opacity / Tiling / Offset と上記の調整を指定できます。Blend Mode と Opacity の意味は Texture Layer と同じです。
輝度でベースをくり抜くそのレイヤー画像の明るさを透明マスクとして使い、ベースの不透明度をくり抜きます(黒=透明 / 白=不透明)。Texture Layer の「透明マスク」と同じ計算です。

使い方の流れ

  1. 上の Texture Layer に重ねたい画像を設定し、位置(Tiling / Offset)や合成方法(Blend Mode)を実際の見た目で決めます。
  2. Bake to Base を開き、焼きこみレシピを作成 を押します。さらに何枚も一度に重ねたい場合は レイヤーを追加 で登録します。
  3. プレビュー(仮ベイク) を押すと、実際のモデル上で焼き上がりを確認できます。プレビュー中は焼きこみの設定(基本色の調整、各レイヤーの調整・Opacity / Tiling / Offset など)を動かすと、その場でリアルタイムにモデルへ反映されます。上の Texture Layer の設定を変えた場合も同じです。Ctrl+Z(元に戻す)にも追従します。元の状態に戻すときは プレビュー終了 を押してください。
  4. 問題なければ 焼きこみ実行 を押します。結果が 新しい PNG(<マテリアル名>_Baked.png)として保存され、Albedo テクスチャがそれに差し替わります。焼きこみのたびに新しいファイルが作られるので(_Baked 1.png → _Baked 2.png …)、以前に焼いたテクスチャが上書きされることはありません。保存先は「焼き元テクスチャと同じフォルダ」です(Bake to Base の 出力フォルダ に焼く前から表示されます)。完了するとテクスチャ名と保存先パスを表示するウィンドウが開きます(文字を選択してコピーでき、Project で表示 で該当アセットに移動できます)。焼きこんだ Texture Layer は自動的に OFF になり、取り込んだカラー調整は 基本色の調整 へまとめられてマテリアル側は初期値に戻ります(二重に掛からないようにするため)。
  5. さらに重ねたい場合は、空いた Texture Layer に次の画像を設定して 3〜4 を繰り返します。
  6. やり直したいときは 焼き元テクスチャへ戻す で、一度も焼いていない状態(焼き元テクスチャ・HSV・Texture Layer の ON/OFF)に戻ります。このとき、焼きこみが自動で足したステップ(カラー調整と取り込まれた Texture Layer)もまとめて取り消されます(自分で追加したレイヤーは残ります)。

焼きこみは毎回「焼き元テクスチャ + 焼きこみステップ」から作り直しますが、焼いた内容はステップとして残るので、2回目以降も前に焼いた分は消えません。毎回元から作り直すため、何度焼き重ねても画質が劣化しません。

基本色の調整は焼き元テクスチャだけに、レイヤーの調整はそのレイヤーだけに掛かり、互いに影響しません。デカールの色だけを変えたいときはそのレイヤーの調整を、下地だけを変えたいときは基本色の調整を動かしてください。どちらも積み重なりません(何度焼き直しても二重に掛かることはありません)。なお マテリアルの カラー調整 (HSV) も取り込む で取り込まれる調整は 基本色にだけ掛かります。すでにレイヤーがある状態でマテリアル側のスライダーを動かすと、画面では全体の色が変わって見えるのに焼き結果はベースだけが変わる、という差が出るため、その場合は Inspector に注意が表示されます(レイヤーの色も変えたいときは各レイヤーの調整を使ってください)。

焼きこんだ結果が反映されているか確かめるには、Bake to Base の下部に出る 直近の結果 を見てください(例:焼きこみ: 基本色の調整 あり / レイヤー 2 枚(うち調整あり 1 枚)(うち Texture Layer 1 枚))。ここが レイヤー 0 枚 なら、その回は画像が焼かれていません(Texture Layer が OFF/テクスチャ未設定などが原因です)。

焼きこみ結果は毎回新しいファイルとして保存されます(不要になった古い焼き結果は Project ウィンドウから削除してください)。また、カラー調整(HSV)を焼きこんだときは、同じ調整が二重に掛からないよう Hue / Saturation / Brightness が自動で初期値(0 / 1 / 1)に戻ります。これらの操作は Unity の Undo(Ctrl+Z)で取り消せます。

ただし、プレビューは無圧縮・保存後は圧縮設定が効くため、色にごくわずかな差が出ることがあります。最終確認は保存後に行ってください。

プレビューを開始すると、マテリアル側の Hue / Saturation / Brightness は(焼きこみに含まれるため)いったん初期値に戻ります。色を詰めたいときはこの2つのスライダーを動かしてください(リアルタイムに反映され、その値のまま焼きこまれます)。

焼きこみは UV 空間の操作です。時間で動く要素は焼けません(Texture Layer の Scroll など)。Scroll が 0 以外のときは注意が表示され、停止状態(開始位置)の絵が焼かれます。位置は Scroll を 0 にして Tiling / Offset で合わせてください。また、焼いた後はレイヤーを個別にアニメーションできません(スクロール・フェード・色変え)。動かしたい画像が1枚あるなら Texture Layer(実行時合成)、動かさない意匠は焼きこみ、という使い分けになります。なお、Color に色を付けた状態でカラー調整(HSV)を焼きこむと、焼く前後で色がわずかに変わることがあります(実行時は Color を掛けてから HSV、焼きこみは画像に HSV を掛けてから Color の順になるためです)。この条件に当てはまるときは Inspector に注意が表示されます。プレビューで確認するか、Color を白にしてから焼いてください。

# Fake Shadow の焼きこみ(影メッシュ → 受け手のマスク)

Fake Shadow Mesh(メッシュから落とす影)の落ち方を、影を受ける側のマテリアルの UV へ焼きこんで、Fake Shadow Texture(描いた影)として自動設定するツールです。メニュー Tools → ALTIMA → ARLitToon Fake Shadow Bake、または Bake to Base 内の 開く ボタンから使用します。

焼きこむと影は静止画になるため頭や光の動きには追従しなくなりますが、そのかわり深度テクスチャが生成されないワールドでも影が出せ、描画も1パス減ります。

項目説明
アバター (ルート)焼きこむアバターのルートを指定します。この中から Fake Shadow Mesh が ON のマテリアルを「影を落とす側」として自動的に探します。
影を落とすメッシュ見つかった落とす側のメッシュ一覧です。チェックを外したメッシュは影を落としません。後ろ髪・尻尾など受け手に影を落とさないメッシュを外すと、焼きこみ時間が大きく短くなります(三角形の数がそのまま処理時間になるため)。マテリアル側で Fake Shadow Mesh を切り替えたら 再検索 を押してください。
影を受けるマテリアル影を受ける側の候補一覧です(アバター内の ARLitToon マテリアルのうち、落とす側でないもの)。最初は「頭まわりのマテリアル」だけにチェックが入ります——焼きこみ時間は選んだ枚数にほぼ比例するため、靴やエフェクトまで最初から選ばれていると無駄に待つことになるからです。必要な部位は手でチェックを足してください(すべて選択 で全部に戻せます。頭だけ選択 でいつでも初期状態へ戻せます)。チェックを外したマテリアルには焼きこみません——影が乗ってほしくない材質を外してください。外したマテリアルは設定を一切変更しません(以前に焼いた Fake Shadow Texture もそのまま残ります)。各行の [ ] はそのマテリアルを使っている部位の名前です(同じ材質を複数の部位が使っている場合は並記されます)。
シーンのライトから向きを取るON でシーン内の Directional Light の向きを使います(既定 ON)。OFF にすると、落とす側マテリアルの「光が弱いときの向き」が使われます。
Fake Shadow Mesh の「光が弱い時の向き」設定を使用する上を OFF にしたときに使われる向きの確認用の表示です。ここでは変更できません——値はマテリアルの Fake Shadow Mesh 節にある「光が弱いときの向き」で設定してください(設定場所を 1 か所にまとめ、値がずれないようにするためです)。
マスク解像度出力する影マスク画像の解像度です(既定 2048)。
落とす側マテリアルの設定を引き継ぐON で、押し出し距離・影を受ける距離・影の色・濃さを落とす側の Fake Shadow Mesh の設定に合わせます(既定 ON)。元の影と同じ見た目に焼くための項目なので、通常は ON のままにしてください。OFF にすると下の手動値を使います。
影を受ける距離 (m)影が届く奥行きの上限です(0.001〜0.1 m)。大きくしすぎると離れた部位まで暗くなり、焼きこみにも時間がかかります。上の引き継ぎが ON のときは使われません(落とす側の値が使われます。落とす側の設定値がこの範囲を超えていても、そのままの値が使われます)。
影にする被覆率少し角度を変えた複数の判定のうち、何割が影になったら影とするかです(既定 0.5)。上げるほど影が細く・出にくくなります。目の窪みなど凹んだ場所に影が出てしまうときは上げてください。
ぼかし焼き上がりにガウスぼかしをかけて、影の重なりに出る境界線を馴染ませます(0〜10・0 でぼかしなし)。ぼけ具合はマスク解像度に比例するので、解像度を変えても見た目の印象は揃います。
受け手マテリアルへ設定まで行うON で、生成したマスクを受け手マテリアルに割り当て、Fake Shadow Texture を自動で ON にします(既定 ON)。
焼きこみ後に落とす側の Fake Shadow Mesh を OFF にする既定 ON。ON にすると、焼きこみ後に落とす側の Fake Shadow Mesh を OFF にし、受け手の Fake Shadow Auto Fallback も OFF にします(=焼いた影を常に表示する/テクスチャで置き換える使い方)。Fake Shadow Mesh を残したまま、焼いた影を「Mesh が出せないワールド用の保険」として持ちたい場合は OFF にしてください(OFF なら Mesh はそのまま使われ、焼いた影は Mesh が出せないワールドでだけ表示されます)。
出力フォルダ生成したマスク画像の保存先です。
書き出し形式マスク画像のファイル形式です(PNG / TGA・既定 TGA)。焼き上がりの中身とシェーダーでの見え方はどちらも同じで、あとから画像編集ソフトで開き直して直せるかだけが違います。TGA なら焼いた影を手で修正できます(下記)。ファイルサイズを抑えたい・修正の予定がない場合は PNG を選んでください。
  • テクスチャで置き換える(既定・チェック ON) — 焼いたあと落とす側の Fake Shadow Mesh を OFF にし、受け手の Fake Shadow Auto Fallback も OFF にします。どのワールドでも焼いた影が常に出ます。頭や光の向きへの追従はなくなりますが、負荷が軽く、ワールドを選びません。
  • 保険として持つ(チェック OFF) — Fake Shadow Mesh を残したまま焼きます。受け手の Fake Shadow Auto Fallback は ON になり、Fake Shadow Mesh が出せないワールドでだけ焼いた影が出ます。Fake Shadow Mesh は深度テクスチャを使うため、ワールドの設定によっては影が出せません——その穴を埋める使い方です。

この設定が ON の間、描いた影(Fake Shadow Texture)は深度テクスチャが生成されないワールドでのみ表示されます(落とす側の Fake Shadow Mesh と二重に掛かるのを防ぐためです)。「焼きこみ後に落とす側の Mesh を OFF」を ON にして焼く(既定)と、この設定も自動で OFF になり、焼いた影が常に表示されます。

すでに共有マスクを使っている場合(Matcap 2枚目など)、R / G / A の内容はそのまま引き継がれますので、他の機能の設定が消えることはありません。ただし既存のマスク画像が読み取れない設定になっていた場合は R / G / A が黒で作り直され、その旨がレポートに出ます。B を別の機能も読んでいる場合(変換ツールでリムシェードのマスクが B に入ったマテリアルなど)は、そのマスクが焼いた影で置き換わります。このときはレポートに警告が出ます(元のマスク画像はプロジェクトに残っています)。その機能のマスクを空いているチャンネルへ描き直し、チャンネルの選択を変えてください。

共有マスクは チャンネルごとに別々の情報を詰めたデータで、色画像ではありません。PNG はアルファを透明度として扱う形式のため、新しく作ったマスク(A = 予約枠が 0 のまま)を画像編集ソフトで開くと画像全体が透明として表示され、B チャンネルに焼いた影を目で追えません。TGA(32bit・非圧縮)ならアルファが独立したチャンネルとして残るので、RGB がそのまま見えて影の修正やチャンネルの差し替えができます。そのかわりファイルサイズは大きくなります。Unity へ読み込んだ結果はどちらも同じ(インポート設定も同一)です。既定は TGA で、修正の予定がなくファイルサイズを抑えたい場合だけ PNG に切り替えてください。

その焼きこみで実際に作られたテクスチャの行です(マテリアル名 -> 保存先パス)。[!] で始まる警告の行は赤で表示されます(焼きこみは完了していても、そのままでは見た目が崩れるなど、手を入れる必要がある内容です)。レポート全体を書き出したいときは見出し右の 全文をコピー を押してください。

アバターの Animator(humanoid)の Head ボーンを中心にした球と、マテリアルごとの面の重なりで判定します(ボーンの名前や材質の名前では判定しません)。顔と体が 1 つのメッシュに同居していてもマテリアル単位で分けられます。humanoid の Animator が無いアバターでは判定できないため、従来どおり全部にチェックが入ります(一覧の上に、何枚が選ばれているか・なぜ絞れなかったかが表示されます)。

時間がかかりすぎるときは中断してください。中断した場合、画像は 1 枚も書き出されず、マテリアルにも変更は加わりません(焼きこみ前の状態がそのまま残ります)。時間を短くしたいときは、「影を落とすメッシュ」で不要なメッシュのチェックを外すのが最も効果的です。次に効くのが「落とす側マテリアルの設定を引き継ぐ」を ON にすることです(落とす側に合わせた適切な距離が使われます)。

「Fake Shadow Mesh が有効なマテリアルが無い」「マテリアルはあるがジオメトリを取得できない」「影が掛からなかった」をそれぞれ別のメッセージで区別して報告します。落とす側と受け手が光の向きに重なっているか、受け手のマテリアルが ARLitToon になっているかを確認してください。

SEC. 06 — LIGHTING

PBR & Specular

// 物理ベースの質感・環境反射・ガラス/金属の映り込み

※ Unlit モード(光を無視)を ON にすると、この節の他の項目はすべて効かなくなるため Inspector から隠れます(Unlit モードのチェックは残ります。設定値も保持され、OFF に戻せば元の値のまま再表示されます)。Lighting & Shadow・Toon Shadow・Back Light の項目も同様に隠れます。

どちらも「光の当たり方」ではなく見る向きだけで決まる擬似的な効果のためです。同じく Emission・Glitter・AudioLink・Dissolve のふち・Fake Shadow・Outline も Unlit で効きます。Unlit で効かないのは、実際の光源と環境光を必要とするもの(陰影・鏡面ハイライト・環境反射・逆光)だけです。

本シェーダーのライティングは物理ベース(PBR BRDF)です。金属・非金属の区別を Metallic で表し、光の総量が保たれるように計算されます。トゥーンの陰影(Lighting & Shadow の影色・境界・ぼかし)はその上にそのまま乗るため、セル塗りの質感は保たれます。

プロパティ説明
Unlit モード光源を完全に無視して常に100%の明るさで表示します。パーティクルや発光エフェクト向けです。
Metallicその面が金属かどうか。1 に近づくほど塗りの色(拡散光)が消えて、ハイライトと映り込みがベースカラーの色に染まります(金は金色に、銅は赤銅色に光ります)。金・銅・真鍮などの金属は 1、布・肌・プラスチックなどの非金属は 0 が基本で、中間の値は基本的に使いません。
Smoothness表面の滑らかさ。ハイライトの広がりと映り込みのぼやけ具合を同時に決めます(高い=鋭く小さいハイライト+くっきりした映り込み/低い=広くぼやけた反射)。
金属に影を出さない(純物理)OFF(デフォルト)では、金属の映り込みにもトゥーンの陰影がかかり、落ち影・トゥーン影が金属パーツにも出ます。ON にすると陰影がかからなくなり、鏡が影の中でも同じ景色を映すのと同じ、物理的に正しい挙動になります。そのぶん金属は影を示さなくなり、Smoothness を上げるほど陰影が見えなくなります。Metallic が 0 の面(ガラス・布・肌)には影響しません。
Normal Map + Scaleポリゴン数を増やさずに細かい凹凸(服のシワ、レンガの溝など)を表現したい時に使います。

金具や装飾のマテリアルで Metallic を 1、Smoothness を 0.7〜0.9 にします(Reflection Strength はデフォルトの 1 のままで構いません)。金属は周囲の映り込みから色を得るため、Reflection Strength が 0 のままだと暗くなります(Metallic が高いのに 0 のときは Inspector に警告が出ます)。トゥーンの陰影・輪郭線・Matcap・リムライトはそのまま併用でき、セル塗りの質感を保ったまま金具や装飾だけを金属らしくできます。金属の影も Lighting & Shadow で調整できます:映り込みにもトゥーンの陰影がかかるため、Shadow Color / Shadow Border / Shadow Blur が金属パーツにもそのまま効きます(Smoothness を高くすると光源のハイライトは小さな点に集中しますが、影は映り込み側が表現するため消えません)。

Metallic を上げた面は塗りの色(ベースカラーの拡散光)を失います。これは金属の物理的な性質どおりの挙動です。肌や布など金属でない部分の Metallic を上げると、色が抜けて暗く見えます。テカリ(ハイライト)だけを強くしたい場合は Metallic ではなく Specular Highlight を使ってください。

# Specular Reflection(環境反射・ガラス/金属の映り込み)

ワールドの景色(リフレクションプローブ/スカイボックス)を表面に映り込ませる機能です。ガラス・金属・濡れた質感などに使います。

プロパティ説明
Reflection Strength(反射影響度)映り込みをどれだけ効かせるか。デフォルトは 1(映り込みあり)です。0 にすると映り込みを一切計算しません(負荷ゼロ)が、0 では Metallic を上げても景色は映り込みません。金属は映り込みが色の主成分になるため、下げすぎないでください。負荷を切りたいパーティクル等では 0 にできます。
Fresnel Power輪郭反射の鋭さ。大きいほど視線が浅い「縁」だけが強く反射し、ガラスらしくなります。小さくすると面全体が均一に反射(鏡・金属向け)。
Fresnel Min正面を向いた面の反射量。ガラスは 0 付近、鏡・金属は上げます。
Specular Highlight物理計算で出たハイライトに対する追加のテカリ(0 で物理どおり)。金属でない面のテカリを強くしたいときは、Metallic ではなくこちらを使います。

反射の鮮鋭さは Smoothness で決まります(高い=鏡のようにくっきり / 低い=すりガラスのようにぼやける)。

Blend Preset を Transparent、Unlit は OFF(Lit) にし、Reflection Strength を上げ、Fresnel Power を 4〜6 程度にします。必要に応じて Specular Highlight でテカリを、Matcap で擬似的な光沢を追加します。Transparent はマテリアル透明度(_Color.a)では反射・ハイライト・Matcap を透かさない設計のため、薄く透けつつ映り込みがしっかり乗ります(Fade/Additive では反射もアルファに追従して透けます)。なお Transparent のガラスをパーティクルで使い、Color over Lifetime でフェードアウトさせた場合は、環境反射・Matcap・発光も含めてすべて完全に消えます。ガラスを Dissolve で消すエフェクトでも映り込みごと自然に消滅します。※ Unlit モードは光に応答しないため、環境反射・鏡面ハイライトが表示されません。ガラスは必ず Lit(Unlit OFF)で使用してください(Matcap だけは v47_GUIr0 より Unlit でも効きますが、映り込みの主役は環境反射のほうです)。Unlit のときは Specular Reflection の項目自体が Inspector から隠れます(設定値は保持され、Unlit を OFF に戻せば元の値のまま再表示されます)。計算もスキップされるため負荷はかかりません。

映り込む内容は、VRChat ワールド側のリフレクションプローブ/スカイボックスに依存します。プローブが配置されていないワールドでは反射が暗くなる場合があります(ソフトパーティクル・AudioLink と同様、ワールド側の環境に依存する仕様上の制約です)。

SEC. 07 — LIGHTING

Lighting & Shadow

// 光と影・トゥーン調整
プロパティ説明
Pseudo Light(擬似光の強さ)影の向きを決める光を、実際の光源から擬似的な光へ寄せます(初期値 0.5=半々)。擬似的な光は必ず上方向から当たります(周囲の明るさの分布から向きを決め、水平より下にはならないよう制限しています)。そのため光が当たっていてもメッシュの形に沿って影が入り、平行光が無いワールドでも立体感が残ります。1 で実際の光源の向きから完全に独立し、0 でライトの向きに忠実な陰影に戻ります(初期値は半々の 0.5)。
Shadow Color / Intensity擬似影の色と、影の濃さ(暗さ)を調整します。
Shadow Border光と影の境界線の位置を調整します。アニメ調(トゥーン)の表現を作る際に重要です。
Shadow Blur影のボケ足(滑らかさ)を調整します。Sphereなどの影がカクつく場合や、落ち影を綺麗に馴染ませたい場合は数値を少し上げてください。
Shadow Normal Strengthノーマルマップの凹凸をこの影へどれだけ反映させるかです。1(初期値)でノーマルマップどおり、0 に近づけるほど元のメッシュの形だけで陰影が作られます(肌の細かい凹凸で影がザラつくときに下げます)。
Shadow Flat Mode / Flat Border / Flat Blur面の向き(法線)ではなく「モデル自体の向き」と光の方向だけで影を決めます(初期値 OFF)。顔など「凹凸に応じた陰影ではなく作画のような平坦な影」にしたい部位向けです。Flat Border で影が出始める向きを、Flat Blur でその幅を決めます。
Receive Shadow(落ち影を受ける)ワールドの平行光が落とす影(木々・建物の落ち影や自分の前髪の影など)を、上記のトゥーン影(Shadow Color / Border / Blur)として受け取ります(既定 OFF)。2 影・3 影にも同じ設定が効きます(OFF にすると、どの段も落ち影を受けません)。影の縞や粗さが目立つワールドでは OFF のまま使うか、Shadow Blur を上げて馴染ませてください。

各セクションの折り畳み見出しを右クリックすると「コピー」「ペースト」メニューが表示されます。コピー対象はそのセクションの数値設定のセットです(カラーとテクスチャは含まれません=マテリアルごとの色・画像はそのまま保てます。Lighting & Shadow は Shadow Intensity / Shadow Border / Shadow Blur の3項目、Toon Shadow は 2 影 / 3 影 / 境界の色づけの ON/OFF と境界・ボケ足・ノーマルマップの反映度です)。別のマテリアルの同じセクションの見出しを右クリックして「ペースト」を選ぶと、まとめて適用されます(機能の有効/無効も一緒に移ります)。複数マテリアルを選択してペーストすると選択中のすべてに適用され、Undo(Ctrl+Z)で戻せます。調整済みの設定を他の部位マテリアルへ揃えるときに使ってください。
※ Transparency / Rendering の見出しコピーには、Blend Preset が管理する描画内部値(ZWrite 等)と Render Queue は含まれません。透明度の種類ごと揃えたい場合はペースト先でも同じ Preset を選んでください。

本セクションの影は、実際の光源の向きと、周囲の明るさの分布から決めた「擬似的な光」の向きを混ぜて向きを決めます(Pseudo Light・初期値 0.5=半々)。擬似的な光は必ず上方向から当たるため、光を下から当てても影は上からの向きへ引き寄せられます(1 にすると、光の向きに関係なく常に上から落ちます)。これは作画の作法に合わせた意図的な振る舞いです。

ハイライト(PBR)と逆光(Back Light)は従来どおり実際の光源に従います。擬似光に切り替わるのは本セクションのトゥーン陰影だけです。

影は外側から順に 1 影 → 2 影 → 3 影 と重なります。Border は 1 影 > 2 影 > 3 影 の順に小さくするのが基本で(小さいほど光が当たらない側に寄ります)、初期値もその並びになっています。アニメ調にしたいときは各 Blur を下げて境界をはっきりさせ、柔らかくしたいときは上げてください。

0 にすれば段数に関係なく影が消えます。

Shadow Flat Mode を ON にしている間は、各影の Normal Strength は影には効きません(法線を参照しなくなるため)。ノーマルマップ自体はハイライトや映り込みにはこれまでどおり効いています。

ワールドにリアルタイムの平行光(Directional Light)があり、そのライトの影(Shadows)が有効で、シャドウ描画距離の範囲内にいるときのみ影を受けます。条件を満たさないワールドでは従来どおりの表示です(OFF と同じ見た目)。アバターが影を「落とす」機能は従来から有効で、本設定の対象は「受ける」側のみです。

影の細かさはワールドの設定(シャドウ描画距離や、ライトの影の設定)で決まり、アバターの立つ位置によって切り替わります。トゥーンの影は境界がはっきりしているため、その切り替わりが「影が出る/消える」としてはっきり見えてしまいます。これはシェーダー側では抑えられないため、v48_GUIr0 から初期値を OFF にしました。ON にする場合は、Shadow Blur を上げると目立ちにくくなります。

Fade / Transparent / Additive などの半透明プリセットは、Unity Built-in パイプラインの制約により平行光の影を受けられません(ON にしても影は乗りません)。前髪など「半透明にしたいが影も受けたい」部位は、Cutout プリセット+Dither Fade(ディザ擬似半透明) を使用してください(Texture Layer の項を参照)。

半透明プリセットでチェックが ON になっているときは、チェックボックスの右に 「(現在の Preset では無効)」 と表示され、下の説明も対処を案内する警告表示に切り替わります(表示のみで、設定値は変わりません)。チェックはそのまま操作できるので、Opaque / Cutout に戻せば設定した内容がそのまま効きます。

# Light Limit(環境光クランプ・白飛び/黒つぶれ防止)

ワールドの環境光が過剰に明るい・暗いときに、アバターが受ける光量を一定範囲に制限し、白飛びや真っ暗で何も見えない状況を防ぎます。暗いワールドではより暗く、明るいワールドでは白飛びしない範囲で明るさに余裕を持たせています。

プロパティ説明
Light Min Limitその部分が受ける光の下限。影の中や暗いワールドで光量が下限に満たない分を、フラットな環境光として補います。上げるほど影が持ち上がって明るくなり、下げるほど影が濃く沈みます(0 で下限なし=影を完全に暗くできます)。
Light Max Limit明所での明るさの上限(白飛び防止)。上げるほど明るいワールドで明るく見えます。

下限は画素ごとの受光量に対して働くため、光の当たっている面はそのままに、影になっている部分だけを持ち上げることができます。暗いワールドで顔の陰影が潰れて見えないときや、影を薄く保ちたいときに上げてください。影の色そのものを変えたい場合は Lighting & Shadow の Shadow Color / Shadow Intensity を使います(こちらは光量ではなく影の色と濃さを直接指定します)。

本機能は常時有効です。Lit(Unlit OFF)のときのみ作用し、Unlit モードのときは光に応答しないため、この項目自体が自動的に非表示になります。発光(Emission)と環境反射の映り込みは制限の対象外です。追加のリアルタイムライトも、メイン光・環境光とまとめて 1 回の上限・下限処理にかかります(追加ライトは頂点単位・最大4灯として扱われます)。_LightMinLimit / _LightMaxLimit はアニメーション可能です。

環境光(ライトプローブ)が主体のワールドや逆光の場面で、環境光に含まれる方向情報から光側/陰側を自動的に復元し、本体が一律の明るさで平面的に沈んで見えるのを軽減します。輪郭(シルエット)側には背面からの環境光がわずかに回り込み、逆光でも立体感が保たれます。調整項目はなく、常に最適な設定で動作します(平行光が強いワールドでは変化はわずかです)。

SEC. 08 — LIGHTING

Toon Shadow(多段の影)

// 2 影・3 影・影の境界の色づけ

Lighting & Shadow で決まった 1 段目の影の中へ、さらに濃い帯を重ねたり、境界に色を差したりする項目です。いずれもチェックボックスで ON/OFFでき、初期値はすべて OFF(=作成済みマテリアルの見た目は変わりません)。

プロパティ説明
Shadow 2nd(2 影)1 段目の影の中に、もう 1 段濃い帯を重ねます。チェックボックスで ON/OFF(初期値 OFF)、色の不透明度が濃さの強度です。境界位置・ボケ足・ノーマルマップの反映度を個別に持ちます。
Shadow 3rd(3 影)さらに奥に残る 3 段目の締め色です(首の下や袖の内側など)。項目の構成は 2 影と同じで、初期値 OFF です。
Shadow Border Color / Range影の境界のすぐ内側に細い色の帯を入れます(境界だけを暖色に抜くなど)。チェックボックスで ON/OFF(初期値 OFF)、不透明度が強度、Range が帯の幅です。色は「そのチャンネルをどれだけ地の色へ戻すか」として働きます。

影は外側から順に 1 段目(Lighting & Shadow)→ 2 影 → 3 影 と重なります。Border は 1 段目 > 2 影 > 3 影 の順に小さくするのが基本で(小さいほど光が当たらない側に寄ります)、初期値もその並びになっています。アニメ調にしたいときは各 Blur を下げて境界をはっきりさせ、柔らかくしたいときは上げてください。

0 にすれば段数に関係なく影が消えます。

Unlit モード(光を無視)が ON のときは、本セクションの項目は効きません(陰影の計算そのものが行われないためです)。Unlit モードのチェックは PBR(BRDF) の最上部にあります。

SEC. 09 — LIGHTING

Matcap

// 擬似的な光沢・環境反射

常に一定の美しい光沢や環境の映り込みを「擬似的」に表現します。非常に処理が軽いため VRChat で重宝します。

プロパティ説明
Matcap テクスチャ球状に描かれた環境反射風の画像を設定します(髪の天使の輪やシルクのテカり等)。
Strength / Blend合成強度と合成モード(0=乗算落とし込み / 1=加算発光)を調整します。
Contrastマットキャップの明暗のメリハリを強めます。値を上げると暗部を持ち上げずにハイライトが締まり、金属的な質感になります(既定 1.0=変化なし)。金属表現は Blend=Add + Contrast 高めが目安です。
Highlight Threshold / BoostThreshold(明るさのしきい値)より明るい部分だけに Boost のゲインを乗せ、鏡面のテカりだけを尖らせます。暗部・ベースは持ち上げません。Contrast と併用するとより金属らしくなります(既定 Boost=0=変化なし)。
裏面で無効化両面描画(Cull = Off)のとき、裏面のメッシュに Matcap を当てません。服の袖裏・コートの裏側などを暗く落ち着かせたいときに使います。既定は OFF。
2枚目 Matcap(Mask Select)1枚のマテリアルで、部位ごとに 2 種類の Matcap を出し分けます。領域マスク(グレースケール)の黒=1枚目/白=2枚目で切り替わります。1枚目と2枚目はそれぞれ独立して、カラー Tint・Strength・Blend を設定できます(例:トリムは明るい金属、布は落ち着いたシルク)。既定は OFF。
3枚目 Matcap(Mask Select)さらに 3 種類目の質感を足します(例:布・革・金具)。2枚目とは別のチャンネル(既定 G)で領域を決め、2枚目の結果の上へ重ねます(黒=そこまでの結果のまま/白=3枚目/中間は補間)。2枚目の領域指定には一切影響しません。色・強さ・合成モード・コントラスト・ハイライトは1〜3枚目それぞれ独立です。既定は OFF。

「2枚目 Matcap を使う」を ON にすると、Matcap テクスチャ 2・Matcap 2 のカラー Tint / Strength / Blend / Contrast / Highlight・共有マスク RGBA・領域マスクのチャンネルが表示されます。共有マスクの指定チャンネル(既定 R)で Matcap を出し分け(黒=1枚目 / 白=2枚目 / 中間は補間)、マスクはメインテクスチャと同じ UV で参照します。共有マスクは Fake Shadow Texture など他のマスク機能と共用のスロットです(1枚の画像の R/G/B/A に最大4種類のマスクを詰められます。詳しくは Fake Shadow Texture の項を参照)。チャンネル選択のすぐ下に R/G/B/A の中身が並んで表示され、クリックで切り替えられます。既定チャンネルは Matcap が R、Fake Shadow Texture が B のため、そのままでは衝突しません。これまで領域マスクを設定していたマテリアルは、既定が R のため見た目が変わりません(グレースケール画像は R=G=B のため値も同じです)。1枚目と2枚目はそれぞれ独立して色・強さ・合成モード・コントラスト・ハイライト強調を設定できるため、部位ごとに別の質感を作り込めます。裏面無効化と寿命フェードは両 Matcap に共通で適用されます。OFF のときや 2枚目を割り当てないときは、従来どおり 1枚の Matcap として動作し、処理負荷も変わりません。

「3枚目 Matcap を使う」を ON にすると、Matcap テクスチャ 3・Matcap 3 のカラー Tint / Strength / Blend / Contrast / Highlight・共有マスク RGBA・領域マスクのチャンネルが表示されます。既定チャンネルは G で、2枚目(既定 R)とは別のチャンネルを読むため、2枚目の領域指定には影響しません。合成は「2枚目までの結果の上に 3枚目を重ねる」順序で、マスクが黒ならそこまでの結果がそのまま残ります。1枚の共有マスクに「R=2枚目の領域」「G=3枚目の領域」を別々に描いておけば、1マテリアルで3種類の質感を出し分けられます(例:布・革・金具)。グレースケール画像は R=G=B のため全チャンネルに同じ絵が入りますので、2つ以上の機能で使うときは必ずチャンネルを分けて描いてください(同じチャンネルを2つの機能が読んでいる場合は Inspector が警告します)。裏面無効化と寿命フェードは全 Matcap に共通で適用されます。OFF のときや 3枚目を割り当てないときは、従来どおり動作し処理負荷も変わりません。

このオプションは描画設定の Cull が Off(両面描画) のときに効果を持ちます。裏面で Matcap を切ると、その面にはハイライトが乗らなくなるぶん自然に暗く見えます(裏地の沈み)。Cull が Back(裏面を描画しない・既定) の場合は裏面そのものが表示されないため、この項目を ON にしても見た目は変わりません。Cull は「Transparency / Rendering」の詳細設定にあります。

Matcap もハイライト系として、パーティクルカラーのアルファに追従してフェードします(Fade/Additive、および Transparent のパーティクル寿命フェード時)。Transparent ではマテリアル透明度(_Color.a)では透けずに残り、パーティクルの Color over Lifetime で映り込みごと自然に消えます。

Matcap は Unlit モードでも効きます(v47_GUIr0 より。それ以前は Unlit で表示されませんでした)。Matcap は光の当たり方ではなく見る向きだけで決まる擬似的な光沢のため、光を無視する Unlit でも成立します。ただし 環境反射・鏡面ハイライトは Unlit では表示されません(こちらは実際の光源と環境光を必要とするためです)。映り込みを使ったガラス表現は Lit(Unlit OFF) で使用してください。

SEC. 10 — LIGHTING

Rim Light(輪郭の光・逆光表現)

// 輪郭の光・逆光表現

モデルの輪郭(エッジ)部分を強調する機能です。Blend Mode で「光らせる」か「暗く落とす」かを切り替えられます。

プロパティ説明
Rim Color HDR / Intensity輪郭の色と強さです。Add ではキャラクターを浮き上がらせたり魔法のオーラを、Multiply では縁を暗く落とす縁取りを表現します。
Rim Power効果の太さを調整します。大きくするほど太く柔らかく、小さくするほど細く鋭いエッジになります。
Blend ModeAdd(既定)は縁を加算で発光させます(逆光・オーラ)。Multiply は縁を暗色化します。Rim Color を黒系にすると縁を暗く落とす縁取り(黒いリム)になります。
裏面で無効化両面描画(Cull = Off)のとき、裏面のメッシュにリムを出しません(Add/Multiply 両モードに作用)。服の袖裏・コートの裏側などを暗く落ち着かせたいときに使います。既定は OFF。
マスクで部位を絞る (Use Rim Mask)共有マスクの指定チャンネル(既定 A)で、リムを出す場所を部位ごとに絞ります(白=出す / 黒=出さない / 中間は強さが比例)。「顔だけリムを消す」「金具だけ強く光らせる」といった調整ができます。Add / Multiply の両モードに同じように効き、環境順応・暗所の下限・環境色になじませるとも併用できます。マスクはメインテクスチャと同じ UV で参照します。既定は OFF。
Rim Shade を有効化(縁を暗く落とす)Rim Light とは独立した、縁を暗く落とすレイヤーです(既定 OFF)。Rim Light の Blend Mode を Add にしたまま本機能を ON にすれば、光る縁と暗い縁を同時に出せます。Rim Light を使わず、暗い縁だけを出すこともできます(このトグルだけを ON にしてください)。
Rim Shade Color / Intensity縁を寄せる色と、その濃さ(0〜4)です。暗い色ほど強く落ち込みます(白=変化なし)。濃さを 1 より上げても、縁の色より暗くはなりません(色が反転しないようにしているため)。1 を超える範囲は暗くなる帯の「全開になる部分」を広げる方向に効きます(暗部が太く、縁がくっきりします)。さらに濃く落としたいときは Rim Shade Color を暗い色にしてください。
Rim Shade Power暗くする帯の太さです。既定では Rim Light より太い帯になります(細い発光の縁+広い暗部、という使い分けを想定した初期値です)。
マスクで部位を絞る (Use Rim Shade Mask)共有マスクの指定チャンネル(初期値 A)で、暗くする場所を限定します。初期値は Rim Light のマスクと同じ A なので、両方のマスクを使う場合はどちらかのチャンネルを変えてください(Inspector が警告します)。
環境順応 (Env Adapt)周囲の明るさ(環境光+メインのライト)に合わせてリムを減光します。暗いワールドでリムだけが浮いて見えるのを防ぎます。値は「環境の影響をどれだけ受けるか」の度合いで、1(既定)で完全に追従、0 で従来どおり明るさが一定のリムになります。白でしっかり照らされている明るさ以上の場所では従来と同じ見た目になり、そこから暗くなるほど減光します(=暗い側にだけ効きます)。Add / Multiply 両モード、および Unlit にも作用します。
暗所の下限 (Dark Floor)真っ暗な場所でリムをどこまで残すかの下限です。0(既定)は完全に消灯、0.2 程度にすると暗闇でもうっすら輪郭が残ります。暗いワールドで減光しすぎると感じたときの調整はこの値で行います。環境順応が 0 より大きいときだけ表示されます。
環境色になじませる (Env Tint)周囲の環境光の色みをリムの色に乗せます。寒色のワールドでは青寄りに、夕焼けなど暖色のワールドでは暖色寄りにリムが転びます。0(既定)で色は変わりません。明るさは変えず色みだけを寄せるため、環境順応と併用しても二重に暗くなりません。環境順応とは独立しているので、明るさは一定のまま色だけ馴染ませる(環境順応 0 + 環境色になじませる 1)といった使い方もできます。効果はリム色に含まれる成分を環境光の色みの分だけ抑える形で出るため、白や淡色のリムほど変化がはっきりします。

Rim Light の Blend Mode を Add(既定)のままにして、Rim Shade を有効化してください。Rim Light が縁を光らせ、Rim Shade が縁を暗く落とします。両者は独立したレイヤーなので、色・太さ・濃さ・マスクをそれぞれ別に設定できます。Rim Shade だけを ON にすれば、Rim Light を使わずに暗い縁だけを出せます。Rim Shade は Rim Light の Multiply と同じ計算(縁の色を指定色へ寄せる乗算)なので、見え方の系統は同じです。違いは独立して同時に使えることと、帯の太さ・色・マスクを別に持てることです。Rim Shade も Unlit モードで効きます。環境順応の 3 つの設定(環境順応 / 暗所の下限 / 環境色になじませる)は Rim Light と Rim Shade の共通設定で、どちらにも同じように効きます。

Blend Mode を Multiply にし、Rim Color を黒〜暗色に設定してください。Intensity で暗くする強さ、Rim Power で縁取りの太さを調整します。

このオプションは描画設定の Cull が Off(両面描画) のときに効果を持ちます。Cull が Back(裏面を描画しない・既定) の場合は裏面そのものが表示されないため、ON にしても見た目は変わりません。Cull は「Transparency / Rendering」の詳細設定にあります(Matcap の同名オプションと同じ考え方です)。

リムの発光は本来「光の当たり方に関係なく一定」の演出であるため、暗いワールドではリムだけが明るく残って浮いて見えることがあります。環境順応(既定 1)が周囲の明るさに追従して自動的に暗くしてくれるので、そのままで多くのワールドに馴染みます。明るいワールドでの見え方は変わらないため、調整が要るのは暗所だけです。暗所で消えすぎる場合は 暗所の下限 を上げる(または 環境順応 を少し下げる)のが目安です。逆に、アバターの見せ場としてリムを常に一定の明るさで光らせたい場合は、環境順応を 0 にすれば従来どおりの一定発光になります。

環境順応は「白でしっかり照らされている明るさより暗い側にだけ」効きます。明るいワールドでライトを少し動かしても変化が出ないのは仕様です(明るい場所は従来と同じ見た目に保つため)。効き方を確かめたいときは、Directional Light の Intensity を 0 に近づけるか、暗い Skybox に変えると変化がはっきり見えます。

こちらは明るさではなく色みを環境に寄せる調整で、環境順応とは独立して使えます。周囲の光の色を取り出して色相だけをリム色に乗せるため、明るさが二重に落ちることはありません。既定は 0(色を変えない)です。白〜淡色のリムほど効果がはっきり出ます(もともと濃い色のリムでは変化が分かりにくい場合があります)。ワールドを渡り歩く用途で「どこでも浮かない」ことを狙うなら環境順応と併用、キャラクターの色を守りたい場合は 0 のままが無難です。

リムは本来モデル全体の輪郭に一様に出ますが、顔だけ出したくない/金具だけ強く光らせたいといった調整をしたい場面があります。ON にすると共有マスクの指定チャンネル(既定 A)を読み、白い場所だけリムが出ます(中間色では強さが比例します)。裏面で無効化と同じ 1 箇所で効くため、Add(加算発光)でも Multiply(暗色化)でも同じように働きます。

Inspector でも「環境順応(Rim Light / Rim Shade 共通)」として 1 箇所にまとめて表示され、どちらか一方でも有効なら操作できます。

共有マスクは Fake Shadow Texture や 2枚目・3枚目 Matcap と共用のスロットです(既定は R=2枚目 Matcap / G=3枚目 Matcap / B=Fake Shadow / A=リムライト)。共有マスクの既定は「黒」=マスクを割り当てないまま ON にするとリムが全面で消えます(Inspector が警告します)。グレースケール画像は R=G=B のため全チャンネルに同じ絵が入るので、複数の機能で使うときはチャンネルを分けて描いてください。Fake Shadow Texture と違い、独立した Tiling / Offset は持ちません(メインテクスチャと同じ UV)。

Add / Multiply のどちらも Unlit モードで効きます(v47_GUIr0 より。それ以前は Multiply が Unlit で効きませんでした)。Add のリムライト発光は、パーティクルカラーのアルファに追従してフェードイン/アウトします(Fade/Additive、および Transparent のパーティクル寿命フェード時)。

SEC. 11 — LIGHTING

Back Light(逆光ライト)

// 光が背後にあるときだけ光る逆光表現

メインの平行光(Directional Light)がキャラクターの背後にあるときだけ、輪郭の広い範囲を発光させるイラスト調の逆光表現です。Rim Light が「見る角度で常に縁が光る」のに対し、Back Light は「光が背後にある時だけ光る」ことに加え、影(シャドウ)で光が遮られている部分は光りません(上着の内側・襟元など、体に遮られて逆光が届かない場所は発光しない)。シーンのライトの向きと遮蔽に反応する自然な逆光になります。

光の向きと遮蔽を使う機能のため、ライティング計算を行わない Unlit モードでは発光しません。Unlit のときは Back Light の項目自体が Inspector から隠れます(設定値は保持され、Unlit を OFF に戻せば元の値のまま再表示されます)。

プロパティ説明
Use Back Light機能の有効/無効。
Back Light Color (HDR) / Intensity逆光の色と強さです。HDR カラーなので Bloom と組み合わせると強く発光します。
Width光る範囲の広さです。小さいほど広い範囲が光り、大きいほど輪郭近くの細い範囲だけになります。
Directivity「光が背後にある」と判定する指向性です。大きいほど光がほぼ真後ろにあるときだけ光り、小さいほど斜め後ろでも反応します。
環境順応 (Env Adapt)周囲の明るさ(環境光+メインのライト)に合わせて逆光を弱めます。暗いワールドで逆光だけが浮いて見えるのを防ぎます。値は「環境の影響をどれだけ受けるか」の度合いで、1(既定)で完全に追従、0 で従来どおり一定の明るさになります。白でしっかり照らされている明るさ以上の場所では従来と同じ見た目になり、そこから暗くなるほど弱まります。Rim Light の同名の項目と同じ仕組みです。
暗所の下限 (Dark Floor)真っ暗な場所で逆光をどこまで残すかの下限です。0(既定)は完全に消灯、0.2 程度にすると暗闇でもうっすら残ります。暗いワールドで弱まりすぎると感じたときの調整はこの値で行います。環境順応が 0 より大きいときだけ表示されます。
環境色になじませる (Env Tint)周囲の環境光の色みを逆光の色に乗せます。寒色のワールドでは青寄りに、暖色のワールドでは暖色寄りに転びます。0(既定)で色は変わりません。明るさは変えず色みだけを寄せるため、環境順応と併用しても二重に暗くなりません。
裏面で無効化両面描画(Cull = Off)のとき、裏面のメッシュに逆光を出しません。既定は OFF。

Rim Light は光源の向きに関係なく「視線に対して縁」が光ります。Back Light はシーンのメイン平行光の向きを見て光が被写体の背後にある時だけ光り、さらに影で遮られた部分は光りません。両方を同時に使うこともできます。

光の遮蔽判定にはワールドの影(シャドウ)を利用します。影の無いワールド(シャドウが無効な環境)では遮蔽が働かず、光の向きだけで判定されるため、上着の内側などにも光が出ることがあります。また Unlit モードでは無効です(光に応答しないため。Rim の Multiply と同じ扱い)。

逆光は「光が背後にあるか」と「影で遮られているか」だけで判定していたため、ライトの強さを弱めても逆光の明るさは変わりませんでした。環境順応(既定 1)を使うと周囲の明るさに合わせて自動的に弱まり、暗いワールドでも風景に馴染みます。明るいワールドでの見え方は変わらないため、調整が要るのは暗所だけです。効き方を確かめたいときは、Directional Light の Intensity を 0 に近づけるか、暗い Skybox に変えると変化がはっきり見えます。Rim Light の同名の項目とまったく同じ仕組みなので、両方使う場合も設定の勘所は共通です。

発光は透明度(hlFade)に追従してフェードします。効果はメインの Directional Light を基準にするため、ワールドに Directional Light が無い場合は光りません。「裏面で無効化」は Cull = Off(両面描画)のときのみ意味を持ちます(Rim / Matcap の同名オプションと同じ考え方です)。

SEC. 12 — LIGHTING

Fake Shadow(落ち影 / 前髪の影)

// 影を落とす側(Mesh)と受ける側(Texture)

前髪などの影を表現する機能です。出し方が 2 通りあり、同じセクション内にまとめてあります。

  • Fake Shadow Mesh(影を落とす側):メッシュの形から影を作ります。頭の動きと光の向きに追従します。
  • Fake Shadow Texture(影を受ける側):UV に描いた静止画の影です。どのワールドでも必ず出せます。

Fake Shadow Mesh はワールドの描画設定によっては表示できません。その場合に備えて、Fake Shadow Texture を「保険」として併用するのが基本的な使い方です(切り替えは Fake Shadow Auto Fallback が自動で行います)。Texture 側は Bake to Base の「Fake Shadow の焼きこみ」(前述)で自動生成できます。

# Fake Shadow Mesh(影を落とす側・メッシュから落とす影)

前髪などのメッシュ自身の形を光の向きへ押し出して、顔の上に影として落とす機能です。下記 Fake Shadow Texture が UV に描いた静止画なのに対し、こちらは頭の動きと光の向きに追従する影です。

この設定は「影を落とす側」(前髪など)のマテリアルに行います。受け手(顔など)側の設定は不要です。

プロパティ説明
Fake Shadow Mesh を有効化機能の有効/無効(既定 OFF)。
影の重ね方影が自分自身と重なる部分(前髪の房どうしの交差など)の見え方を選びます。フラット(既定)=重なっても濃さが一定になります(下記の注意を参照)。乗算=受け手の陰影に比例して暗くします。重なった部分はその分だけ濃くなります。
影の色落ちる影の色。既定はやや青みのあるグレーです(白=影なし)。
影の濃さ影の強さ(0=無効 〜 1=最大)。アニメーション可能です。
落とす距離メッシュを光の向きへ押し出す量(既定 0.6・目安 0.1〜1.0)。小さすぎると影が本体に埋もれ、大きすぎると影が浮いて見えます。顔と前髪の隙間に合わせて調整してください。マイナス(-2〜0)にすると、メッシュを光源の側へ押し出します(顔に落ちる影は光源の側へずれます)。髪型によって、影の重なり方をこちらで合わせたいとき用です。光がカメラ側から当たっているときは、前髪など落とす側自身にも影が乗ることがあります(値がマイナスのときは Inspector に案内が出ます)。
影が届く奥行き影が落ちる奥行きの上限(既定 0.5・目安 0.1〜1.0)。これより奥にあるものは暗くなりません=背景・遠くの壁・他のアバターは影響を受けません。顔まで影が届かない場合は少し大きく、周囲に影が漏れる場合は小さくします。
落ち影のグラデーション影の外周をやわらげます(既定 0=ぼかしなし)。上げるほど輪郭が広くぼけ、1 に近づくと影全体が薄くなっていきます。房に厚みのある髪ではよく効きますが、平面のカードでできた前髪ではほとんど効きません(下記の注意を参照)。
落ち影の奥行きのフェード「影が届く奥行き」の遠い側で影をなだらかに消します(既定 0=従来どおりその位置でぱったり終わる)。上げるほどフェードの始まりが手前に寄り、1 では落とす側のすぐそばから薄れ始めます。メッシュの形に左右されず必ず効きます。
光が弱いときの向き (XYZ・ワールド空間)暗いワールドで光の向きが頼りにならないときに、影を落とす向きを作者の指定へ寄せます。既定 (0, 0.7, 0.7)=やや前上方から当たる想定です(光の方向を指す向きで、影はその反対側へ伸びます)。
上の向きへ切り替わる明るさどのくらい暗くなったら上記の向きへ寄せ始めるか(既定 0.1)。Light Intensity と同じ目盛りで読めます(0.1=Directional Light の Intensity が 0.1 を下回るあたりから寄り始める)。切り替えは滑らかに補間されるため、明るさが変わってもパッと切り替わることはありません。

影は受け手(顔など)より後に描かれる必要があります。不透明な描画は手前から順に描かれるため、前髪は顔より先に描かれてしまい、そのままでは影が顔に上書きされて消えます。この機能を ON にすると Render Queue が自動で +1 され(Blend Preset を選び直したときも同様)、OFF に戻すと元に戻ります。Opaque・Cutout・Fade などどのプリセットでも同じように働きます。

ただし Render Queue を手動で変更済みの場合は、自動調整を行いません(利用者の設定を尊重するため)。その場合は Transparency / Rendering セクションの Render Queue で、この(前髪側の)マテリアルの値を受け手より大きくしてください。受け手と同じ値では影が出ません(+1 で足ります)。影がまったく出ないときは、まずここを確認してください。

この機能は、影の届く範囲を判定するためにワールド側の描画設定を利用します。その設定が無いワールドでは影が出ません。 ただし背景が暗くなるといった破綻は起きず、単に出ないだけです。

この設定が働くのは「暗いが光はある」ワールドです。光がまったく無いワールドでは、そもそもこの影自体が表示できません(影の届く範囲を判定する仕組みも同じ光源に依存しているため、両者は同時に失われます)。したがって「光が無いときの保険」は下記の自動フォールバックが担い、この設定は「薄暗いときに影の向きが暴れないようにする」ためのものだと考えてください。

上記の「出ないワールド」でも影が絶えないようにする設定です。受け手(顔など)のマテリアルの Fake Shadow Texture で「自動フォールバック」を ON にすると、この機能が出せるワールドでは描いた影が自動で隠れ、出せないワールドでは描いた影が代わりに出ます。影が二重になることも、影が消えることもありません。Fake Shadow Mesh と併用するなら ON にしてください。既定は OFF(描いた影を常時表示)です。 Fake Shadow Mesh を使わず描いた影だけを使う場合は、そのままで構いません。

描いた影は「必ず出るが追従しない」、こちらは「追従するが出ないワールドがある」という関係です。どちらか一方が他方を置き換えるものではないため、上記の自動フォールバックで組み合わせて使えます。

フラットは「これ以上暗くしない」という上限を置く方式です。そのため重なっても濃さは一定になりますが、代わりに影の中では受け手の陰影やテクスチャの明暗が失われ、もともと影色より暗い部分(濃い色のテクスチャなど)には影が乗りません。既定はフラットです。「影の中でも肌や布の陰影を残したい」場合は乗算に切り替えてください。

フラットの影色は周囲の明るさに自動で追従します。上限を置く方式は、そのままだとワールドが暗くなるにつれ受け手のほうが影色より暗くなり、影が消えてしまうためです。明るいワールドでの見え方は従来と変わりません(暗いときだけ働きます)。

この影は光の向きへメッシュをずらして描く仕組みのため、画面に出る影の輪郭は「カメラから見た落とす側のシルエット」になります。ぼかしはその境目——面が横を向いていくところ——を薄くすることで作られます。したがって房に厚みのある髪(筒状のメッシュ)ではよくぼけますが、平面のカードを並べて作った前髪では、カードの面内で向きが一定なため縁でも「横を向いた」状態にならず、ほとんど変化しません。その場合は 落ち影の奥行きのフェード(形に左右されません)を使うか、両方を併用してください。

影の形はメッシュの形そのものになります(前髪の形がそのまま影になります)。受け手が曲面のため、落とす距離を大きくするほど影が受け手から剥離して見えます。VR では両眼で見え方が変わるため、実際に VR で確認しながら距離を決めてください。影は発光系の効果(Emission・Rim Light・Glitter など)は暗くしません。無効時は描画そのものが発生しないため負荷はほぼゼロです。

# Fake Shadow Texture(影を受ける側・意匠的な落ち影 / 前髪の影)

前髪の影のように「作者が描いた影」を、ワールドの光源に関係なく常に同じ位置・同じ濃さでオブジェクトの上に表示する機能です。イラストの塗りとして意図した陰影を、どのワールドでも崩さずに見せたいときに使います。

プロパティ説明
Fake Shadow Texture を有効化機能の有効/無効(既定 OFF)。
共有マスク RGBA(他機能と共用・既定 B)影の形を描いた画像を設定します。Matcap の領域マスクと同じ共有スロットです(下記「共有マスクの使い方」を参照)。
影を読むチャンネル (R/G/B/A)共有マスクのどのチャンネルを影として読むか(既定 B)。Matcap の領域マスクは既定 R なので、そのままでも衝突しません。すぐ下に R/G/B/A の中身が並んで表示され、クリックでも切り替えられます。
マスクを反転(黒=影にする)既定 OFF は「白=影 / 黒=影なし」。グレースケールで黒く影を塗った画像を使う場合は ON にしてください(黒=影になります)。
影の色(乗算)影の部分に掛ける色。既定はやや青みのあるグレーです。暗くしたいほど濃い色にします(白=影なし)。
影の濃さ影の強さ(0=無効 〜 1=最大)。アニメーション可能です。
Tiling / Offset影マスクの繰り返しと位置。Offset をずらせば、テクスチャを描き直さずに影の位置を微調整できます。基準となる UV は Albedo テクスチャと同じです。
自動フォールバック既定 OFF(描いた影を常に表示)。ON にすると、この描いた影を Fake Shadow Mesh(上記)が表示できないワールドでのみ表示します。Fake Shadow Mesh とセットで使うときに ON にする設定です(下記「自動フォールバックの使い方」を参照)。Fake Shadow Mesh を使わず、描いた影だけを常に出したい場合は OFF のままで構いません。

Lighting & Shadow の Receive Shadow は、ワールドに実際の平行光とシャドウ設定があるときだけ現れる物理的な落ち影です。光の無いワールドや暗いワールドでは影が出ません。一方 Fake Shadow Texture は光の状態に関係なく常に出る、作画としての影です。役割が違うため、両方を同時に使えます。

「共有マスク」は1枚の画像の R/G/B/A に、別々の白黒マスクを最大4種類詰め込めるスロットです(Fake Shadow Texture と Matcap の領域マスクが共用します)。画像編集ソフトで、既定の割り当てどおり R に 2枚目 Matcap の領域 / G に 3枚目 Matcap の領域 / B に前髪の影 / A にリムライトのマスク、というようにチャンネルごとに別々の絵を入れておき、各機能で読むチャンネルを指定してください。どの機能がどのチャンネルを既定にしているかは、Inspector のスロット名に出ます(例:Fake Shadow Texture では「共有マスク RGBA(他機能と共用・既定 B)」)。

チャンネル選択のすぐ下に R/G/B/A の 4 枚が並んで表示され、いま読んでいるチャンネルが枠で強調されます。サムネイルをクリックすると、そのチャンネルに切り替わります。 R/G/B はそれぞれ赤・緑・青に着色して表示されるため、どのチャンネルの絵かひと目で分かります(アルファはグレースケール表示)。テクスチャ側の「Read/Write Enabled」を有効にする必要はありません。

グレースケール(白黒)の画像は R=G=B なので、1種類しか使わない場合はチャンネルを気にせずそのまま置くだけで動きます(アルファは不要です)。逆に、複数機能で使うときは必ずチャンネルを分けてください — グレースケール画像は全チャンネルに同じ絵が入るため、そのままだと Matcap の領域マスクと影が同じ形になってしまいます。

Fake Shadow Texture はこの共有マスクを使うため、Texture Layer の色オーバーレイ・透明マスクは今までどおり自由に使えます(同時使用できます)。

UV 空間に描いた静止画であり、幾何学的な自己遮蔽ではありません。そのため頭の動きや光源の向きには追従しません(常に同じ意匠で見せることが目的の機能です)。影はオブジェクトの色に対して掛かるため、Unlit モードや暗いワールドでも同じように出ますが、Emission・Rim Light・Glitter などの発光系の効果は暗くしません(発光している部分では影が見えにくくなります)。スクロール(流れる動き)は掛かりません。無効時はほぼ負荷ゼロです。

SEC. 13 — VFX

Outline & Sweep

// 輪郭線 & 周回発光オプション

メッシュの輪郭線を描くベース機能です。トゥーン調の縁取りから、HDR カラー+Bloom によるネオン管のような発光輪郭まで対応します。球・キューブ・文字・衣装・小物など任意の3Dメッシュに対応し、スキンメッシュではアニメーションにも追従します。基本の輪郭線はテクスチャ・UV展開なしで描けます(マスクは任意:目尻など部分的に線を消したいときだけマスク画像を使えます)。

プロパティ説明
Use Outline機能の有効/無効。
Base Color (HDR)輪郭線の色。HDR 対応のため Intensity を上げると Bloom(光の滲み)が綺麗に効きます。A(アルファ)は輪郭線自体の不透明度です(v34 から有効・既定 1=不透明)。
Self-Illuminate(自己発光)輪郭線がワールドのライティングを無視して自己発光する度合い(0〜1・既定 0)。0(既定)では輪郭線がシーンの明るさ(メイン Directional Light の総量+環境光、Light Min/Max Limit に追従)に均一に追従します(Directional Light があれば明るく(白)、シーン全体が暗いときだけ灰色〜黒・線は均一で明暗の境界は出ません・真っ暗では Light Min Limit で止まり 0 で消灯)。1 ではライティングを無視して常時発光(従来のネオン)になります。発光の強さは Base Color (HDR) の明るさで調整してください。アニメーション可能です。※この値が次の Intensity / Line Width の効き方(明るさの基準)を左右するため、先に決められるよう Base Color の直後に配置しています。
Intensity(光の強さ)線の発光の強さ(0〜16)。
Line Width(線の太さ)輪郭線の太さ(メッシュの押し出し量)。スライダーは 0〜20(0.01 刻み・小数第2位まで)で、0 で線が消えます。細い線の微調整向けのレンジです(表示値は内部値の便宜的な倍率で、効果・保存値の意味は値の大小に依存しません)。
Extrude Mode(押し出し方式)Normal=法線方向(ベベル付き文字・文字列など複数パーツのメッシュ・スムーズな一般モデル向け)/ PivotScale=ピボットから外向き(キューブ等のハードエッジな単一凸形状向け・角が割れません)。
Alpha Sync(本体の透明度に追従)半透明プリセット(Transparent / Fade / Additive)で、輪郭線を本体の透明度(Color の A × メインテクスチャの A)に追従させます(既定 ON)。本体が透けるほど、本体越しに透けて見える輪郭色も一緒に薄くなり、完全透明の部分には線も出ません(深度も書きません)。OFF で従来どおり透明度に関係なく常時表示(内側に輪郭色が透ける従来の見た目)。不透明(Opaque / Cutout)プリセットでは本体が透けないため効果はありません。
Use Outline Mask(マスクで部分的に消す)輪郭線をテクスチャマスクで部分的に消す機能(既定 OFF)。目尻・口元など、線を出したくない箇所だけ消せます。ON にすると下記のマスク欄が表示されます。
Outline Maskグレースケールのマスク画像。白=線あり / 黒=線なし(中間はグラデーション)。メインテクスチャと同じ UVで参照します。マスクで消した部分は深度を書かないため、半透明時の裏側の透けも増えません。

Outline を有効にすると、扱いやすい初期設定(Intensity 1 / Line Width 0.1 / Sweep OFF)で始まります。値はあとから自由に変更できます。なお Outline を一度 OFF にして再び有効化すると、この初期設定に戻ります。

輪郭線は「メッシュを少し膨らませた複製を裏面だけ描画する」方式(反転外殻)で幾何学的に描かれます。そのためキューブのような平面メッシュでも正確に輪郭線が出ます。

  • Normal:法線に沿って押し出すため線の太さが均一。ハードエッジ(フラットシェーディング)の角では線が途切れることがあります。その場合は PivotScale に切り替えるか、モデル側にベベル/スムーズ法線を付けてください。
  • PivotScale:ピボットから放射状に押し出すため角が割れませんが、文字列のような複数パーツのメッシュや凹形状では線の太さが不均一になります(ピボットを向く側に線が出ません)。単一の凸形状専用と考えてください。
  • スキンメッシュのボーン変形に輪郭線が追従します。Extrude Mode は Normal を使用してください(PivotScale は全身メッシュでは破綻します)。
  • 線の太さはアバターのスケールに比例します(巨大/小型アバターでも見た目の比率が保たれます)。
  • 顔など輪郭線を出したくない部位は、そのマテリアル側で Outline を OFF(または Line Width を 0)にしてください。アバターは部位ごとにマテリアルが分かれているのが一般的なので、これが部位制御の基本手段です。1枚のマテリアル内で目尻など一部だけ消したい場合は Use Outline Mask(白=線あり/黒=線なし)が使えます。
  • 該当マテリアルの頂点処理が約2倍+ドローコールが1つ増えます。本体規模でも実用範囲ですが、Performance Rank を重視する場合は適用範囲を絞ってください。

# Sweep(周回発光オプション)

Outline の輪郭線の上を、ひときわ明るい発光の筋がぐるりと周回するオプションです。ネオン管・サイバーガジェット・魔法陣などの「光が走る」演出に使えます。Outline が有効なときのみ機能します。

プロパティ説明
Use Sweepオプションの有効/無効。
Base Glow(管の基本輝度)周回する筋が走る土台=輪郭線(管)の基本の明るさ(0〜1・既定 0.3)。下げると「淡く光る管の上を強い光の筋が走る」コントラストが作れます。v34 から筋の明るさは Sweep OFF のソリッド線と同じ明るさが上限になり、Sweep で輪郭線が飽和(白飛び)しなくなりました。そのため 1 にすると管と筋が同じ明るさになり筋が見えなくなります(GUI で Sweep を有効化したとき 1 付近なら自動で 0.3 に補正されます)。Sweep 専用の設定です(Sweep を有効化すると表示)。Sweep を OFF にすると Base Glow は効かなくなり、輪郭線は均一なソリッド線になります(明るさは Intensity と Base Color で調整)。
Width(筋の長さ)光の筋の全長。小さいほど点状に、大きいほど長く光ります。
Sharpness(減衰の鋭さ)筋の中心から両側へ対称にかかる減衰の鋭さ。大きいほど中心が鋭く際立ち、小さいほど全体がなだらかに光ります。
Speed(周回速度)周回する速さ。符号で周回方向が反転します(正=一方向 / 負=逆方向)。0 で停止。アニメーション可能で、Inspector に表示される数値がそのままアニメーションの値になります。
Count(筋の本数)同時に周回する筋の本数(1〜8 の整数)。2 以上で等間隔の複数の光が追いかけ合います。
Pivot Offset(周回中心)筋が周回する中心のオフセット(オブジェクト空間)。通常は (0,0,0) のままで構いません。アバター本体に使う場合は Y を胸の高さ(例: 1.0)に設定すると周回が均等になります。
Edge Fade(透過時の放射抑制)半透明(Transparent / Fade)で本体越しに Sweep が放射状に透けて見える場合に、リムの筋を残して内側の放射だけを抑えます(0〜8・既定 2)。0 で無効。滑らかな曲面(球・有機的なメッシュ)向けの機能です。不透明では裏側が本体に隠れるため効果はありません。 ⚠️ ハードエッジのメッシュ(キューブ等)ではリムの筋も減衰するため、その場合は 0 にしてください(輪郭線そのものは Edge Fade の影響を受けず、常に表示されます)。

光の筋の位置はカメラから見た画面上の角度で生成されるため、どの方向から見ても、いま見えている輪郭を筋が一周します。ビュー(見る側)基準のエフェクトであるため、頭(カメラ)を傾けると周回の起点も画面と一緒に回ります。また VRChat のミラー内では周回方向が反転して見えますが、これは Matcap など視点依存エフェクト共通の仕様です。

  • パーティクルにこのマテリアルを使う場合、輪郭線がパーティクル1粒ごとに描画されるため、パーティクル用途では OFF を推奨します(ON の場合、線は寿命フェードに追従します)。
  • 本機能はシェーダーキーワードを使わないため、有効化してもアップロード時のコンパイル時間(バリアント数)は増えません。OFF 時は描画負荷ほぼゼロですが、専用パスの分だけドローコールが 1 つ増えます。
  • Transparent / Fade 系プリセットでは、本体が半透明になると裏側(輪郭色の内壁)が本体越しに透けて見える場合があります。v34 からは Alpha Sync(既定 ON)により、透けて見える輪郭色が本体の透明度に追従して一緒に薄くなります(本体が完全透明なら線も消えます)。Alpha Sync を OFF にすると従来どおり透明度に関係なく常時表示されます(幾何学的に描くため、どのメッシュでも消えません)。Sweep の放射状の透けが気になる場合は、滑らかな曲面では Sweep の Edge Fade(既定 2)が内側の放射を抑えます(ハードエッジのメッシュでは 0 を推奨)。
SEC. 14 — VFX

Emission(発光・HDR対応)

// 発光・HDR対応

暗闇でも自己発光するマテリアルを作ります。

プロパティ説明
Emission Color HDR / Intensity発光色と強さを調整します。Intensity を上げると Unity の Bloom(光があふれる効果)が綺麗に効きます。
Emission Map発光させたい場所を白黒画像等で指定します。発光の色に使うのは RGB です。アルファは「発光系のマスク」として、下の Emission Map のアルファでマスク・AudioLink・Glitter が共用できます(下記)。
Emission Map のアルファでマスクON にすると、Emission Map のアルファで光る範囲を絞ります(不透明=光る/透明=光らない)。アルファはメインテクスチャと同じ UV で読むため、Scroll や Tiling で発光の模様を動かしても、光る範囲は動きません(例:服の決まった部分の中だけを光の筋が流れる)。初期値は OFF。
Scroll(スクロール)X・Y に速度を入れると Emission Map が流れます(0 で停止)。エネルギーの流動表現等に。入力欄は X/Y のみです(Z/W は未使用)。
Pulse Speed / Pulse Min発光を脈動(明滅)させます。Pulse Speed が点滅の速さ(0 で無効)、Pulse Min が一番暗くなった時の明るさ(0 で完全に消えるまで点滅)。

アルファは Emission・AudioLink・Glitter が共用する 1 枚のマスクです。それぞれの節のチェック(Emission/AudioLink は Emission Map のアルファでマスク、Glitter は マスクに使うチャンネル を アルファ (A))で、読むかどうかを機能ごとに選べます。同じ絵を読むため、同じ範囲に効きます(機能ごとに範囲を分けることはできません)。アルファの無い画像は全面が 1(=マスクなし)として読まれます。Emission Map の Import 設定の Alpha Is Transparency は OFF にしてください(ON だと透明な部分の発光の色が変わることがあります)。どちらの状態も Inspector に警告が出ます。

発光(Emission)も、パーティクルカラーのアルファに追従してフェードイン/アウトします(Fade/Additive、および Transparent のパーティクル寿命フェード時)。Color over Lifetime で発光ごと自然に消えます。

SEC. 15 — VFX

Glitter / Sparkle(プロシージャルラメ・スパークル)

// プロシージャルラメ・スパークル

テクスチャを使わずに、細かな輝きの粒(ラメ/スパークル)を表面に散らす装飾用の発光レイヤーです。粒はシェーダー内でプロシージャルに生成されるため、専用のノイズ画像は不要です。視線を動かすと粒がきらめきます(金属ラメ・フレークのような、見る角度で瞬く表現)。通常の Emission(恒常発光)とは独立した加算レイヤーとして動作するため、Emission を OFF にしても、Glitter だけで発光させられます。

プロパティ説明
Use Glitter機能の有効/無効。ON にすると Intensity が自動で 1 に設定されます(既に値がある場合は維持)。
Glitter Color (HDR)ラメの発光色(HDR)。Intensity を上げると Bloom に影響します。
Intensity発光の強さ(0〜16)。
Shape(形状)粒の形を Point(丸点)/ Star(先端の尖った十字のきらめき)/ Diamond(菱形)/ Fine Dust(高密度の微細ラメ)から選びます。輪郭はどのサイズでもシャープに保たれます(拡大してもぼやけません)。
Space(座標系)粒の基準座標を UV(メッシュの UV に沿う・スクロールが自然・平面/パーティクル向き)/ Object(オブジェクト空間・三面投影〔Triplanar〕で Cube の側面や球の極でも引き延ばしなく均一)/ View(ワールド座標を基準に、粒が常にカメラを向く「ビルボード」表現。メッシュの UV 展開にも面の裏表にも一切影響されません) から選びます。
Grain Scale(粒の大きさ)1 粒の大きさ。値を大きくするほど粒が大きく、小さくするほど細かくなります(既定 181)。粒を小さくするほど自動的に粒の数が増えるため、細かいラメでも密度が不足しません。大きなラメにしたいときは値を上げてください(290 前後で粗めのラメになります)。
Coverage(被覆率)実際に光る粒の割合。0 に近いほどまばらに、1 に近いほど密に光ります(既定 0.6)。
Size(粒サイズ)1粒の充填率(セル内でどれだけ大きく描くか・既定 0.7)。密度と独立しているため、粒を大きくしたまま密度を上げても欠けません(粒の絶対サイズは Grain Scale で調整します)。
View Sharpness(視線シャープさ)視線に対するきらめきの鋭さ。値が大きいほど、特定の角度で鋭く一瞬光ります。
Flicker Speed(明滅速度)明滅の速さ(0 で明滅なし)。明滅は粒ごとにランダムで、速さ・タイミングが 1 粒ずつ違います。さらに周期の異なる 2 つの波を重ねているため、同じ場所で同じ点滅が繰り返されるパターンは実質知覚できません。
Scroll (X,Y)粒を流れるように動かす速度(UV/Object それぞれの座標を平行移動)。入力欄は X/Y のみです(Z/W は未使用)。
AudioLink 連動ON にすると、ラメの明滅を音(AudioLink)に合わせて駆動します。Band(反応させる音域)と Sound Strength(音の掛かり具合)で調整します。
Emission Map で局在化ON にすると、Emission Map でラメの出る範囲を絞ります。マップは Emission と共用です(未設定なら全面)。
マスクに使うチャンネル局在化に使う Emission Map のチャンネルを選びます。明るさ (RGB)(初期値)=発光の絵の明るさ(白=出る/黒=出ない)。発光と同じ UV で読むため、Emission の Tiling・スクロールに合わせて動きます。アルファ (A)=Emission Map のアルファ(不透明=出る/透明=出ない)。メインテクスチャと同じ UV で読み、Emission の Tiling・スクロールの影響を受けません。発光の色(RGB)とは別に描けるので、光らせない場所にもラメを置けます。アルファは Emission・AudioLink のマスクと共用です(Emission 節の「Emission Map のアルファ」の説明を参照)。

ラメは Glitter Color × Intensity ×(形状 × 視線グリント × 明滅 ×(AudioLink)× マスク) で計算される加算発光レイヤーです。テクスチャを使わないプロシージャル生成のため、サンプラー・キーワードを増やしません(アップロード時のコンパイル負荷は据え置き)。発光は透明度に追従し、パーティクルの寿命フェードや半透明にも自然に馴染みます。Glitter Color / Intensity / Flicker Speed などはアニメーションも可能です。

①アルファの無い画像(JPG やアルファ無しの PNG)はアルファが全面 1 として読まれるため、ラメは全面に出ます。②Emission Map の Import 設定の Alpha Is Transparency は OFF にしてください。ON だと Unity が取り込み時に透明な部分の色を周りの色で埋めるため、ラメを置かない場所の発光の色が変わることがあります。どちらの状態も Inspector に警告が出ます。

AudioLink 連動 は、他の音連動機能と同様、VRChat ワールド側に AudioLink システムが導入されている場合にのみ動作します(非対応ワールドでは明滅の音連動のみ自動で無効化され、ラメ自体は通常どおり表示されます)。Object 座標系はオブジェクト空間基準のため、アバターが移動・回転しても粒が表面に固定されて追従します(UV はメッシュの UV 展開に依存するため、UV が引き延ばされた箇所では粒も伸びます)。両面表示(Cull Off)のメッシュでは背面の粒も正しく光ります。

粒がワールド座標に紐づいたまま常にカメラを向くため、メッシュの UV 展開・面の向き・裏表を一切考慮しません。Object と同じく三面投影(Triplanar)で合成しているため、斜めから見た面でも粒が引き延ばされません。UV が用意されていないメッシュや、UV が大きく歪んだ箇所、両面ポリゴンでも粒の形と大きさが均一になります。オブジェクトのスケールにも左右されないため、複数のメッシュにまたがっても粒の大きさが揃います。VR でも左右の目で粒がずれません。なお、カメラを回すと粒の並びが入れ替わります(常に正面を向く表現のための仕様です)。

SEC. 17 — VFX

Dissolve(ディゾルブ / 消失エフェクト)

// 消失エフェクト

オブジェクトをノイズ模様に合わせて溶かすように消滅・出現させる機能です。

プロパティ説明
Dissolve Texture溶け方の基準となるノイズ画像を設定します。
Threshold消失の進行度(-1.0=完全表示 〜 1.1=完全消去)。これをアニメーションさせることで美しい消失エフェクトが作れます。
Noise Scaleノイズパターンの細かさ(1=標準 / 10=細かい)。オブジェクト空間・Triplanarマッピングを採用しているため、スケール変更や面の向きに関わらず均一な模様が維持されます。
Edge Width / Edge Color溶け際(エッジ)の発光幅とHDRカラーを指定します。

溶け際(エッジ)の発光は、パーティクルカラーのアルファ(不透明度)に追従してフェードイン/アウトします(Fade/Additive、および Transparent のパーティクル寿命フェード時)。Transparent のガラスマテリアルを Dissolve で消す演出でも、エッジ発光ごと自然に消えます。

SEC. 18 — ADVANCED

アニメ・パーティクル連携

// animation properties & particle system

# Particle Color(パーティクルとの連携)

プロパティ説明
Vertex Color Blend Mode既定は None=Particle System の頂点カラーを受け取りません(Color / Color over Lifetime / Color by Speed で付けた色も、そのアルファも届きません)。パーティクルに使うマテリアルでは Multiply(乗算)に変更してください。Multiply にすると Particle System 側の色を受け取り、パーティクルの寿命に合わせたフェード(Color over Lifetime のアルファ)も効くようになります。アバターや小物など、メッシュの頂点カラーが意図せず乗ってほしくない用途では None のままにします。

パーティクルは何枚も重なって描画されるため、映り込みの計算が重なった枚数ぶん積み上がって描画負荷になります。パーティクルの見た目に映り込みが要ることはほとんどないため、Vertex Color Blend Mode を Multiply にするマテリアルでは PBR の Reflection Strength を 0 にしておくのが基本です(0 なら計算ごとスキップされ、負荷はゼロになります)。この組み合わせになっていると Inspector に警告が出ます。なお Unlit モード(Inspector の Unlit モード (光を無視))を ON にしている場合は、映り込みの計算そのものがスキップされるため負荷はかからず、警告も出ません。

# Soft Particles(ソフトパーティクル)

半透明(Fade/Additive等)のオブジェクトが、地面や壁などの不透明オブジェクトにめり込む際の不自然な境界線を消し、滑らかに溶け込ませる機能です。

プロパティ説明
Fade Distance境界線がフェードアウト(透ける)距離を調整します。

ZWrite が Off の時(半透明プリセット時)にのみ動作します。また、VRChatのサムネイルカメラ等(正投影カメラ)では不具合を防ぐため自動で無効化されます。

ソフトパーティクルは、VRChat ワールド側のカメラが「深度テクスチャ」を生成している場合にのみ動作します。具体的には、ワールドが Deferred Rendering、ポストプロセスを使用、または他のソフトパーティクルシェーダーを使用している場合に有効になります。
上記の条件を満たさないシンプルな Forward Rendering ワールドでは、ソフトパーティクル機能は自動的に無効化され、通常の半透明描画として表示されます。
これは VRChat ワールド側のレンダリング設定に依存する仕様上の制約であり、アバター側のシェーダーから制御することはできません。他のVRChat用シェーダーでも同様の制約があります。
【未対応ワールドでの挙動】 境界線が残った状態で半透明描画されますが、エフェクト自体は正常に表示されます。完全透過などの破綻は発生しません。

アニメーションから操作する方法

Unity Animator で以下のプロパティ名をキーフレームに追加することで、時間経過でエフェクトを動かせます。

Material._Color // Color (RGBA) ─ 全体の色 Material._ColorIntensity // Float ─ 全体の明るさ Material._HueShift // Float ─ 色相シフト (0〜1) Material._Saturation // Float ─ 彩度 (1=無変化) Material._Brightness // Float ─ 明度 (1=無変化) Material._Layer1Color // Color (HDR) ─ テクスチャレイヤーの色 Tint Material._Layer1Opacity // Float ─ レイヤー合成強度 (0〜1) Material._Layer1AlphaMask // Float (0/1) ─ 透明マスクの ON/OFF(出現・消失演出) Material._FakeShadowColor // Color ─ Fake Shadow Texture の影色 Material._FakeShadowStrength // Float ─ Fake Shadow Texture の濃さ (0=無効) Material._FakeShadowOffset // Vector ─ Fake Shadow Texture の位置 (X,Y) Material._FSMeshColor // Color ─ Fake Shadow Mesh の影色 Material._FSMeshStrength // Float ─ Fake Shadow Mesh の濃さ (0=無効) Material._FSMeshDistance // Float ─ Fake Shadow Mesh の落とす距離 (-2〜2) Material._FSReceiveRange // Float ─ Fake Shadow Mesh の影が届く奥行き Material._EmissionColor // Color (HDR) ─ 発光色 Material._EmissionIntensity // Float ─ 発光の強さ Material._EmissionPulseSpeed // Float ─ 発光の脈動速度 (0=無効) Material._DissolveThreshold // Float ─ 消失の進行度(-1.0 〜 1.1) Material._RimColor // Color (HDR) ─ 輪郭光の色 Material._RimPower // Float ─ 輪郭光の太さ Material._RimIntensity // Float ─ 輪郭光の強さ Material._RimBlendMode // Float (0/1) ─ 0=Add(加算発光) / 1=Multiply(暗色化・黒リム) Material._RimEnvAdapt // Float ─ リムの環境順応 (0〜1) Material._RimEnvFloor // Float ─ リムの暗所の下限 (0〜1) Material._RimEnvTint // Float ─ リムを環境色になじませる度合い (0〜1) Material._RimUseMask // Float (0/1) ─ リムのマスクの ON/OFF Material._RimShadeColor // Color ─ Rim Shade(暗い縁)の色 Material._RimShadeIntensity // Float ─ Rim Shade(暗い縁)の濃さ Material._BackLightColor // Color (HDR) ─ 逆光ライトの色 Material._BackLightIntensity // Float ─ 逆光ライトの強さ Material._BackLightEnvAdapt // Float ─ 逆光の環境順応 (0〜1) Material._BackLightEnvFloor // Float ─ 逆光の暗所の下限 (0〜1) Material._BackLightEnvTint // Float ─ 逆光を環境色になじませる度合い (0〜1) Material._OutlineColor // Color (HDR) ─ 輪郭線の色 Material._OutlineIntensity // Float ─ 輪郭線の発光の強さ Material._OutlineBaseGlow // Float ─ Sweep の管の基本輝度(筋とのコントラスト) Material._OutlineSelfGlow // Float ─ 輪郭線の自己発光度合い(0=ライティング追従 / 1=自己発光) Material._OutlineSweepSpeed // Float ─ Sweep の周回速度(符号で方向反転) Material._UseOutlineMask // Float (0/1) ─ 輪郭線マスクの ON/OFF Material._OutlineAlphaSync // Float (0/1) ─ 輪郭線を本体の透明度に追従させるか Material._MatcapStrength // Float ─ Matcap の合成強度 Material._MatcapColor // Color ─ Matcap のカラー Tint Material._Matcap2Strength // Float ─ 2枚目 Matcap の合成強度 Material._Matcap2Color // Color ─ 2枚目 Matcap のカラー Tint Material._Matcap3Strength // Float ─ 3枚目 Matcap の合成強度 Material._Matcap3Color // Color ─ 3枚目 Matcap のカラー Tint Material._ReflectionStrength // Float ─ 反射影響度(環境反射の強さ) Material._LightMinLimit // Float ─ 環境光クランプ下限 Material._LightMaxLimit // Float ─ 環境光クランプ上限 Material._ReceiveShadow // Float (0/1) ─ 落ち影受光の ON/OFF Material._ShadowPseudoLight // Float ─ 擬似光の強さ(影の向きの決め方・0〜1) Material._UseShadow2nd // Float (0/1) ─ 2 影の ON/OFF Material._UseShadow3rd // Float (0/1) ─ 3 影の ON/OFF Material._UseShadowBorderColor // Float (0/1) ─ 影の境界の色づけの ON/OFF Material._Shadow2ndColor // Color ─ 2 影の色(不透明度=強度) Material._Shadow3rdColor // Color ─ 3 影の色(不透明度=強度) Material._ShadowBorderColor // Color ─ 影の境界の色づけの色(不透明度=強度) Material._UseDitherFade // Float (0/1) ─ ディザ擬似半透明の ON/OFF Material._DistanceDarkenColor // Color ─ 距離減光の色 Material._DistanceDarkenStrength // Float ─ 距離減光の強さ Material._AudioLinkEmission // Float ─ AudioLink 反応量 (Master) Material._AudioLinkEmissionColor // Color (HDR) ─ AudioLink 発光色 Material._AudioLinkEmissionIntensity // Float ─ AudioLink 発光の強さ Material._GlitterColor // Color (HDR) ─ Glitter 発光色 Material._GlitterIntensity // Float ─ Glitter 発光の強さ Material._GlitterSpeed // Float ─ Glitter 明滅速度 Material._GlitterScrollSpeed // Vector ─ Glitter スクロール速度 (X,Y) Material._GlitterALStrength // Float ─ Glitter AudioLink の掛かり具合

手順(VRChat Avatar 例)

  1. Animator Controller を開く
  2. 対象の GameObject を選択した状態でキーフレームを追加
  3. Add Property → Skinned Mesh Renderer(または Mesh Renderer)→ Materials → 対象マテリアル → 上記プロパティ名で追加

パーティクル(Particle System)での使用について

本シェーダーはパーティクルエフェクトへの使用を想定して設計されています。

  1. Particle System の Renderer > Material に本マテリアルをセット
  2. マテリアルの Vertex Color Blend Mode を Multiply に変更

以上で動作します。 Enable Mesh GPU Instancing のチェックや Custom Vertex Streams などの追加設定は一切不要です。

SEC. 19 — MISC

パフォーマンス・利用規約

// performance, fallback, license, changelog

パフォーマンスと最適化

本シェーダーは、VRChat環境での軽量動作とコンパイル速度のために最大限の最適化を行っています。

  • アバター用途で使われない描画パス(ShadowCasterやDeferredパス)や、フォグ・ライトマップ用の内部バリアントを完全にパージし、ビルド(アップロード)時間を大幅に短縮しています。

VRChat Fallback について

シェーダーには "VRCFallback" = "Standard" タグが設定されています。

VRChat 内で他のユーザーの Safety 設定によりカスタムシェーダーが無効化された場合でも、自動的に Unity 標準の Standard シェーダーに置き換わり、アバターがピンク色(マテリアルエラー)になるのを防ぎます。

リファレンス・謝辞(References & Acknowledgements)

ARLitToon の開発にあたり、以下の先行するシェーダー・ライブラリの仕様や設計を参考にさせていただきました。素晴らしい成果を公開されている各プロジェクト・作者の皆さまに、敬意と感謝を表します。

  • lilToon(lilxyzw)— アバター向けトゥーン表現の機能仕様を参考にしました。https://github.com/lilxyzw/lilToon
  • OpenLit(lilxyzw)— ライティング設定、とくに多数のリアルタイムライト環境における明るさ制御(追加ライトの扱いと上限クランプ)の考え方を参考にしました。https://github.com/lilxyzw/OpenLit
  • Unity Built-in シェーダー(Unity Technologies)— 環境光・環境反射(Global Illumination/リフレクションプローブ)の解決に、Unity 標準のライティング経路を利用しています。
  • AudioLink(AudioLink プロジェクト)— 音楽連動の発光機能は、AudioLink の仕様(ワールドがグローバルに提供する音響データテクスチャ)に準拠して実装しています。https://github.com/llealloo/audiolink

本シェーダーは上記のコードをそのまま流用したものではなく、公開されている仕様・設計思想を参考に独自実装したものです。

利用規約(ライセンス)

ARLitToon 利用規約 第2版(本規約を同梱した版の公開日から施行します)

本シェーダーを入手した時点、または利用した時点で、以下の利用規約に同意したものとみなします。

# 第1条(適用範囲)

  1. 本規約は、本規約を同梱した版の ARLitToon およびその改変物に適用されます。
  2. 本規約の施行前の版には、その版に同梱された利用規約が引き続き適用されます。
  3. 新しい版では利用規約が変更されることがあります。新しい版を入手または利用した場合は、その版に同梱された利用規約が適用されます。
  4. 本シェーダーが他の商品(ヘイローアセット等)に同梱されている場合、本シェーダーの部分には、その商品の利用規約ではなく本規約が適用されます。

# 第2条(定義)

  • 「本シェーダー」:ARLitToon.shader、ARLitToonGUI.cs、ARLitToonBaker.cs、README.md その他 ARLitToon を構成するファイル。
  • 「改変物」:本シェーダーの全部または一部を改変・翻案・移植・流用して作成したもの(他のレンダリングパイプライン向けに変換したものを含みます)。
  • 「ソーシャル VR プラットフォーム」:VRChat その他、利用者が作成したアバター・ワールド等をアップロードし、他の利用者と交流するためのオンラインサービス。
  • 「ソーシャル VR 向けの利用」:ソーシャル VR プラットフォームにアップロードされるアバター・ワールド・アバターギミック・ワールドアイテム等への組み込み、それらの制作・販売・配布、ソーシャル VR プラットフォーム上での使用・撮影・配信、およびそれらの宣伝用の画像・動画の制作と公開(Unity エディタ上での制作・レンダリングを含みます)。
  • 「法人等」:法人および法人格のない団体。ただし、個人事業主および同人サークルは「個人」として扱います。
  • 「個人」:法人等以外の自然人(個人事業主および同人サークルを含みます)。

# 第3条(著作権)

  1. 本シェーダーの著作権は ARL に帰属します。
  2. 改変物においても、本シェーダーに由来する部分の著作権は ARL に帰属します。改変物の利用・配布には本規約が適用されます。

# 第4条(ソーシャル VR 向けの利用)

個人・法人等を問わず、本シェーダー(またはこれを同梱した商品)の入手に要する代金のほかに追加の使用料なく、次のことができます。

  • ソーシャル VR 向けの利用(商用利用を含みます)。
  • 本シェーダーを同梱した3Dモデル(アバター、アバターギミック、ワールドアイテム等)の、ソーシャル VR 向けの販売および配布。
  • 本シェーダーのコードおよび GUI スクリプトの改変(第6条の範囲内)。

# 第5条(ソーシャル VR 向け以外での利用)

  1. 個人は、ソーシャル VR 向け以外での利用(商用利用を含みます)を追加の使用料なく行えます。
  2. 法人等が業務としてソーシャル VR 向け以外で利用する場合(ゲーム、アプリケーション、映像作品等への組み込みを含みます)は、事前に ARL との間で別途ライセンス契約を締結する必要があります。
  3. お問い合わせ先:ALTIMA 公式ショップ(https://altima.booth.pm/)のメッセージ機能

# 第6条(対応レンダリングパイプライン)

本シェーダーおよび改変物は、Unity の Built-in Render Pipeline での利用に限り許諾します。URP・HDRP その他のレンダリングパイプライン向けへの移植・変換およびその利用は、第4条・第5条にかかわらず、ARL の事前の許諾なく行うことはできません。

# 第7条(他の販売経路での提供)

ARL は、本シェーダーを本規約と異なる条件で他の販売経路から提供することがあります。その販売経路で入手した場合は、その販売経路の利用条件が適用され、本規約は適用されません。

# 第8条(同梱配布時の必須ファイル)

ARLitToon シェーダーを作品(アバター・ギミック・ワールドアイテム等)に同梱して配布・販売する場合は、シェーダーが正しく動作するよう、以下の 3 ファイルを必ずセットで同梱してください。

  • ARLitToon.shader(シェーダー本体)
  • ARLitToonGUI.cs(マテリアル Inspector 用 GUI スクリプト/Editor フォルダ内)
  • README.md(本ガイド)

※ ARLitToonGUI.cs が欠けると Inspector のカスタム GUI が表示されず、マテリアルを正しく設定できません。README.md は使用方法と本利用規約を受け取り手に伝えるために同梱してください。

【同梱を推奨するファイル】

  • ARLitToonBaker.cs(テクスチャ焼きこみツール/Editor フォルダ内)

※ こちらは必須ではありませんが、同梱を推奨します。同梱すると受け取り手も Bake to Base(焼きこみ)を使えます。同梱しなくてもシェーダーは完全に正常動作し、焼きこみの機能のみが使えなくなります。
※ 万一この 1 ファイルが原因で Unity のコンパイルが通らない場合(バージョン差や他アセットとの競合など)は、ARLitToonBaker.cs を削除すれば復旧します。必須にしていないのはこのためです。

# 第9条(禁止事項)

  • 本シェーダー(改変物を含みます)単体での無断再配布、転載、および販売(※ご自身の作品に同梱して販売・配布する場合は問題ありません)。
  • ソーシャル VR プラットフォームにおいて、本シェーダーを利用したアバターを「パブリックアバター」としてアップロードする行為(第三者がアバターをクローン・抽出できる状態にすること)。
  • 本規約で許諾されていない範囲での利用。

# 第10条(クレジット表記)

作者名(ARL)や本シェーダー名(ARLitToon)のクレジット表記は任意(不要)です。

# 第11条(免責事項)

本シェーダーの利用によって生じたトラブルや損害について、ARL は、ARL の故意または重大な過失による場合を除き、責任を負わないものとします。

# 第12条(規約の変更)

ARL は、法令の改正その他必要がある場合、民法の定めに従い、あらかじめ変更内容および効力発生日を本 README または販売ページで周知したうえで、本規約を変更することがあります。

# 第13条(準拠法・正文)

本規約は日本法に準拠し、日本語版を正文とします。翻訳版との間に解釈の相違がある場合は日本語版が優先します。