Hair シェーダー
Hair シェーダーは、HD レンダーパイプライン (High Definition Render Pipeline、HDRP) で、髪の毛と毛皮をレンダリングするときにまず利用するものです。現実的なヘアエフェクトを作り出すため、ヘアカードと呼ばれるレイヤーを使います。各ヘアカードは、髪の毛の異なる部分を表現します。一部透明なヘアカードを使う場合は、どの角度から見ても後から前への順序になるよう、手動で並び替えなければなりません。
よく見てみると、Hair シェーダーは、事前設定された Shader Graph です。Hair シェーダー実装に関する情報、または独自の Hair シェーダーバリアントを作成する方法は、 ヘアマスターノード に関する Shader Graph ドキュメントを参照してください。
へアサンプルのインポート
HDRP は使用開始に役立つヘアマテリアルサンプルを用意しています。このサンプルを見つけるには、
- Windows > Package Manager に移動し、パッケージリストから High Definition RP を選択します。
- パッケージの詳細が表示されているメインウィンドウで、Samples セクションを見つけてください。
- Sample をプロジェクトにインポートするには、Import into Project ボタンをクリックします。これによりプロジェクト内に Samples フォルダーが作られ、選択した Sample がインポートされます。これは、Unity が今後 Samples をインポートする場所でもあります。
- Asset ウィンドウで Samples > High Definition RP > 11.0 へ移動し、Hair シーンを開きます。ここにはシーンと関連するサンプルマテリアル設定があり、利用できます。
ヘアマテリアルの作成
HDRP の新しいマテリアルは、デフォルトで Lit シェーダー を使います。ゼロからヘアマテリアルを作成するには、マテリアルを作ってから Hair シェーダーを利用します。手順は以下の通りです。
Unity Editor で、プロジェクトの Assets ウィンドウに移動します。
Assets ウィンドウを右クリックし、Create > Material を選択します。これで新しいマテリアルが Unity プロジェクトの Assets フォルダーに追加されます。
Material Inspector の上部にある、Shader ドロップダウンをクリックし、HDRP > Hair を選択します。
プロパティー
Surface Options
Surface Options はマテリアルの表面の全体的な外観と、Unity が画面でマテリアルをレンダリングする方法を制御します。
プロパティー | 説明 |
---|---|
Surface Type | マテリアルが透明度をサポートするかを指定します。Transparent Surface Type のマテリアルは、Opaque (不透明) な Surface Type のマテリアルよりも、リソースに負荷がかかります。選択するオプションに応じて、HDRP はさらにプロパティーを表示します。オプションは以下の通りです。 • Opaque: • Transparent: クリアなプラスチックやガラスなどのような、光が突き通ることができる半透明のマテリアルをシミュレートします。 機能に関する詳細および各 Surface Type が表示するプロパティ―のリストは、サーフェスタイプに関するドキュメント を参照してください。 |
- Rendering Pass | HDRP がマテリアルをプロセスするレンダリングパスを指定します。 • Before Refraction: 屈折パスの前にゲームオブジェクトを描画します。つまり、HDRP は屈折をプロセスするときにマテリアルを含みます。このオプションを展開するためには、Surface Type ドロップダウンから Transparent を選択します。 • Default: Surface Type に応じて、デフォルトの不透明、または透明レンダリングパスでゲームオブジェクトを描画します。 • Low Resolution: Default パスの後で、半分の解像度でゲームオブジェクトを描画します。 • After post-process: Unlit マテリアル のみに使われます。すべてのポストプロセスエフェクト後にゲームオブジェクトを描画します。 |
- Blending Mode | HDRP がマテリアルの各ピクセルのカラーと背景ピクセルをブレンドするために使う方法を特定します。オプションは以下の通りです。 • Alpha: マテリアルのアルファ値を使ってオブジェクトの透明度を変更します。0 は完全透明です。1 は完全に不透明ですが、マテリアルは透明レンダーパス中にレンダリングされます。これは雲など、完全に可視化したいものの、時間とともにフェードさせたい景観に役立ちます。 • Additive: マテリアルの RGB 値を背景色に追加します。マテリアルのアルファチャンネルが強度を調整します。0 の値は何も追加せず、1 の値はマテリアルのカラーを 100% 背景色に追加します。 • Premultiply: すでにマテリアルの RGB 値とアルファチャンネルを乗算したものと想定します。画像をフィルタリングする、または異なるレイヤーを構成する際に Alpha ブレンドよりも良い結果が得られます。 このプロパティーは Surface Type を Transparent に設定したときのみに表示されます。 |
- - Preserve Specular Lighting |
アルファブレンディングによってスペキュラーハイライトの強度を減らすかどうかを示します。これはガラスや水を照らす太陽光線のような、透明なサーフェスのスペキュラ―要素を保存します。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
- Sorting Priority | これを使うと、重ねられた透明なサーフェスのレンダリング順序を変更できます。詳細と使用例については、マテリアルソートに関するドキュメント を参照してください。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
- Receive Fog | フォグが透明な表面に影響を与えるかを示します。無効にすると、シーンでフォグを計算する際に HDRP はマテリアルを考慮しません。 |
- Back Then Front Rendering |
HDRP がマテリアルを 2 つの別のドローコールでレンダリングするかを示します。HDRP は最初のドローコールで裏面をレンダリングし、2 番目の呼び出しで正面をレンダリングします。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
- Transparent Depth Prepass | HDRP が並び替えを向上させるために透明なサーフェスからポリゴンを深度バッファに追加するかを示します。HDRP はライティングパスの前にこの操作を実行し、GPU のパフォーマンスを向上させます。 |
- Transparent Depth Postpass | HDRP がポストプロセスが使う深度バッファにポリゴンを追加するかを示します。HDRP はライティングパスの前にこの操作を実行します。モーションブラー または フィールドの深度 など、深度情報を使うポストプロセスエフェクトを利用する際に、この機能を有効にすると便利です。 |
- Transparent Writes Motion Vectors | HDRP がマテリアルを使う透明なゲームオブジェクトにモーションベクトルを描画するかを示します。これにより HDRP は透明なオブジェクトに対し、モーションブラーのようなエフェクトを処理できます。モーションベクトルに関する詳細は、モーションベクトルに関するドキュメンテーション を参照してください。 このプロパティーは Surface Type を Transparent に設定したときのみに表示されます。 |
- Depth Write | HDRP が、マテリアルを使うゲームオブジェクトの深度値を書き込むかを示します。 |
- Depth Test | HDRP が深度テストに使う比較関数を特定します。 |
- Cull Mode | マテリアルを使うゲームオブジェクトに除去するフェースを特定します。オプション: • Front: メッシュのフロントフェースを除去します。 • Back: メッシュのバックフェースを除去します。 このプロパティは、Double Sided を無効にしたときのみに表示されます。 |
Alpha Clipping |
マテリアルが Cutout シェーダー のように作動するかを示します。 機能に関する詳細およびこの機能が持つプロパティーのリストは、Alpha-Clipping に関するドキュメント を参照してください。 |
- Threshold | HDRP が各ピクセルをレンダリングするか決定するために使うアルファ値制限です。ピクセルのアルファ値が制限と等しいまたは制限以上の場合、HDRP はピクセルをレンダリングします。もし値が制限以下の場合は、HDRP はピクセルをレンダリングしません。デフォルト値は 0.5 です。 |
- Use Shadow Threshold |
HDRP がアルファクリッピングに別のしきい値を使うかを示します。 このプロパティーは Alpha Clipping を有効にしたときのみに表示されます。 |
- - Shadow Threshold |
HDRP がピクセルにシャドウをレンダリングするかを決定するために使うアルファ値の制限です。 このプロパティーは、Use Shadow Threshold を有効にしたときのみに表示されます。 |
- Alpha to Mask |
Alpha-to-coverage をオンにするかどうかを示します。プロジェクトで MSAA を使う場合は、Alpha-to-coverage がマルチサンプルカバレッジマスクをピクセルシェーダーの結果アルファ値に比例してマスクします。これは通常、アンチエイリアスを用いた植生とその他のアルファテストされたシェーダーに使われます。 このプロパティーは、Alpha Clipping が有効なときのみに表示されます。 |
- Prepass Threshold |
HDRP が透明深度プレパスに使うアルファ値の制限です。これは上で説明した、メインの Threshold プロパティーと同様に作用します。 このプロパティは、Transparent Depth Prepass のチェックボックスを有効にしたときのみに表示されます |
- Postpass Threshold |
HDRP が透明深度ポストパスに使うアルファ値の制限です。これは上で説明した、メインの Threshold プロパティーと同様に作用します。 このプロパティーは、Transparent Depth Postpass のチェックボックスを有効にしたときのみに表示されます。 |
Double Sided | HDRP がジオメトリでポリゴンの両面をレンダリングするかを示します。機能に関する詳細およびこの機能が展開するプロパティーのリストは、両面に関するドキュメント を参照してください。 |
- Normal Mode | HDRP が背面を向いたジオメトリ用の法線を計算するために使うモードを特定します。 • Flip: 裏面の法線は正面の法線の 180°です。これはマテリアルにも適用され、ジオメトリの両面で同じように見えます。 • Mirror: 裏面の法線は正面の法線を反転させます。これはマテリアルにも適用され、バックフェースで反転します。例えば葉っぱなど、ジオメトリの両面で同じ形状を維持したいときに便利です。 • None: 裏面の法線は正面の法線と同じです。 このプロパティーは、Double-Sided を有効にしたときのみに表示されます。 |
Material Type | マテリアルのタイプを指定します。これにより、選択するタイプに応じて、マテリアルを異なる設定でカスタマイズできます。オプションは以下の通りです。 • Subsurface Scattering: マテリアルに サブサーフェススキャタリング のワークフローを適用します。サブサーフェススキャタリングは、肌や植物の葉っぱのような半透明のオブジェクトとライトがどのように相互作用するか、光が侵入するかをシミュレートします。ライトがサブサーフェススキャタリングが適用されたマテリアルの表面に侵入すると、別のポイントでサーフェスを出る前に、散乱してぼやけます。 • Standard: マテリアルにベーシックメタリック Shader ワークフローを適用します。これはデフォルトの Material Type です。 • Anisotropy: マテリアルに異方性のワークフローを適用します。異方性が適用されたマテリアルのハイライトは、違う角度から見ると見え方が変わります。例えばブラッシュドメタルやベルベットなど、異方性ハイライトを含むマテリアルを作成する際に、この Material Type を使ってください。 • Iridescence: マテリアルに Iridescence ワークフローを適用します。遊色が適用されたマテリアルは、視野角または照明の角度が変化するにつれて、徐々に色が変わります。石鹸の泡、虹色の金属、または昆虫の羽などといったマテリアルを作成する際にこの Material Type を使います。 • Specular Color: マテリアルに Specular Color ワークフローを適用します。色のついた鏡面ハイライトを含むマテリアルを作成する際に、この Material Type を使います。これは ビルトインスペキュラ―シェーダー に類似しています。 • Translucent: マテリアルに Translucent ワークフローを適用します。この Material Type と厚みマップを使って、半透明のマテリアルをシミュレートします。Subsurface Scattering マテリアルとは対照的に、Translucent マテリアルはマテリアルを通過するライトはぼやけません。 機能に関する詳細および各 Material Type が展開するプロパティーのリストは、マテリアルタイプドキュメント を参照してください。 |
- Transmission |
HDRP が厚みマップを使ってマテリアルの半透明さをシミュレートするかを示します。サブサーフェススキャタリングおよび透過の設定は、Diffusion Profile から行います。詳細は、サブサーフェススキャタリング のドキュメントを参照してください。 このプロパティーは、Material Type ドロップダウンから Subsurface Scattering を選択したときのみに表示されます。 |
Receive Decals | HDRP がマテリアルの表面にデカールを描画できるかを示します。 |
Receive SSR/SSGI | スクリーンスペースリフレクションパスをプロセスする際に、HDRP がマテリアルを含むかを示します。HDRP はスクリーンスペースのグローバルイルミネーションを計算する際にもマテリアルを考慮します。 このプロパティは、Surface Type を Opaque に設定したときのみに表示されます。 |
Receive SSR Transparent | スクリーンスペースリフレクションパスを処理する際に、HDRP がマテリアルを含むかを示します。 このプロパティーは、Surface Type を Transparent に設定したときのみに表示されます。 |
Geometric Specular AA | マテリアルで HDRP がジオメトリックのアンチエイリアスを行うかを示します。曲がったジオメトリの表面のスムースネス値を修正し、スペキュラ―アーティファクトを除去します。 機能に関する詳細およびこの機能でアクセス可能なプロパティーのリストは、ジオメトリックスペキュラ―アンチエイリアスに関するドキュメント を参照してください。 |
- Screen Space Variance | 範囲が 0 から 1 の、幾何学的なスペキュラ―アンチエイリアスエフェクトの強度です。値が高ければそれだけ、エイリアシングが少なくよりぼやけた結果が得られます。 このプロパティーは、Geometric Specular AA を有効にしたときのみに表示されます。 |
- Threshold | HDRP がアーティファクトを減らすためにスムースネス値から差し引くオフセットの最大値です。 このプロパティーは、Geometric Specular AA を有効にしたときのみに表示されます。 |
Displacement Mode | HDRP がマテリアルの表面の高さを変更するために使う方法を特定します。オプションは以下の通りです。 • None: マテリアルに置換を適用しません。 • Vertex displacement: メッシュの頂点を Height Map に従って変換します。 • Pixel displaement: メッシュサーフェス上のピクセルを Height Map に従って変換します。 機能に関する詳細および各 Displacement Mode が展開するプロパティーのリストは、Displacement Mode に関するドキュメント を参照してください。 |
- Lock With Object Scale | Transform の Scale を使ってディスプレイスメントの高さを変更するかを示します。これにより、ディスプレイスメントの大きさと Transform の Scale の割合を保つことができます。 このプロパティーは、Displacement Mode を Vertex Displacement または Pixel Displacement に設定したときのみに表示されます。 |
- Lock With Height Map Tiling Rate | Height Map のタイリングを使ってディスプレイスメントの大きさを変更するかを示します。これにより、ディスプレイスメントの大きさと Height Map テクスチャのスケールの割合を保つことができます。 このプロパティーは、Displacement Mode を Vertex Displacement または Pixel Displacement に設定したときのみに表示されます。 |
- Minimum Steps | Unity がピクセル置換を実行する、Texture サンプルの最小数です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Maximum Steps | Unity がピクセル置換を実行する、テクスチャサンプルの最大数です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Fading Mip Level Start | ピクセルの置換エフェクトがフェードアウトを始めるミップレベルです。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Primitive Length | Unity が置換マッピングを適用するメッシュの長さ (メートル単位) です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Primitive Width | Unity が置換マッピングを適用するメッシュの幅 (メートル単位) です。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
- Depth Offset | HDRP が置換に従って深度バッファを修正するかを示します。これにより、深度バッファ (コンタクトシャドウ など) を使うエフェクトは、ピクセル置換のディテールをキャプチャすることができます。 このプロパティーは、Displacement Mode を Pixel Displacement に設定したときのみに表示されます。 |
Exposed Properties
プロパティー | 説明 |
---|---|
Base Color Map | マテリアルの色と不透明度の両方を制御するテクスチャを割り当てます。 |
Base Color | マテリアルの色を設定します。テクスチャを割り当てない場合、これはマテリアルの絶対色になります。テクスチャを割り当てた場合は、マテリアルの最終色は割り当てたテクスチャと選択した色の組み合わせになります。Surface Type ドロップダウンから Transparent を選択すると、色のアルファ値がマテリアルの透明度を制御します。 |
Alpha Cutoff | HDRP が各ピクセルをレンダリングするか決定するために使う、アルファ値の限度を設定します。ピクセルのアルファ値がこのしきい値と同等または高い場合、HDRP はピクセルをレンダリングします。しきい値よりも値が低い場合は、HDRP はピクセルをレンダリングしません。このプロパティーは Alpha Clipping 設定が有効なときのみ表示されます。 |
Alpha Cutoff Prepass | HDRP がフラグメントを深度プレパスから破棄するかを決定するために使う、アルファ値制限を設定します。 このプロパティーは Alpha Clipping と Transparent Depth Postpass 設定を有効にしたときのみ表示されます。 |
Alpha Cutoff Postpass | HDRP がフラグメントを深度ポストパスから破棄するかを決定するために使う、アルファ値制限を設定します。 このプロパティーは Alpha Clipping と Transparent Depth Postpass 設定を有効にしたときのみ表示されます。 |
Alpha Cutoff Shadows | HDRP がピクセルにシャドウをレンダリングするかを決定するために使うアルファ値制限を設定します。 このプロパティーは、Use Shadow Threshold 設定を有効にしたときのみに表示されます。 |
Base UV Scale Transform | Base Color Map、Normal Map、および AO Map にタイル率 (xy) とオフセット (zw) を設定します。 |
Normal Map | 接線空間において、マテリアルに法線マップを定義するテクスチャを割り当てます。 |
Normal Strength | 0 から 8 の間で法線強度を修正します。 |
AO Map | マテリアルにアンビエントオクルージョンを定義するテクスチャを割り当てます。 |
AO Use Lightmap UV | AO Map をサンプルするために使う UV チャンネルを設定します。有効にすると、UV1 チャンネルが使われます。UV がオーバーラップしている場合 (ヘアカードによく見られます) に便利です。 |
Smoothness Mask | マテリアルにスムースネスを定義するテクスチャを割り当てます。 |
Smoothness UV Scale Transform | Smoothness Mask Map にタイル率 (xy) とオフセット (zw) を設定します。 |
Smoothness Min | マテリアルに最小スムースネスを設定します。 |
Smoothness Max | マテリアルに最大スムースネスを設定します。 |
Specular Color | Unity が主に白黒の主要スペキュラーハイライトの色と、着色されたセカンダリー鏡面ハイライトの両方に使う、ハイライトの代表色を設定します。 |
Specular Multiplier | この乗数で主要スペキュラーハイライトを変更します。 |
Specular Shift | 主要スペキュラーハイライトの位置を修正します。 |
Secondary Specular Multiplier | この乗数で補助スペキュラーハイライトを変更します。 |
Secondary Specular Shift | 補助スペキュラーハイライトの位置を修正します。 |
Transmission Color | 後方からヘアに浸透するスペキュラーライティングの一部を設定します。これはカラーごとのチャンネルベースなので、浸透するライトの色を設定するためにこのプロパティーを使うことができます。(0, 0, 0) に設定すると、ヘアからライトが浸透するのを防ぎます。(1, 1, 1) に設定すると効果が強化され、大量の白いライトがヘアに浸透します。 |
Transmission Rim | 先端周辺の後方から照明が当たるヘアの強度を設定します。0 に設定すると透過エフェクトを完全に除去します。 |
Advanced Options
プロパティー | 説明 |
---|---|
Enable GPU Instancing | このチェックボックスを有効にすると、可能な場合は、同じジオメトリとマテリアルのメッシュを 1 つのバッチでレンダリングするように HDRP に指示します。これにより、レンダリングのスピードが上がります。さまざまなマテリアルがある場合やハードウェアが GPU をサポートしない場合は、HDRP はメッシュを一度にレンダリングできません。例えば、オブジェクトピボットに基づくアニメーションを持つゲームオブジェクトの 静的バッチ はできませんが、GPU ならそれらのインスタンス化が可能です。 |
Baked Emission | エミッションカラーがグローバルイルミネーションに影響を与えるかを示します。 |
Motion Vector For Vertex Animation | HDRP が頂点アニメーションを使うゲームオブジェクトにモーションベクトルを書き込むかを示します。これにより、頂点アニメーションに起因するゴーストがなくなります。 |
Add Precomputed Velocity | Alembic ファイルに保存された事前計算された速度情報を使うかを示します。 |
制限
エリア ライト は現在、Fabric または Hair マテリアルをサポートしていません。つまり、以下のマテリアルを照らしたり影を作ったりしません。