タピオカトゥーンシェーダー

Tapioca Toon Shader

VRChat

ver1.0.1

Boothで購入する
価格: ¥2,980

概要

シェーダー機能一覧

VRChat版の特徴

タピオカトゥーンシェーダーVRChat版は、VRChat向けのキャラクター用シェーダーです。
VRChat版は、元々のタピオカトゥーンシェーダーと仕様が異なるので、本ページをよく読んでお使いください。

image
  • どこから見ても同じライティング

    タピオカトゥーンシェーダーVRChat版は、ワールド内のディレクショナルライトの方向を無視してプレイヤー視点を基準にライティングします。(ライトの色・明るさは取得します)
    そのため、前後左右どこから見ても陰ることのないライティングになります。

    ※シャドウありのディレクショナルライトの存在がする場合、シャドウの計算はライト方向に依存します。

    ↓↓どの方向から見ても正面からのライティングで表示されている
  • ライトカラーの影響制限

    ワールド内のライトの色味が強い場合、色味を薄めて適用します。

    ↓↓一般的なトゥーンシェーダー(左)、タピオカトゥーンシェーダー(右)
  • リムライトの仕様

    Light ProbeやVRC Light Volume、Skyboxはリムライトとして適用されます。

    ↓↓VRC Light Volumeをリムライトとして受け取った例(画像ではわかりやすさのためリム強度を上げている)
  • ライティングの調整が可能

    アバターギミックにより、VRChat内でアバターのライティングを操作できます。
    ライト方向、ライト強度、シャドウの強度、リムの強度、スポットライトライティングへの切替など、写真を撮るときに便利です。


  • スポットライトライティング

    綺麗なシャドウを出すために、スポットライトのみでライティングするモードです。
    描画の負荷は1.5~2倍程度になりますが、綺麗なシャドウでライティングでき、写真撮影に便利です。
    詳細は『スポットライトライティング』を参照ください。

    ↓↓通常のライティング(左)とスポットライトライティング(中)、綺麗なシャドウの例(右)
  • SDFテクスチャの疑似作成

    SDFテクスチャを最大4枚のグレースケールテクスチャで疑似作成できます。
    詳細は『SDF』を参照ください。

    ↓↓SDF機能による顔の陰(カゲ/シェイド)の移り変わり

シェーダーの変更

① マテリアルのシェーダーをStudiMaron > TapiocaToonShaderVRChatに変更します

② 半透明のマテリアルは、『レンダリング』設定のレンダリングタイプを「Transparent」か「TransparentWithZwrite」に変更します

③ 各種設定のオンオフ、パラメータ調整をします、以上



アバターギミックの設定

※モジュラーアバター(Modular Avatar)を使うのでインストールしてください

① Tapioca Controllerプレハブをアバターの中に入れる

プレハブの所在は Assets > _StudioMaron > TapiocaToonVRChat > AvatarGimmick > Tapioca Controller (LocalまたはGlobal).prefab
Globalはギミックが他人と同期します。

② Tapioca Controllerの中のAnimator GeneratorのInspectorを設定し「Animatorを生成」ボタンを押す



・Avatar: アバターをセットする
・Spot Light: スポットライトライティングで使うライトをセットする
・Target Renderers: アバターのメッシュをセットする(「メッシュを自動取得」ボタンでセットしてもいい)
・Output Folder: アバターギミックの生成フォルダを指定
・メッシュを自動取得: アバターのメッシュを一括取得するボタン
・Animatorを生成: アバターギミックを生成するボタン

※アニメーションによるマテリアルパラメータ操作のため、関連するメッシュやボーンの名称・階層構造を変更した場合は生成し直す必要があります。

③ 生成されたAnimatorをMerge Animatorにセットする

④ アバターをアップロードする、以上。



スポットライトライティングについて

写真を撮るときに便利なライティングモードです。

