どんなシェーダー?

タピオカトゥーンシェーダーはキャラクター表現に特化したUnity用のシェーダーです。

Built-inのUnityのみ対応しており、URP・HDRPは非対応です。
Vtuberの3DライブやUnity上での写真撮影、動画撮影を想定して設計しています。

VRChat対応版は開発中です。後日同梱します。



構成要素

タピオカトゥーンシェーダーを使った絵作りは、以下のようなイメージとなります。


全ての要素を使っても良いですし、一部だけ取り入れるのも良いと思います。
  • タピオカトゥーンシェーダー / Tapioca Toon Shader

    キャラクターに使うシェーダーです。
  • フェイクコンタクトシャドウシェーダー / Fake Contact Shadow Shader

    前髪の落ち影を表現するシェーダーです。
  • タピオカレンダラー / Tapioca Renderer.cs

    上記2つのシェーダーにライト情報を送るC#スクリプトです。適当なオブジェクトにアタッチして使います。
  • スクリーンスペースアウトラインシェーダー / Screen Space Outline Shader

    追加のアウトラインエフェクトです。画面全体にアウトラインを追加します。
    ステンシルを使ってアウトラインを適用する対象を選べます。
    独立して動作するのでこれだけ使うのもアリです。
  • カスタムポストプロセス / Custom Post Prcess

    画面全体の見た目を調整するために、独自のポストプロセス4種を追加で用意しています。
    独立して動作するのでこれだけ使うのもアリです。
    ※Package Managerから『PostProcessing』をインポートする必要があります。

基本的なトゥーンレンダリング

一般的なトゥーンシェーダーにある機能を一通り揃えています。
MToonシェーダーから見た目を崩さず変換する補助スクリプトも同梱しています。


多数光源のリムライト表現

スポットライトやポイントライトをリムライトの光源として扱うことができます。
キャラクターが照らされている感じがよく出るので、逆光表現やライブの演出に最適です。

以下の画像では、1つのメッシュが複数のリムライトで照らされています。リムライトがあると写真がとても映えます。



明暗を使った演出

独自仕様の発光機能やリムライト機能により、明暗を使った演出ができます。



衣装チェンジ演出

衣装チェンジ演出が簡単に行えます。
「ホワイト発光」機能や「ディゾルブ」機能をタピオカレンダラー(スクリプト)のスライダーで制御できます。

【左:ホワイト発光 + パーティクル】、【中央:ディゾルブ(下から上)】、【右:ホワイト発光 + ディゾルブ(方向無し)】

gif gif gif



前髪の落ち影表現 / Fake Contact Shadow

髪の毛のメッシュを使い、疑似的に落ち影を描画します。
髪の毛の影はルック向上に重要です。



SDF フェイスシャドウマッピング

テクスチャを使って顔の陰(カゲ)を綺麗に制御できるSDF機能です。
SDF用のテクスチャを持っていなくてもOK。シェーダー上で疑似的にテクスチャを作成できます。

SDFによって顔の陰の移り変わりが綺麗になり、鼻や頬下に特徴的な明暗を出せます。



キャラクターと影でライトを分ける

キャラクターを照らすライトと影を落とすライトを分けることができます。

以下の画像では、キャラクターを正面から照らして、床の陰を天井のライトで出しています。

アップデート情報

2025年10月1日 ver 1.0.1

  • スクリーンスペースアウトラインをタピオカレンダラーから独立して使えるように変更しました。

    カメラを参照する必要があります。詳しくはスクリーンスペースアウトラインの項目をご覧ください。
  • スクリーンスペースアウトラインを軽量化しました。

    同梱のプレハブの形状をCube→Quadに変更して軽量化しています。(描画コストが半分になります)
  • タピオカレンダラーのスクリプトを修正しました。

    長時間(12時間など)の使用でUnityがクラッシュする可能性があったため修正しました。

タピオカレンダラー / Tapioca Renderer.cs

