Hikari Standard シェーダ
SuzuFactory/Hikari/Standard は、Unity Built-in の Standard シェーダと同じプロパティを持ち、Built-in Render Pipeline と URP 14 の両方で描画できるシェーダです。Hikari のベイクに必要な情報(屈折率・色分散・MonoSH)をマテリアルに直接持たせられます。マテリアルのシェーダをこれに切り替えるだけで使えます。
インスペクタ最上部の Variant で、Standard・Refraction・Reflection・Refraction + Reflection・Transmission・Transmission + Reflection を切り替えられます。Standard 以外の実体は Hidden シェーダですが、通常はシェーダ一覧から直接選ばず、この Variant から選択します。
Hikari 固有のプロパティ
Standard と共通の項目(Albedo・Metallic・Smoothness・Normal Map・Emission・Occlusion・Detail など)に加えて、次が増えます。
| プロパティ | インスペクタ | 内容 | 既定値 |
|---|---|---|---|
| Index of Refraction | Baking Options | 屈折率(0.001–3.0)。ガラスは概ね 1.5。1.0 で屈折なし。Hikari のベイクだけに使われ、リアルタイム表示には影響しない |
1.0 |
| Abbe Number | Baking Options | 色分散の Abbe 数(0–100)。0 で分散なし、小さいほど虹色が強い(Hikari Settings の Dispersion をオンかつ Caustic Mode = Forward のときに効く)。Hikari のベイクだけに使われ、リアルタイム表示には影響しない |
0 |
| Override Transmission | Baking Options | ベイク時の Transmission をリアルタイム表示用の値から分離する。オフでは従来どおりマテリアルの表示結果から推定し、オンでは直下の Transmission をベイクだけに使う | オフ |
| Transmission | Baking Options | Override Transmission がオンのときに使うベイク専用の色・テクスチャ。リアルタイム表示には影響しない | 白 |
| Volumetric | Baking Options | 閉じたメッシュ内部を均質な参加媒質としてベイクする。リアルタイム表示や Transmission 自体は変更しない | オフ |
| Absorption | Baking Options | Volumetric 内を1ワールド単位進んだ後に残る色。白は吸収なし、赤は赤を残して緑・青を吸収する | 白 |
| Scattering | Baking Options | Volumetric 内のワールド単位距離あたりの等方散乱係数 | 0 |
| Emission | Baking Options | Volumetric 媒体がワールド単位距離あたりに放射する光 | 黒 |
MonoSH の復号方式はマテリアルで設定しません。ライトマップのベイクが完了すると、ベイク対象の Hikari Standard マテリアルは Directional Mode = MonoSH のときだけ MonoSH 復号を使い、Non-Directional / Dominant Direction では使わないよう自動設定されます。
Standard 互換のプロパティ
Unity Built-in の Standard シェーダと同じ項目をインスペクタから設定できます。URP でも同じマテリアル設定を使用し、URP Lit と同じ PBR ライティング、メインライト、追加ライト、影、ライトプローブ、リフレクションプローブを反映します。
| プロパティ | 内容 | 既定値 |
|---|---|---|
| Variant | リアルタイム表示のバリアント。Standard / Refraction / Reflection / Refraction + Reflection / Transmission / Transmission + Reflection から選ぶ | Standard |
| Rendering Mode | Opaque / Cutout / Fade / Transparent | Opaque |
| ZWrite | メイン描画の深度書き込み。Auto は Opaque / Cutout でオン、Fade / Transparent でオフ。On / Off で明示的に指定できる | Auto |
| 2 Pass | Fade / Transparent のとき、裏面を先に描画してから表面を描画する。薄い半透明メッシュで裏面も見せたいときに使う | オフ |
| Specular Highlights | 鏡面ハイライトを出すか(Forward Rendering Options) | オン |
| Reflections | 環境反射を出すか(Forward Rendering Options) | オン |
| Cull | 描画するカリング面。2 Pass がオンのときはバリアント側で裏面・表面を分けて描くため変更できない | Back |
| Render Queue | 描画順(Advanced Options) | シェーダ既定 |
| Enable Instancing | GPU インスタンシングを使うか(Advanced Options) | オフ |
| Double Sided Global Illumination | 裏面も Hikari のベイク対象として扱うか(Baking Options)。リアルタイムのカリングには影響しない | オフ |
透過(Transmission)バリアント
Variant = Transmission は、上記に加えてリアルタイム表示でも透過して見える背景に色やテクスチャを掛けるバリアントです。Built-in Render Pipeline では Blend、URP では Camera Opaque Texture を使用します。ここに表示される Transmission はリアルタイム表示用であり、ベイク専用値は Baking Options → Override Transmission で設定します。
| プロパティ | 内容 | 既定値 |
|---|---|---|
| Transmission | Fade / Transparent で透過して見える背景に掛ける色・テクスチャ | 白 |
2 Pass をオンにすると、Transmission も裏面用・表面用の pass に分かれます。通常の Transmission と同じ描画順を保ったまま、裏面を先に描いてから表面を描きます。
屈折(Refraction)バリアント
Variant = Refraction は、上記に加えてリアルタイム表示でも擬似的な屈折を見せるバリアントです。Built-in Render Pipeline では GrabPass、URP では Camera Opaque Texture の背景をゆがめます。エディタ/Play 中の見た目にも屈折を出したいガラスに使います。
このバリアントでは Transmission に加えて次の項目が増えます。
| プロパティ | 内容 | 既定値 |
|---|---|---|
| Refraction Strength | 背景をゆがめる強さ(-1〜1)。0 でゆがみなし。負の値はゆがむ向きが反転する |
0.1 |
2 Pass をオンにした場合、裏面を先に描画してから表面を描画します。
スクリーンスペース反射(Reflection)バリアント
Variant = Reflection は、画面内のカラーと深度をレイマーチして反射先を探し、見つかった範囲ではリフレクションプローブをスクリーンスペース反射へ置き換えます。反射先が画面外にある場合、深度と交差しない場合、表面の Smoothness が低い場合は、通常のリフレクションプローブへ連続的に戻ります。
Refraction + Reflection は屈折とスクリーンスペース反射を同時に使用します。Transmission + Reflection は背景を歪ませない Transmission とスクリーンスペース反射を同時に使用します。Opaque / Cutout の Reflection 単体は、Opaque/Cutout/Skybox の描画後かつ通常の透明オブジェクトより前に描画するため、Render Queue の既定値を Transparent-100(2900)にします。Refraction を含む Variant、Transmission + Reflection、Fade / Transparent は Transparent(3000)を使用します。Opaque / Cutout の Z Write 設定は維持されます。
| プロパティ | 内容 | 既定値 |
|---|---|---|
| SSR Intensity | リフレクションプローブからスクリーンスペース反射へ置き換える強さ | 1 |
| SSR Max Distance | 反射レイを追跡する最大距離 | 20 |
| SSR Thickness | 深度との交差判定で許容する厚み | 0.1 |
| SSR Smoothness | SSR の反射方向を決める GGX マイクロファセットの滑らかさ。1 で完全に滑らか、値を下げるほど反射方向が広がり、サンプル方向は時刻に応じて更新される |
1 |
| SSR Max Steps | レイマーチの最大ステップ数を1〜64の整数スライダーで指定する | 32 |
スクリーンスペース反射には、Built-in Render Pipeline では GrabPass とカメラの Depth Texture、URP では Opaque Texture と Depth Texture を使用します。画面外の物体、画面カラー取得後に描かれる物体、他の透明物体は反射に含まれません。