ディレクショナルライトの明るさと、ディレクショナルライトが作るシャドウを無視し、
アバターに仕込んだスポットライトでライティング・シャドウ描画を行います。

※ver.1.0.0にて、半透明なマテリアルは変な透け方をしてしまいます。
ver.1.0.1にて、半透明なマテリアルはスポットライトライティングを適用しない仕様に変更しました。
Unityの仕様上、半透明はシャドウが出ないので、スポットライトライティングを適用するメリットは無いです。

↓↓通常のライティング(左)とスポットライトライティング(中)、シャドウの例(右)
↓↓通常のライティング(左)とスポットライトライティング(右)
(首元や太ももの影がわかりやすい)



スポットライトライティングを使用するには、アバターギミックのスポットライトライティングをONにします。
image

アバターギミックの設定時のスポットライトは、キャラクター全体を照らせるように調整しておいてください。
※ライトが当たっていない身体のパーツは真っ黒になります。

その他の注意点

・スポットライトライティング使用時は鏡に正しく映りません。(鏡の奥のキャラクターにはスポットライトライトが当たらないため)
・ワールド内にリアルタイム設定のスポットライト、ポイントライト、2個以上のディレクショナルライトが存在する場合、それらのライト影響を受けてしまうので、アバターギミックでライト強度を調整してください。

アップデート情報

2026年3月18日 ver 1.0.1

  • 半透明のマテリアルはスポットライトライティングを適用しないように修正

2026年3月17日 ver 1.0.0
  • 販売開始

レンダリング

  • レンダリングタイプ

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

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

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

ステンシル

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

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

前髪よりも眉毛を優先して描画したい場合によく使われます。

  • ステンシル Ref

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

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

  • ステンシル Pass

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

VRCライティング

VRChat内でのライティングに関わる項目です。

  • ライトの明るさ最大値・最小値

    ライトの強さを最大値・最小値でカットします。特に最小値は、暗いワールドでの最低限の明るさを決めます。
  • ライトの明るさ係数

    ライトの明るさを変更します。VCRhat内にてアバターギミックで操作します。
  • ライトの上下・左右調整

    ライトの向きを調整します。VCRhat内にてアバターギミックで操作します。
  • シャドウ強度

    シャドウの強さを調整します。VCRhat内にてアバターギミックで操作します。
  • リムライト強度

    リムライトの強さを調整します。VCRhat内にてアバターギミックで操作します。
  • スポットライトでライティングする

    スポットライトライティングに切り替えます。VCRhat内にてアバターギミックで操作します。

ベースカラー

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

image

  • カラー

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

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

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

陰 (カゲ/シェイド)

光源の反対側の色です。

image

  • 陰色

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

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

    陰の閾値です。
  • ぼかし

    陰のぼかし幅です。
  • オプション

    • None

    • Face Forward Lighting

      顔の向きとライト方向だけで陰の判定をします。
      変な凹凸が出ないのでモデルによってはおすすめです。
      このオプションを使う際のおすすめ設定値は、閾値:0.5~0.7、ぼかし:1.0です。
    • Border Color

      陰のぼかし部分に挿し色を追加します。挿し色はオーバーレイ処理で重ねます。

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

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

通常はキャラクター毎にSDF専用の特殊なテクスチャが必要ですが、タピオカトゥーンシェーダーVRChatではテクスチャのスロットを
4つ用意しているので、同梱のテクスチャを合成して簡易作成できます。
※SDFはシェーダー作者がそれぞれ独自に考えて実装する機能のため、他のトゥーンシェーダーで使用しているSDFテクスチャが使えない場合があります。


  • 閾値

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

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

    SDFを適用する範囲のマスクです。顔と身体のマテリアルが同じ場合などに使います。
  • オプション

    • None

    • Border Color

      陰のぼかし部分に挿し色を追加します。挿し色はオーバーレイ処理で重ねます。
  • 顔の中心のUVのX座標

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

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

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

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

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

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

SDFテクスチャの合成

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

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

image image image

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

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

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

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