タピオカレンダラーはマテリアルにライト情報を送るC#スクリプトです。
タピオカトゥーンシェーダーはシーン中のライトを自動取得しないので、タピオカレンダラーからライト情報を送る必要があります。
(ライトの自動取得をせずスクリプトから送ることで実現可能な表現がいくつかあるためです)

注意事項

※ver 1.0.1で下記の注意事項は不要になりました。
シーン中に"MainCamera"タグを設定したカメラを必ず用意してください。
無い場合はNullReferenceエラーが出ます。
※内部で"MainCamera"タグを設定したカメラに自動でアクセスし、法線情報を出力する設定にしています。スクリーンスペースアウトラインを使うのに必要です。

使い方

空のGame Objectを作成し、Add ComponentからTapioca Rendererを追加。
以下の設定項目を読んで、マテリアルとライトを設定すると即時動作します。
(シーン再生しなくても動作します)

設定項目

  • Target Materials

    ライト情報を送る対象のマテリアル。
  • Enable Directional Light

    チェックを有効にすると、ディレクショナルライトの情報をマテリアルに送信します。
  • Directional Light Intensity Coef

    ディレクショナルライトに係数を掛けて送信します。
  • Directional Light

    ライト情報を送信するディレクショナルライトをセットします。
  • Enable Rim Spot Light

    チェックを有効にすると、スポットライトの情報をマテリアルに送信します。
    ※スポットライトは、リムライト機能にのみ影響があります。
  • Rim Spot Light Intensity Coef

    スポットライトに係数を掛けて送信します。
  • Spot Lights

    ライト情報を送信するスポットライトをセットします。
  • Enable Rim Point Light

    チェックを有効にすると、ポイントライトの情報をマテリアルに送信します。
    ※ポイントライトは、リムライト機能にのみ影響があります。
  • Rim Point Light Intensity Coef

    ポイントライトに係数を掛けて送信します。
  • Point Lights

    ライト情報を送信するポイントライトをセットします。
  • Enable SDF

    チェックを有効にすると、SDF機能に必要な顔の向きをマテリアルに送信します。
  • Head Transform

    キャラクターの頭のボーン、またはキャラクターの顔の正面方向がわかるオブジェクトをセットします。
  • Head Forward Axis

    上記でセットしたボーンまたはオブジェクトの、顔の正面方向を表すローカルベクトルを指定します。
    X、Y、Z、-X、-Y、-Zから選択。
  • Enable White Emission

    チェックを有効にすると、ホワイト発光機能を一斉に操作します。
  • White Emission

    ホワイト発光の強度を指定します。
  • Enable Dissolve

    チェックを有効にすると、ディゾルブ機能を一斉に操作します。
  • Dissolve Threshold

    ディゾルブ機能の閾値を指定します。

MToon→Tapioca変換

MToonシェーダーからタピオカトゥーンシェーダーに自動変換できるスクリプトを同梱しています。

使い方

左上のメニューからStudioMaron > Convert MToon to Tapioca Toonを開く。

出てきたウィンドウに変換したいマテリアルをセットする。

Convertボタンを押下。

image

おすすめ設定値

タピオカトゥーンシェーダーのパラメータのうち、いくつかの項目でおすすめな設定値があります。

影 (カゲ/シャドウ)

目や顔は機能OFFにする。
他は機能ONにして、お好みの影色にする。

服や肌に影が投影されます。(以下の画像では手の影が服に映っている)



発光(エミッション)

目のマテリアルの発光機能をONにし、色は白色、発光テクスチャに目のテクスチャをセットする。

「ディレクショナルライトの明るさとリンクする閾値」を0.2~0.5にする。

暗くすると良い感じに光ります。
(目以外も光る場合は目以外を黒塗りにしたテクスチャを作る必要あり)

image



リムライト

目や顔は機能OFFにする。
他は機能ONにして、色を白色のIntensity = 2にする。

