【コラム】ファーシェーダーのRenderQueue設定について

RenderQueueってなあに?

 こんにちは、けだまびより店長のかほです。

 ファーシェーダーを使用するにあたって避けて通れない壁、RenderQueueについて皆さんはご存じでしょうか?

 当店はファーシェーダを使ったもふもふボディのケモノたちと会えることをテーマの一つとしており、スタッフは全員liltoonのファーを実装していたりします。

【無料】lilToon – lilLab – BOOTH

http://booth.pm

アバターを用いたサービス(VRChat等)向けに開発したシェーダーで以下のような特徴があります。 ● 簡単(プリセットからワンクリック設定&自作プリセットの保存、色調補正機能による…

 ファー担当のノラムくんが丁寧にセットアップをしてくれているおかげで評判も良く、実際に真似して導入してみた!という方も出てきたのは喜ばしく思います。

 昨年公開された、ノラムくんのnoteが大きな反響を生んでいたのも記憶に新しいですね。

lilToonのファーの設定いろいろ|栗田マロン

http://note.com

lilToonでモフモフになる方法をまとめてみました。 設定の過程でUVマップの出力やモデルの調整にBlender、テクスチャの調整やマスクの作成にペイントソフト、毛の流れ用ノーマ…

 さて、このファーシェーダーですが、ファー(毛)を表現するために、フィン法やシェル法を用いたもの、はたまた視差による奥行表現を用いたものなど様々なバリエーションが存在しています。

 中には半透明なシェーダーを用いるものもあり、通常の不透明なマテリアルとはちょっと異なった設定上の注意が必要となることがあります。

 ボディにファーシェーダーを使用しているケモノの皆さん、こんな経験をしたことはありませんか?

😾「水に入ったら身体が消えた!!」

🙀「窓ガラス越しだとボディが表示されない!!」

😿「カメラのピントが合わない!!」

水に溶けちゃう灰島ちゃんの図

 こんな症状を改善するための方法について、メリットやデメリットを交えてお話していきたいと思います。

注意:本記事は専門家でもなんでもない一個人が自身の経験、知識を基に記述しています。正確な情報が知りたい方はUnityのリファレンスを確認してください。また、分かりやすくするため、詳細の割愛や大雑把な表現が含まれます。


 まず、お話を始める前提条件として、マテリアルの設定の中にあるRenderQueue、Z Writeという2つの項目について、おおまかにまとめてみました。

〇本記事を読む上での基本事項

【RenderQueue】

 RenderQueue(レンダーキュー)はオブジェクトを画面に描画(レンダリング)をする順番を決めるための数値のことで、基本的には数字が小さいものから順番に描画されるようになっています。

 アバターに使用するマテリアルの場合は、初期値は2000~3000の領域に以下のような割り当てになっていることが多いです。

タグRenderQueue概要
Geometry2000シェーダーではOpaque(オペーク)とも。通常の不透明なオブジェクトです。通常のアバターのボディや髪、服などの多くの不透明なものはここに含まれます。
AlphaTest2450俗に言うCutOut(カットアウト)と呼ばれるものです。お洋服のレース等に使用されていることが多いですね。
Transparent3000いわゆる半透明なオブジェクトに用います。透けているお洋服などもここに含まれます。

 RenderQueueの設定場所はliltoonだとここにくっついています。

 ファーシェーダの場合は初期値はRQ3000になっていますね。

基本設定の中に「Render Queue」という項目があります。

【Z Write】

 ざっくり言うと、カメラとポリゴン表面との距離(Z値)を記録すること。

 デフォルトではONになっているはず。

 画面にオブジェクトを描画する際に、カメラ(視点)に対してどの部分が手前にあって、どの部分が奥にあるのか、ポリゴンの前後関係を把握するために使用されます。

 特殊な表現をする場合以外は基本ONのはずなので、当記事では説明は割愛します。

 上記を踏まえて、さっそく次のページから描画順について見ていきましょう。