影 (カゲ/シャドウ)

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

シャドウの例:衣服に腕の影が落ちている


落ち影あり/なしはキャラクターの印象に大きな違いがあり、スポットライトライティングを使う際はとても重要な項目です。

↓↓シャドウなし(左)とシャドウあり(中)とシャドウの例示(右)

仕様として、シャドウありのディレクショナルライト1本を自動取得して影を描画します。
そのため、ワールド内のディレクショナルライトが「シャドウなし」ならこの項目は反映されません。

また、シャドウはワールドのディレクショナルライトの方向に依存するので、好ましいライティング結果にならない場合があります。そういう時は、

・アバターギミックでシャドウ強度を下げてシャドウを消す
・スポットライトライティングに変更してワールドのディレクショナルライトを無視する

のどちらかが良いと思います。

スポットライトライティングを使用している時は、ディレクショナルライトは無視して、スポットライトからのシャドウを受け取ります。
大抵の場合、アバターギミックに仕込んだスポットライトのシャドウを受け取ります。
(ほとんどありませんが、シャドウありのポイントライトがあったり、2個目のディレクショナルライトがあるときは、そのシャドウも受け取ります)

  • 影色

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

    マスクテクスチャです。
  • シャドウ範囲

    シャドウの範囲をわずかに調整できます。
    ※シャドウ設定がSoft Shadowの場合のみ
  • シャープネス

    シャドウのぼやけ具合をわずかに調整できます。
    ※シャドウ設定がSoft Shadowの場合のみ

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

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

image

  • ハイライトの色

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

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

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

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

ノーマルマップ

凹凸を出す機能です。

image

  • ノーマルマップ

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

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

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

発光 (エミッション)

発光機能です。

image


image


  • 発光色

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

    発光テクスチャです。発光色に乗算します。
  • 発光表現

    発光の描画に使う計算処理を選べます。
    ・Tapioca Original: オリジナル処理です。
    ・Add: 一般的なトゥーンシェーダーと同じ加算処理です。
  • ディレクショナルライトの明るさとリンクする閾値

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

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

マットキャップ

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

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

image image


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

image image


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

    マットキャップテクスチャです。
  • マットキャップ強度

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

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

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

リムライト

リムライト機能です。ベースカラーに加算します。
照明に照らされている感を出せる機能で、とてもおすすめです。

image

  • リム色

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

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

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

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

    シンプルなリムを使う:全方向からリムを反映します。明るくても暗くても常に同じ明るさで反映されます。個人的には不要です。

    スカイボックス、ライトプローブ、ライトボリューム(VRCLV)を使う:スカイボックスやライトプローブなどの周囲環境をリムライトとして反映します。おすすめです。
  • 影領域のリムを削除

    影(シャドウ)機能が有効な時、影の領域でリムを無効にします。
  • リムにノーマルマップを適用

    『ノーマルマップ』で設定したノーマルマップを反映します。

リム陰 (影/シェイド)

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

image

  • リム陰の色

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

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

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

    リム陰のぼかし幅です。

アウトライン

アウトライン機能です。メッシュの法線を反転して押し出す方式です。

image

  • アウトラインの太さ

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

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

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

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

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

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

UVスクロール

UVスクロール機能です。

  • スクロールスピードX、Y、回転

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

ノイズ付与

ハイライトなどにノイズを追加する機能です。肌や服の質感を高めるのに使えます。
(左:服と肌にノイズあり、右:ノイズなし)

image image

  • ベースカラー/ハイライト/リム

    それぞれベースカラーやハイライト部分、リム部分に細かいノイズを付与します。
    Cellular Noise: 細胞っぽい模様のノイズです。特に肌マテリアル向けのノイズ。
    Value Noise: 細かいギザギザのノイズです。服マテリアル向けのノイズ。
  • 強度

    ノイズの強度です。
  • タイリング

    ノイズのタイリング倍率です。大きくするほど細かくなります。