閾値 = 0.2 ~ 0.3、ぼかし = 0.2 ~ 0.3
「スポットライト/ポイントライトを使う」にチェックを入れる。
「影領域のリムを削除」にチェックを入れる。

タピオカレンダラーにセットしたスポットライトやポイントライトでリムライトを作ります。
照らされてる感が良く出ます。



リム影

肌のマテリアルのリム影機能をONにし、色を薄暗い赤色にする。

閾値 = 0.2 ~ 0.4、ぼかし = 0.2 ~ 0.4

肌に立体感が出ます。



その他

標準のポストプロセスのBloomを使う際はIntensity = 3、Threshold = 1くらいを推奨します。

おすすめライティング

キャラクターをきれいに魅せるために、複数のライトを使ってキャラクターをライティングするのをおすすめします。
以下のような設定にすると、目的ごとにライトを分けることができます。

  • キャラクターのレイヤーを変更する

    キャラクターを専用のレイヤーにします。(以下、キャラクターレイヤーとします)
    ※Unityのレイヤー機能がわからない場合は調べてください。
  • キャラクターの明暗を制御するディレクショナルライト

    タピオカレンダラーにセットするディレクショナルライトです。シャドウなし、Culling MaskはNothingを推奨。
    ※タピオカレンダラーによってライト情報を直接送っているので、Culling Maskをキャラクターレイヤーにする必要はありません。
    gif
  • キャラクターの影を制御するディレクショナルライト

    キャラクターが自分自身に投影する影を出すためのライトです。シャドウあり、Culling Maskはキャラクターレイヤーのみ、Intensityを高めにします。
    タピオカトゥーンシェーダーは最も優先度の高いディレクショナルライトの影だけを取り込むので、Intensityを上げて優先度を上げます。
    (シャドウありのディレクショナルライトのうち、Intensityが最も高いライトが優先される模様)
    gif
  • キャラクターの影を床に投影するその他のライト

    床などに影を落とすためのライトです。(ディレクショナルライト、スポットライト、ポイントライトどれでも)
    シャドウあり、Culling Maskはキャラクターレイヤーを含める。
    キャラクターの見た目には影響せず、床などに投影する影を制御できます。
    gif

レンダリング

  • レンダリングタイプ

    Opaque(不透明)、Cutout(カットアウト)、Transparent(半透明)、TransparentWithZwrite(深度書き込みありの半透明)
  • 両面描画

    メッシュの裏面を描画します。
  • Render Queue

    レンダリングタイプに応じて自動で設定されます。Transparent同士の描画順序を制御したいときは調整してください。

ステンシル

特定の領域だけに描画する「マスク作成」「マスク適用」の仕組みです。

メッシュを描画するときに、描画するピクセルに透明な番号を「書き込む」または
「既に書かれている数値を読み込んで、条件に合う場合のみメッシュを描画する」ことができます。

前髪よりも眉毛を優先して描画したい場合によく使われます。
タピオカトゥーンシェーダーでは、フェイクコンタクトシャドウやスクリーンスペースアウトラインを使うときにステンシルを使います。

  • ステンシル Ref

    ステンシル番号。0から255までの任意の数字を選択。
    ステンシルを使わない一般的なメッシュは自動的に0番になる。
  • ステンシル Comp

    描画する条件の設定。デフォルトは「Always」(=ステンシル関係なく常に描画する設定)

  • ステンシル Pass

    メッシュの描画後、描画した領域のステンシルを上書きするかどうかの設定。
    「Keep / そのまま」、「Zero / 0にする」、「Replace / ステンシルRefで上書きする」

ベースカラー

全体のベースとなる色です。

image

  • カラー

    メインのカラーです。メインテクスチャと乗算します。
  • メインテクスチャ

    メインのテクスチャです。Tiling(タイリング)とOffset(オフセット)を設定できます。
  • アルファカット閾値

    テクスチャのアルファ値がこの値より小さい場合に描画をカットします。

