AxF シェーダー
AxF シェーダーは HD レンダーパイプライン (High Definition Render Pipeline、HDRP) における X-Rite AxF マテリアルのレンダリングを実現します。AxF はマテリアルの外観ダートの交換を可能にする標準フォーマットです。AxF ファイルを生成するには、通常リアルワールドのマテリアル測定を含むオーサリングツールが必要で、それを使って様々なテクスチャとモデルプロパティーを生成します。
AxF ファイルを HDRP の AxF シェーダーが理解およびレンダリングできるマテリアルプロパティ―へと変換するために、Unity は AxF Importer パッケージを使います。インポーターは必ずしも使わなけらばならないわけではなく、代わりにインスペクターで値を自分で割り当てることもできます。ただし、AxF シェーダーは AxF Importer が AxF ファイルから変換するデータ専用に作動するようにデザインされています。Unity は現在、AxF マテリアルがリアルワールドのマテリアルを正確に描写するためのある一定のアセットを作成する技法を提供していません。つまり、AxF マテリアルを手動で作成する場合に、AxF ファイルからインポートした一定の結果を再現することができない可能性があります。
AxF マテリアルのインポートおよび作成
Unity でゼロから AxF マテリアルを作成することは可能ではありますが、それよりも X-Rite の Total Appearance Capture (TAC™) エコシステムなどの外部作成ツールを代わりに使って AxF ファイルを作成し、その結果を Unity へインポートした方が良いでしょう。AxF Importer パッケージをインストールすると、Unity は AxF ファイルを AxF マテリアルとして自動インポートします。
AxF Importer は Unity Enterprise for Product Lifecycle から利用できます。AxF Importer パッケージをダウンロードしたら、Package Manager を使ってローカルにインストールします。ローカルパッケージのインストールについての詳細は、ローカルパッケージのインストール を参照してください。
AxF Importer パッケージの使用
AxF ファイルをインポートする際は、どのプロパティ―も修正することができません。AxF インポートするパッケージがインストール済みで、AxF マテリアルを編集したい場合は、インポートした AxF マテリアルの編集可能なコピーを作成することができます。この手順は以下の通りです。
- Unity プロジェクトで AxF を選択し、Inspector で表示します。
- Imported Object のヘッダーエリアを右クリックし、コンテクストメニューから Create AxF Material From This を選択します。
このプロセスでテクスチャおよび元の AxF ファイルが使用するその他のリソースが複製されることはありません。その代わりに、複製されたマテリアルが元ファイルのテクスチャとリソースを参照しますが、Inspector 内のすべての値は編集できます。
ノート: 新しいテクスチャを手動で参照する場合は、置き換えるテクスチャと同じエンコーディングを使ってください。そうしないと、一貫性のない入力値のせいで、予測不能な、または欠陥のあるレンダリングにつながります。
ゼロからの AxF マテリアル作成
HDRP の新しいマテリアルは、デフォルトで Lit Shader を使います。ゼロから AxF マテリアルを作成するには、マテリアルを作ってから AxF Shader を使わせます。
- Unity Editor で、プロジェクトの Asset ウィンドウに移動します。
- Asset ウィンドウを右クリックし、Create > Material を選択します。これで新しいマテリアル が Unity プロジェクトの Asset フォルダーに追加されます。
- Material Inspector の上部にある、Shader ドロップダウンをクリックし、HDRP > AxF を選択します。
AxF Material プロパティーをインポートされた AxF マテリアルから新しく作成された AxF マテリアルにコピーすることは可能です。
- Unity プロジェクトで AxF を選択し、Inspector で表示します。
- ヘッダーエリアで Shader ドロップダウンを右クリックし、コンテクストメニューから Copy AxF Material Properties を選択します。
- 新しい AxF マテリアルを選択して、Inspector で表示します。
- ヘッダーエリアで Shader ドロップダウンを右クリックし、コンテクストメニューから Paste AxF Material Properties を選択します。
プロパティー
Surface Options
Surface Options はマテリアルの表面の全体的な外観と、Unity が画面でマテリアルをどのようにレンダリングするかを制御します。
ノート: AxF Importer は、すべてのテクスチャを半精度浮動小数点、リニア、sRGB 色域 (色をレンダリングする場合) としてインポートします。
プロパティー | 説明 |
---|---|
Surface Type | ドロップダウンを使って、マテリアルが透明度をサポートするかを定義します。Transparent Surface Type のマテリアルは、Opaque Surface Type のマテリアルよりも、レンダリングによりリソースに負荷がかかります。HDRP は選択された Surface Type に応じて、さらにプロパティーを展開します。機能に関する情報および各 Surface Type が展開するプロパティ―のリストは、サーフェスタイプドキュメント を参照してください。 |
- Rendering Pass | ドロップダウンを使って HDRP が Material をプロセスするレンダリングパスを設定します。このプロパティーについての詳細は、Surface Type ドキュメント を参照してください。 |
Double-Sided | チェックボックスを有効にすると、HDRP はジオメトリにあるポリゴンの両面をレンダリングします。機能に関する情報およびこの機能が展開するプロパティーのリストは、両面ドキュメント を参照してください。 |
Receive Decals | チェックボックスを有効にすると、HDRP はマテリアルの表面にデカールを描画できるようになります。 |
Receive SSR (Transparent) | チェックボックスを有効にすると、HDRP はスクリーンスペースリフレクションパスを処理する際に、Material を含めます。透明 Surface Type には、別のオプションがあります。 |
メインマッピング設定
プロパティー | 説明 |
---|---|
Mapping Mode | すべてのテクスチャに対するマテリアルのテクスチャマッピングモードを制御します。 • UV0..UV3: リットと同様に、UV を UV0 から UV3 までの頂点属性に設定します。Unity では UV1 はベイクしたライトマップに使われるため、この設定は推奨していませんので注意してください。 • PlanarXY,YZ,ZX: 指定された面とともに平面マッピングを使います。 • Triplanar: 三平面マッピングを使います。 • Planar Space: 平面または三平面マッピングモードを選択すると、"Planar Space" オプションで "world" または "local" に設定し、座標にワールド空間を使うか、それともオブジェクト空間を使うかを選択できます。 |
Main Tiling & Offset | Surface Inputs セクションですべてのテクスチャにタイリング率 (xy) とオフセット (zw) を設定します。HDRP はこれらの値を使い、オブジェクトの接線空間内で、Material の表面の xy 長軸とともにテクスチャをタイリングします。また各テクスチャプロパティーも、メイン値の上に適用されるその他のタイリングおよびオフセット値を特定することができます (テクスチャプロパティー専用のタイリング率は乗算され、オフセットはメイン値に追加されます)。これら追加のタイリングとオフセットは、同じラインの各テクスチャの隣に表示されます。 |
上級者向けサーフェス入力
プロパティー | 説明 |
---|---|
BRDF Type | メインのAxFマテリアル表現を制御します。 • SVBRDF: このオプションを選択したときに Unity が表示するプロパティーに関する情報は、BRDF タイプ - SVBRDF を参照してください。 •CAR_PAINT: このオプションを選択したときに Unity が表示するプロパティーに関する情報は、BRDF Type - CAR_PAINT を参照してください。 |
BRDF Type - SVBRDF
プロパティー | 説明 |
---|---|
Diffuse Type | SVBRDF BRDF Type は次の 2 つの拡散反射モデルをサポートします。 • LAMBERT: すべてのビュー方向で反射率が等しい、シンプルなディフューズモデルです。ものモデルは、単一のアルベドカラープロパティーを使います。 • OREN_NAYAR: この拡散反射モデルは、粗い拡散表面の表現により適しています。このモデルはラフネスプロパティーとアルベドカラープロパティーを使います。 |
Specular Type | SVBRDF BRDF Type は次の複数の鏡面反射率モデルをサポートします。 • WARD: 微細表面起源のモデルで、微細表面方位のガウス分布で表面を微視的に説明します。このオプションには複数のバリアントおよび設定できるフレネルエフェクトがあります。これらのプロパティーに関する情報は、Ward Variants および Fresnel Variant をそれぞれ参照してください。 • BLINN_PHONG: 従来の Blinn-Phong 実証反射率モデルの異方性バージョンです。スペキュラーのフォールオフは、 (ガウス分布の代わりに) ビューと光の方向の中央値角度に比例します。このオプションには複数のバリアントがありますが、フレネルエフェクトは含みません。バリアントに関する情報は、Blinn Variant を参照してください。 • COOK_TORRANCE: WARD と反対の微細表面起源のモデルです。このモデルは等方性で、微細表面分布はガウス分布です。 • GGX: HDRP の Lit Material と同様、スペキュラーの減少がゆっくりで、ガウスやコサインモデルに比べて、大きなエリアでハイライトがゆっくりと減衰するモデルです。 |
Fresnel Variant | WARD Specular Type では HDRP が Material にフレネルエフェクトをどのように計算するかを特定できます。 • NO_FRESNEL: フレネルエフェクトを Material から除去します。 • FRESNEL: 正確な方程式でフレネルを計算します。 • SCHLICK: 概算でフレネルを計算します。これは FRESNEL オプションよりも、リソースに負担が少なくなります。 このプロパティーは、Specular Type を WARD に設定したときのみに表示されます。 |
Ward Variant | WARD Specular Type は、主に正規化された項の変更に基づいて、複数のサブバリアントをサポートします。 • WARD: 1992年のウォードらによる論文に基づきます。 • DUER: Duer らによる2004年の論文の変更に基づきます。 • GEISLERMORODER: が Geisler と Moroder の2010年の変更に基づきます。主に放射輝度予測レンダリングソフトウェアのために開発されたこのモデルは、Ward から最も進化した、そして特にグレージング角で最も現実的なモデルです。 このプロパティーは Specular Type を WARD に設定したときのみに表示されます。 |
Blinn Variant | BLINN Specular Type は複数のバリアントをサポートします。 • BLINN: これは従来の Blinn-Phong モデルで異方性にはエフェクトがありません。 • ASHIKHMIN_SHIRLEY: Ashikhmin と Shirley に基づいた異方性バージョンのモデルです。 このプロパティーは、Specular Type を BLINN_PHONG に設定したときのみに表示されます。 |
Diffuse Color | マテリアルの色を制御する RGB テクスチャを特定します。このフィールドにテクスチャを割り当てるには、ラジオボタンをクリックし、Select Texture ウィンドウからテクスチャを選びます。 |
Specular Color | マテリアルの鏡面反射カラーの乗数として作用する RGB テクスチャを特定します。ノート: このプロパティーは、通常の PBR ワークフローにおけるいわゆる "スペキュラーカラー" (別名 "F0"、表面に垂直方向のフレネル反射率) とは異なります。つまり、Specular Color Material Type が表すものと同じではありません。その代わりに HDRP がスペキュラー BRDF 評価の結果と乗算するカラーティントを表します。 |
Specular Lobe | マテリアル表面のラフネスをエンコードするテクスチャを特定します。選択する Specular Type に応じて、HDRP は異なるカラーチャンネルを使います。 • Isotropic specular models: HDRP は赤いカラーチャンネルを使います。 • Anisotropic specular models: HDRP は赤と緑のカラーチャンネルを使います。 HDRP はテクスチャ内で 0 から 1 の間の値を解読します。Lit Shader の GGX と比較すると、相当する AxF の粗さ (Specular Model が GGX に設定されている場合) は以下の通りです。 axf_roughness = (1 - hdrp_lit_user_smoothness)^2 |
Specular Lobe Scale | Specular Lobe の粗さの値の乗数です。低い値はマテリアル全体をより滑らかにし、異方性が低下します。 ノート: AxF ファイルはこの値を含みません。マテリアルと AxF ファイルの意図された外観を一致させたい場合は、この値を 1 に設定してください。 |
Fresnel | Normal から 0 で表面のスペキュラーモデルの反射率を定義するテクスチャ (赤チャンネルのみ) を特定します。 |
Normal | 接線空間で法線マップを定義する RGB テクスチャを特定します。HDRP はこのテクスチャの赤、緑、そして青チャンネルの値を、3 つのコンポーネントの正規化ベクトル値として使います。これはベクトルの 2 つのコンポーネントのみを説明する、通常の RG または AG にとって代わるものです。 |
Alpha | Material の表面の透明度を定義するテクスチャ (赤チャンネルのみ) を特定します。マテリアルはこのテクスチャの赤チャンネルを透明度値として使います。 |
Is Anisotropic | マテリアルが異方性をサポートするかを示します。 |
- Anisotropy Angle | 接線フレーム回転マップを定義するテクスチャ (赤チャンネルのみ) を特定します。このマップは HDRP が異方性ラフネスのプロパティーを整列させる、接線フレームの x 軸 と y 軸の位置を決定します。 HDRP は、元の範囲 (0 から 1) から -pi / 2 と pi / 2 の間に赤のカラーチャンネルをマップします。 ノート: HDRP は x 軸の元の接線フレームをメッシュジオメトリの補間頂点接線で、z 軸をメッシュジオメトリ補間頂点法線で決定します。 |
Enable Clearcoat | マテリアル表面にクリアコートがあるかを示します。 |
- Clearcoat Color | コートを通過して葉っぱに入射する光を調整する RGB テクスチャを特定します。クリアコートのティントとして作動します。 |
- Clearcoat Normal | 接線空間におけるコートの法線マップを定義する RGB テクスチャを特定します。HDRP はこの テクスチャの赤、緑、および青チャンネルの値を、3 つのコンポーネントの正規化ベクトル値として使います。これはベクトルの 2 つのコンポーネントのみを説明する、通常の RG または AG にとって代わるものです。 |
- Enable Refraction | クリアコートが屈折するかを示します。このチェックボックスを有効にすると、HDRP はクリアコートによって屈折した角度を使い、マテリアルの表面のアンダーコートを評価します。 |
- - Clearcoat IOR | クリアコートを単色 (単一値) F0 (別名スペキュラーカラー、または発生率 0 度におけるフレネル反射。さらにこれはコートが空気と接触することを仮定します) にエンコードして、クリアコートに屈折率 (IOR) を暗黙的に定義する テクスチャ(赤チャンネルのみ) を特定します。従って、値は 0 から 1 の範囲となり、HDRP は最終 IOR を以下のように計算します:IOR = (1.0 + squareRoot(R) ) / (1.0 - squareRoot(R)) ここでは、R はこの テクスチャの赤いカラーチャンネルの正規化値です。ノート: 有効化されている場合、HDRP はコート屈折、そしてコートを通過する、およびコート上の透過および反射率計算の両方にこの IOR を使います。従ってクリアコートを有効にする際は、常に テクスチャをこのプロパティーに割り当てる必要があります。 |
BRDF Type - CAR_PAINT
プロパティー | 説明 |
---|---|
BRDF Color | 遊色塗装カラーのモデリングに類似した、車の塗装ティントの角度依存性バリエーションをキャプチャする RGB テクスチャを特定します。各 UV 軸は以下を表します: u 軸は中央ベクトル (ビュー方向とライト方向の中央ベクトル) と面法線の間の角度に応じたバリエーションを表します。v 軸はビューまたはライトとこの中央 (別名 角度 “差”) の間の角度を表します。プロパティースペースは、U が 1 (最大範囲) と等しく、角度が pi / 2 である、上部左側から始まります。 |
BRDF Color Scale | BRDF Color のカラー値の乗数です。ノート: AxF ファイルはこの値を含みません。マテリアルと AxF ファイルの意図された外観を一致させたい場合は、この値を 1 に設定してください。 |
BRDF Color Table Diagonal Clamping | Unity が BRDF Color マップにアクセスを固定するべきかを示します。BRDF カラーテーブルの中には、中央対角領域の下の下半分がゼロ (すべて黒) になるものがあります。通常、正常に計測された Material では、屈折率 (IOR) マップと屈折オプションの組み合わせにより、Shader がゼロ値にアクセスすることを防ぎます。Unity AxF Importer は、HDRP が Shader がゼロ領域に絶対にアクセスしないために使う値を生成します。こうするためには、HDRP は テクスチャの黒くない領域内の角領域を直線的にリマップします。 |
- BRDF Color Map UV Scale Restriction | HDRP が BRDF Color テーブルを固定する際に適用する制限のスケールを特定します。より低い値を使うと、Shader が高い角度範囲 (pi / 2 付近) に到達するのを防ぎます。これら両方の値を 1 に設定すると、対角固定の機能を無効にするのと同じことになります。 |
BTF Flake Color Texture2DArray | フレークに対して計測された角度スライスデータを特定します。このスライスのセットは、双方向テクスチャ関数 (BTF) のようなものを表します。なおこのプロパティーは手動で割り当てないでください。代わりに、AxF Importer にこのプロパティーを割り当てさせてください。 |
BTF Flake Scale | フレークの反射強度の乗数です。ノート: AxFファイルはこの値を含みません。マテリアルと AxF ファイルの意図された外観を一致させたい場合は、この値を 1 に設定してください。 |
Flakes Tiling | Flakes テクスチャスライスに特定のタイリングを適用する乗数です。 |
ThetaFI Slice LUT | 角度範囲をスライスに変換するルックアップテーブルを特定します。このプロパティーは手動で割り当てずに、AxF Importer にこのプロパティーを割り当てさせてください。 |
Diffuse coeff | ディフューズローブ係数です。CAR_PAINT AxF モデルは、ハイブリッドのマルチローブモデルを使います。このモデルの要約は: BRDFColor * (Lambert + Cook-Torrance) + Flakes BTF モデルの Lambert 拡散反射部分の拡散アルベドを制御します。 |
CT Lobes F0s | 各 Cook-Torrance ローブの発生率 0 度における、フレネル反射率です。 |
CT Lobes coeff | Cook-Torrance ローブスペキュラーレスポンスの反射率乗数係数です。 |
CT Lobes spreads | Cook-Torrance ローブのラフネスです。 |
Enable Clearcoat | マテリアル表面にクリアコートがあるかを示します。 |
- Clearcoat Normal | 接線空間におけるコートの法線マップを定義する RGB テクスチャを特定します。HDRP はこのテクスチャの赤、緑、および青チャンネルの値を、 3 つのコンポーネントの正規化ベクトル値として使います。これはベクトルの 2 つのコンポーネントのみを説明する、通常の RG または AG にとって代わるものです。 車の塗装のオレンジピール エフェクトをシミュレーションする際にこのプロパティーを使います。 コートの下の表面には、独自の法線マップはなく、代わりにメッシュジオメトリから頂点補完法線を使うことにご留意ください。 |
- Clearcoat IOR | クリアコートの IOR を制御します。SVBRDF とは異なり、テクスチャではなく、単一のスケーラー値です。ノート: 有効化されている場合、HDRP はコート屈折、そしてコートを通過する、およびコート上の透過および反射率計算の両方にこの IOR を使います。 |
- Enable Refraction | クリアコートが屈折するかを示します。このチェックボックスを有効にすると、HDRP はクリアコートによって屈折した角度を使い、マテリアルの表面のアンダーコートを評価します。 |
上級者向けオプション
プロパティー | 説明 |
---|---|
Enable GPU instancing | このチェックボックスを有効にすると、HDRP は同じジオメトリのメッシュとマテリアルを可能な限り一度にレンダリングします。これにより、より速くレンダリングできます。HDRP は異なるマテリアルを含むメッシュや、ハードウェアが GPU インスタンシングをサポートしない場合、一括レンダリングはできません。例えばオブジェクトピボットをベースとしたアニメーションを含むゲームオブジェクトの 静的バッチ処理 はできませんが、GPU はそれらをインスタンスすることができます。 |
Add Precomputed Velocity | チェックボックスを有効にすると、Alembic ファイルに保存された事前計算された速度情報を使います。 |