陰 (カゲ/シェイド)

光源の反対側の色です。

image

  • 陰色

    陰の部分の色です。陰テクスチャと乗算します。
  • 陰テクスチャ

    陰の部分のテクスチャです。空欄・または白色の場合はメインテクスチャを代用します。
  • 閾値

    陰の閾値です。
  • ぼかし

    陰のぼかし幅です。
  • ボーダーカラーの使用

    ぼかし部分に挿し色を追加します。
  • ボーダーカラー

    ぼかし部分の挿し色です。挿し色はオーバーレイで重ねます。

SDF フェイスシャドウマッピング

顔の陰を白黒のテクスチャで制御する手法(俗称)です。

通常はキャラクター毎にSDF専用の特殊なテクスチャが必要ですが、タピオカトゥーンシェーダーではテクスチャのスロットを
5つ用意しているので、同梱のテクスチャを合成して簡易作成できます。


  • 閾値

    陰の閾値です。推奨値は0.5です。
  • ぼかし

    陰のぼかし幅です。推奨値は0.05です。
  • マスクテクスチャ

    SDFを適用する範囲のマスクです。顔と身体のマテリアルが同じ場合などに使います。
  • 顔の中心のUVのX座標

    UV上で顔の中心位置(=鼻の中心)がどこにあるかを指定します。多くのモデルは0.5(テクスチャの真ん中)だと思います。
    SDFテクスチャを内部で左右反転する時の中心軸に使います。

    ※SDF用の白黒テクスチャは光源と顔の向きの角度が「0~180度」のときの陰の移り変わりを表しています。「180~360度」では左右を反転してサンプリングします。
  • SDFデバッグ

    テクスチャの位置調整をする時にオンにします。
    「OFF」、「ON」、「Mirror(左右反転のデバッグ)」
    SDFテクスチャを90%混ぜた状態で出力するので、調整しやすくなります。

  • SDF 1~5枚目(加算 / 減算)

    「None / 無効」、「Additive / 加算」、「Subtract / 減算」
    基本的には「Additive / 加算」でよいです。パーツ合成してSDFテクスチャを簡易作成するときは「Subtract / 減算」も使います。
  • テクスチャ

    SDFテクスチャをここにセットします。
    パーツ合成してSDFテクスチャを簡易作成するときは、Tiling(タイリング)とOffset(オフセット)と回転で位置調整をし、
    強度でテクスチャを反映させる強さを調整します。

SDFテクスチャの合成

タピオカトゥーンシェーダーはSDFのテクスチャを5枚まで設定できます。
これにより、白黒のテクスチャを組み合わせてSDFテクスチャを疑似的に作成できます。

unitypackageに同梱しているSDFパーツ用テクスチャ

image image image

上記パーツを組み合わせて疑似的に作成したSDFテクスチャ
image

作成するときのコツは以下の通りです。
  • 顔全体にグラデーションのテクスチャを置く
  • 目の下に逆三角形のテクスチャを置く
    (レンブラントライトという)
  • 鼻の右側に明るいテクスチャを置く
  • 鼻の反対側にSubtract設定で同じテクスチャを置く

顔のテクスチャと重ねた画像
image

ぜひSDF機能を使ってみてください。

影 (カゲ/シャドウ)

他のオブジェクトからの落ち影です。乗算で描画します。
タピオカトゥーンシェーダーでは陰と影で色が別になります。

シャドウありのディレクショナルライト1本を自動取得して影を描画します。
そのため、タピオカレンダラーにセットしたディレクショナルライトはシャドウなしにして、
別のシャドウありのディレクショナルライトを使って影を作ることができます。

例:衣服の影色を薄い緑色にしている


また、スポットライトやポイントライトからのシャドウは無視するので、これらで床に落とす影を作っても、キャラクターの見た目が損なわれません。

例:天井のスポットライトで床に影を出しているが、キャラクターには変な影が出ていない


  • 影色

    影の部分の色です。ベースカラーに乗算します。
  • マスクテクスチャ

    マスクテクスチャです。

ハイライト (スペキュラー)

ツヤ感を出す機能です。金属や革製のジャケット、靴などに使うとよいです。

image

  • ハイライトの色

    ハイライトの色です。ベースカラーに加算します。
  • マスクテクスチャ

    マスクテクスチャです。
  • ディレクショナルライトを混ぜる

    ライトを乗算します。
  • ディレクショナルライトの明るさとリンクする閾値

    ライトの明るさが閾値以下になると、ハイライトの強度を下げます。
    真っ暗でもハイライトを反映したい場合は、この値を0にしてください。

ノーマルマップ

凹凸を出す機能です。

image

  • ノーマルマップ

    ノーマルマップを入れます。
  • 強度

    ノーマルマップの適用強度です。
  • タイリング

    ノーマルマップのタイリングです。

発光 (エミッション)

発光機能です。タピオカトゥーンシェーダーでは独自処理によりスッキリした発光になるようにしています。

image


image


  • 発光色

    発光の色(HDRカラー)です。発光の強度を上げたい場合はカラーのIntensityを上げてください。
  • 発光テクスチャ

    発光テクスチャです。発光色に乗算します。
  • ディレクショナルライトの明るさとリンクする閾値

    ライトの明るさが閾値以下になると、発光の強度を下げます。
    真っ暗でも発光を反映したい場合は、この値を0にしてください。

    おすすめは0.2~0.5です。(以下は、目に適用した例)

マットキャップ

マットキャップ機能です。ベースカラーに加算します。
マットキャップテクスチャの色を強く出したい場合はベースカラーを黒にしてください。

【左:ベースカラー = 薄い赤】【右:ベースカラー = 黒】

image image


マットキャップは加算処理にしているので、黒色系のマットキャップテクスチャを使うことでツヤ感を追加することができます。
(以下の画像は自作のマットキャップテクスチャなので自由に使ってもらって構いません)

image image


  • マットキャップテクスチャ

    マットキャップテクスチャです。
  • テクスチャの端をフェードアウト処理

    テクスチャによっては端が汚くなってしまうことがあります。これを有効にすると黒色でフェードアウトします。
  • ディレクショナルライトの明るさとリンクする閾値

    ライトの明るさが閾値以下になると、マットキャップの強度を下げます。
    真っ暗でもマットキャップを反映したい場合は、この値を0にしてください。

リムライト

リムライト機能です。ベースカラーに加算します。
照明に照らされている感を出せる機能で、とてもおすすめです。
タピオカトゥーンシェーダーでは、光源を3種類用意しています。(複数選択可)

【左:光源が全方向】【中央:光源がディレクショナルライト】【右:光源がスポットライト/ポイントライト】

image image image

  • リム色

    リムの色(HDRカラー)です。Intensityを2くらいにするのがおすすめ。
  • マスクテクスチャ

    マスクテクスチャです。
  • 閾値

    リムの閾値です。
  • ぼかし

    リムのぼかし幅です。
  • リムの光源選択(複数選択可)

    シンプルなリムを使う:全方向からリムを反映します。個人的には不要です。

    ディレクショナルライトを使う:タピオカレンダラーにセットしたディレクショナルライトをリムの光源として反映します。

    スポットライト/ポイントライトを使う:タピオカレンダラーにセットしたスポットライト/ポイントライトをリムの光源として反映します。
    Vtuberの3Dライブ、写真撮影、動画撮影におすすめです。
  • 影領域のリムを削除

    影(シャドウ)機能が有効な時、影の領域でリムを無効にします。

リム陰(影/シェイド)

リム陰の機能です。ベースカラーに乗算します。
端の方に暗さを出す機能で、立体感が出ます。

image

  • リム陰の色

    リム陰の色です。肌に使うなら薄暗い赤がおすすめ。
  • マスクテクスチャ

    マスクテクスチャです。
  • 閾値

    リム陰の閾値です。
  • ぼかし

    リム陰のぼかし幅です。

アウトライン

アウトライン機能です。メッシュの法線を反転して押し出す方式です。
スクリーンスペースアウトラインの方を使う場合、こちらは無理に使わなくてもよいです。

image

  • アウトラインの太さ

    アウトラインの太さです。
  • マスクテクスチャ

    マスクテクスチャです。
  • カラーの処理

    ベースカラーを混ぜる:アウトラインとベースカラーを乗算します。

    ディレクショナルライトを混ぜる:アウトラインとライトを乗算します。

    リムライトを混ぜる:アウトラインにリムライトを加算します。
  • ディレクショナルライトの明るさとリンクする閾値

    ライトの明るさが閾値以下になると、アウトラインの色を黒に近づけます。
    真っ暗でもアウトラインを反映したい場合は、この値を0にしてください。

UVスクロール

UVスクロール機能です。

  • マスクテクスチャ

    マスクテクスチャです。
  • スクロールスピードX、Y、回転

    テクスチャのスクロールの速さです。

ホワイト発光

白色限定の追加発光機能です。衣装チェンジなどの演出に使います。

gif

  • 発光強度

    発光の強度です。ホワイト発光の機能をオンにしておくとタピオカレンダラーから操作できます。

ディゾルブ (消失表現)

ディゾルブ機能です。出現、消失、衣装変更の演出に使えます。

gif gif

  • 閾値

    ディゾルブの閾値です。0が通常状態、1で完全に消えます。
    ディゾルブ機能をオンにしておくと、この値をタピオカレンダラーから操作できます。
  • エッジの色

    消失時の端の色(HDRカラー)です。Intensityは2.0くらいがおすすめです。
  • エッジの太さ

    エッジの色の太さです。
  • ディゾルブ方向

    「None / 通常のディゾルブ」、「To Top / 画面下から上に向かってディゾルブ」、「To Bottom / 画面上から下に向かってディゾルブ」
  • ノイズ強度

    「To Top」、「To Botom」の時のみ有効。ノイズの混ぜ具合です。
  • ノイズのスケール

    ノイズの細かさです。数字が大きいほど細かくなります。

フェイクコンタクトシャドウ / Fake Contact Shadow

前髪の落ち影を疑似的に表現します。
個人的に、髪の毛の影はルック向上に大きく貢献すると考えています。

ステンシルを設定し、不要な描画を適切にマスクする必要があります。

ステンシルとは

メッシュを描画するときに、描画するピクセルに透明な番号を「書き込む」または
「既に書かれている数値を読み込んで、条件に合う場合のみメッシュを描画する」という機能。

例えば、顔のメッシュを描画するときに「ステンシル番号:2番」を書き込む設定にして、
フェイクコンタクトシャドウシェーダーは「ステンシル番号が2番の時のみ描画する」という設定にすれば、
髪の毛の落ち影は顔の領域以外で描画されない。


使い方

キャラクターの髪の毛のメッシュを複製し、フェイクコンタクトシャドウシェーダーを使ったマテリアルを割り当てます。(以後、髪影マテリアル)
(髪影マテリアルはタピオカレンダラーのTarget Materialsに追加してください)


以下のパラメータを読んで、ステンシルを設定してください。

パラメータ

  • ステンシル/ Stencil

    Stencil Ref:ステンシル番号
    Stencil Comp:描画条件
    Stencil Pass:ステンシルの書き込み処理

    フェイクコンタクトシャドウシェーダーはステンシルを適切に設定してマスク処理する必要があります。

    キャラクターの顔のマテリアルと髪影マテリアルのステンシルのパラメータを以下のように設定します。
    ・顔のマテリアル:【Stencil Ref = 2】【Stencil Comp = Always】【Stencil Pass = Replace】(=ピクセルのステンシル値を2に置き換え)
    ・髪影マテリアル:【Stencil Ref = 2】【Stencil Comp = Equal】【Stencil Pass = Keep】(=ピクセルのステンシル値が2の時のみ描画)

    これで、複製した髪のメッシュは顔の領域のみに描画されます。
  • Shadow Color

    疑似影の色です。顔のカラーに乗算されます。
  • Shadow Color Texture

    疑似影のテクスチャです。
  • Offset Position

    描画のオフセットです。髪のメッシュを複製しているので、少しずらして描画します。
    ずれる方向はディレクショナルライトの照射方向です。
    前髪と顔が近すぎるキャラクターは小さい数値にした方が良いかもしれません。
  • Light Intensity Link Border

    ライトの明るさが閾値以下になると、疑似影の色を透明に近づけます。
    ライトの明るさが0.5くらいの状態で調整すると良いかと思います。
  • Mask Texture

    マスクテクスチャです。

スクリーンスペースアウトライン / Screen Space Outline

画面効果でアウトラインを描画するシェーダーです。
画面の深度情報と法線情報からアウトラインを検出します。
※Unityの仕様上、レンダリング設定がTransparentなオブジェクトはアウトラインが検出できません。


画面全体に効果が適用されてしまうので、ステンシルを設定して適切にマスクする必要があります。

ステンシルとは

メッシュを描画するときに、描画するピクセルに透明な番号を「書き込む」または
「既に書かれている数値を読み込んで、条件に合う場合のみメッシュを描画する」という機能。

例えば、キャラクターのメッシュを描画するときに「ステンシル番号:1番」を書き込む設定にして、
スクリーンスペースアウトラインシェーダーは「ステンシル番号が1番の時のみ描画する」という設定にすれば、
キャラクターの描画領域のみにアウトラインが描画され、背景に影響を及ぼさない。

注意事項

GrabPassを使用しているため、ゲーム画面の解像度が高すぎるとGPU稼働率が大きく上昇します。
お使いのGPUに合わせて、解像度を調整してください。

※タスクマネージャーでGPU使用率を監視しながら解像度を上げていくと、ゲーム画面の解像度に合わせてGPU使用率が爆増するのが観測できます
参考値:RTX 4070 Superにて3000×3000ピクセルでGPU使用率90%越え

ver 1.0.1で、カメラを直接指定することにしたため、下記の注意事項は不要になりました。

シーン中に"MainCamera"タグを設定したカメラを必ず用意し、タピオカレンダラーと共に使用してください。
タピオカレンダラーによって"MainCamera"タグを設定したカメラに自動でアクセスし、法線情報を出力する設定にしています。
この設定ができていない場合は、深度情報のみでアウトラインを描画します。

使い方

  • Assets > _StudioMaron > TapiocaToonShader > ScreenSpaceOutline > Tapioca SS Outline.prefabをキャラクターの近くに置く。

  • シーン上に最低1つ、シャドウありのディレクショナルライトが必要です。
    深度情報の取得に必要です。LayerはNothingでも構いません。深度情報のみでアウトラインを作る場合は不要です。

  • Tapioca SS Outline.prefabに付いているScreenSpaceOutlineコンポーネントのCamera項目に、カメラをアタッチする。
    法線情報の取得に必要です。深度情報のみでアウトラインを作る場合は不要です。

このシェーダーを使ったオブジェクトがカメラに映ると、自動的に画面全体を覆ってアウトラインを描画します。
キャラクターのHipボーンなどに追従させることで、常に効力を発揮するようになります。
(上記のPrefabは1m×1mのQuadです。大きさを調整してキャラクターのHipに追従すればほとんどの場合に効果を発揮します)

パラメータ

  • ステンシル/ Stencil

    Stencil Ref:ステンシル番号
    Stencil Comp:描画条件
    Stencil Pass:ステンシルの書き込み処理

    スクリーンスペースアウトラインはステンシルを適切に設定してマスク処理するのを推奨します。
    マスク処理をしない場合、不要な部分にアウトラインが出てしまいます。

    下の右側の画像での設定値は
    ・顔や目、眉毛のマテリアル:【Stencil Ref = 2】【Stencil Comp = Always】【Stencil Pass = Replace】(=ピクセルのステンシル値を2に置き換え)
    ・髪や身体、服のマテリアル:【Stencil Ref = 1】【Stencil Comp = Always】【Stencil Pass = Replace】(=ピクセルのステンシル値を1に置き換え)
    ・スクリーンスペースアウトライン:【Stencil Ref = 1】【Stencil Comp = Equal】【Stencil Pass = Keep】(=ピクセルのステンシル値が1の時のみ描画)

    ※顔や目、眉毛のマテリアルのステンシル値を2にしているのは、フェイクコンタクトシャドウでステンシル値2を参照するためです。
    【左:目や背景にアウトラインが描画されています】【右:ステンシルを適切に設定して目や背景のアウトラインはマスクしています】
  • Outline

    Intensity:アウトラインの透明度です。
    Color:アウトラインの色です。
    Mix Method:「Default / アウトラインをそのまま描画」、「Multiply / アウトラインを乗算して描画」、「Overlay / アウトラインをオーバーレイ描画」
  • Depth

    深度情報を元にアウトラインを描画します。

    Enable:アウトラインの有効/無効

    Outline Width:アウトラインの太さ

    Depth Sensitivity:アウトラインの検出強度

    Upper Cut:検出したアウトラインのハイカット

    Low Cut:検出したアウトラインのローカット

    Debug:深度アウトラインのデバッグ表示
  • Normal

    法線情報を元にアウトラインを描画します。

    Enable:アウトラインの有効/無効

    Outline Width:アウトラインの太さ

    Normal Sensitivity:アウトラインの検出強度

    Upper Cut:検出したアウトラインのハイカット

    Low Cut:検出したアウトラインのローカット

    Debug:法線アウトラインのデバッグ表示
  • Render Queue

    レンダーキューをデフォルトで3010にしています。
    他のオブジェクトで3010以上のレンダーキューを使っていて描画負けする場合は調整してください。

ソフトライト / Soft Light

ソフトライトの機能です。画面全体に色を載せて、なじませてくれます。
下の画像は青系の色を載せた例。

使い方

Post Process ProfileのAdd effect > StudioMaron > Soft Lightから追加

パラメータ

  • Intensity

    ソフトライトの強度。
  • Color

    ソフトライトの色です。好きな色を載せよう。

ライトグラデーション / Light Gradient

画面に明るいグラデーションを載せます。
光源の向きに置くと良い感じになる。写真撮影・ショート動画撮影などの固定カメラにおすすめ。
下の画像では左上にグラデーションを追加している。

使い方

Post Process ProfileのAdd effect > StudioMaron > Light Gradientから追加

パラメータ

  • Intensity

    グラデーションの強度。
  • Color

    グラデーションの色です。明るい色がおすすめ。
  • Range

    グラデーションの効果範囲です。
  • Rotation

    グラデーションの回転です。

ダークグラデーション / Dark Gradient

画面に暗いグラデーションを載せます。ライトグラデーションの反対側に置くのがおすすめ。

使い方

Post Process ProfileのAdd effect > StudioMaron > Dark Gradientから追加

パラメータ

  • Intensity

    グラデーションの強度。
  • Color

    グラデーションの色です。暗い色がおすすめ。
  • Range

    グラデーションの効果範囲です。
  • Rotation

    グラデーションの回転です。

彩度調整 / Saturate

彩度調整の機能です。赤系と青系に分けて調整できます。

使い方

Post Process ProfileのAdd effect > StudioMaron > Saturateから追加

パラメータ

  • Intensity

    彩度調整の強度。
  • Red Yellow Staturate

    赤・黄系の色の彩度調整です。
  • Blue Green Staturate

    青・緑系の色の彩度調整です。