Silk シェーダー
Silk シェーダーは、HD レンダーパイプライン (High Definition Render Pipeline、HDRP) で異方性ファブリックをレンダリングする開始点んです。Silk シェーダーを使ってシルク、サテン、ナイロン、そしてポリエステルのような生地を作成することができます。 一般的に、シルクとその他の合成繊維は、単一繊維として生産されるため、より滑らかです。織り上げられると、異方性のある鏡面ハイライトを持つファブリックが出来上がります。
よく見てみると、Silk シェーダーは事前設定された Shader Graph です。Silk シェーダーの実装について、または独自の Silk シェーダーバリアントの作成についてもっと学びたい方は、ファブリックマスタースタック に関する Shader Graph ドキュメントを参照してください。
Silk Fabric Sample のインポート
HDRP は使用開始に役立つ Silk マテリアルサンプルを用意しています。この Sample を見つけるには、
- Windows > Package Manager に移動し、パッケージリストから High Definition RP を選択します。
- パッケージの詳細が表示されているメインウィンドウで、Samples セクションを見つけてください。
- Sample をプロジェクトにインポートするには、Import into Project ボタンをクリックします。これによりプロジェクト内に Samples フォルダーが作られ、選択した Sample がインポートされます。これは、Unity が今後 Samples をインポートする場所でもあります。
- Asset ウィンドウで Samples > High Definition RP > 11.0 へ移動し、Fabric シーンを開きます。ここにはシーンに関連するシルクサンプルマテリアル設定があり、利用できます。
Silk マテリアルの作成
HDRP の新しいマテリアルは、デフォルトで Lit シェーダー を使います。ゼロから Silk マテリアルを作成するには、マテリアルを作ってから Silk Shader を使わせます。手順は以下の通りです。
Unity Editor で、プロジェクトの Assets ウィンドウに移動します。
Asset Window を右クリックし、Create > Material を選択します。これで新しい Material が Unity プロジェクトの Asset フォルダーに追加されます。
Material Inspector の上部にある Shader ドロップダウンをクリックし、HDRP > Fabric > Silk を選択します。
スレッドマップ
Fabric シェーダーは Thread Map (スレッドマップ) を使ってファブリックで頻繁に使われるディテールを表現できます。これは HDRP Lit シェーダー内にある ディテールマップ に類似しています。Thread Map 入力は、メモリーの最適化用にチャンネルパックされており、法線マップで精密性を最適化できるようにアレンジされています。Fabric Material Sample には、あらかじめ用意されたスレッドマップがいくつか含まれています。
スレッドマップテクスチャの形式は下記となります。
- Red: アンビエントオクルージョン
- Green & Alpha: 法線
- Blue: スムースネス
よく見てみると、ファブリックシェーダーは SubGraph オペレーターを使いスレッドマップを適用します。スレッドマップ実装に関する詳細や使い方に関しては、以下を参照してくだい。
- Unity Editor で Shader Graph アセットの Shader Editor を開く。
- グラフビューの好きなっ所を右クリックし、Create Node を選択する。
- Utility > High Definition Render Pipeline > Fabric > Thread Map Detail へ行き選択します。これでグラフに Thread Map オペレーターが追加されました。
ファズマップ
Fuzz Map (ファズマップ) を使うと、ファブリックシェーダーは、表面にさらにけばや綿毛などのデイテールを追加することができます。ファズマップは、シングルチャンネルテクスチャです。ファブリックシェーダーは、ベースカラーマップと混ぜ合わせ、ファブリックマテリアルをシェーディングするための最終的なカラーを作ります。
プロパティー
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 UV Mask | 希望のチャンネルに一致するカラムに "1" を、他には 0 を入力して、Base UV チャンネルを設定します。 |
Base UV Scale Transform | ベース UV にタイル率 (xy) とオフセット (zw) を設定します。 |
Base Color Map | マテリアルのベースカラーを制御するテクスチャを割り当てます。 |
Base Color | マテリアルの色を設定します。テクスチャを割り当てない場合、これはマテリアルの絶対色になります。テクスチャを割り当てた場合は、マテリアルの最終色は割り当てたテクスチャと選択した色の組み合わせになります。Surface Type ドロップダウンから Transparent を選択すると、色のアルファ値がマテリアルの透明度を制御します。 |
Mask Map AO(G) S(A) | チャンネルパックされたテクスチャ をRGBA チャンネル内の次のマテリアルマップ割り当てます。 •Green: アンビエントオクルージョンマップを格納します。 •Alpha: スムースネスマップを格納します。チャンネルパックされたテクスチャおよびマスクマップに関する詳細は、マスクマップ を参照してください。 |
Smoothness Min | マテリアルの最小スムースネスを設定します。 |
Smoothness Max | マテリアルの最大スムースネスを設定します。 |
Specular Color | 鏡面ハイライトの色を設定します。 |
Normal Map | 接線空間において、マテリアルに法線マップを定義するテクスチャを割り当てます。 |
Normal Map Strength | 0 から 8 の間で法線強度を修正します。 |
Use Thread Map | スレッドマップディテールがマテリアルに適用されるかを設定します。 |
Thread Map AO(R) Ny(G) S(B) Nx(A) | ファブリックスレッドにパラメーターを定義するテクスチャを RGBA チャンネル内の次のマップに割り当てます。 • Red: アンビエントオクルージョンマップを格納します。 • Green: 法線の Y コンポーネントを格納します。• Blue: スムースネスマップを格納します。 • Alpha: 法線の X コンポーネントを格納します。チャンネルパックされたテクスチャおよびマスクマップに関する詳細は、マスクマップ を参照してください。 |
Thread UV Mask | 希望のチャンネルに一致するカラムに "1" を、他には 0 を入力して、Thread UV チャンネルを設定します。 |
Thread UV Scale Transform | スレッド UV にタイル率 (xy) とオフセット (zw) を設定します。 |
Thread AO Strength | Thread Map に格納された AO の強度を変更します。 |
Thread Normal Strength | Thread Map に格納された Normal の強度を変更します。 |
Thread Smoothness Scale | Thread Map に格納された Smoothness のスケールを変更します。 |
Fuzz Map | マテリアルの Base Color にファズディテールを追加するテクスチャを割り当てます。 |
Fuzz Map UV Scale | Fuzz Map をサンプルするために使われる Thread UV のスケールを設定します。 |
Fuzz Strength | Base Color に追加される Fuzz Color の強度を設定します。 |
Diffusion Profile | Diffusion Profile を設定し、マテリアルの Subsurface Scattering プロパティーを制御します。 |
Advanced Options
プロパティー | 説明 |
---|---|
Enable GPU Instancing | このチェックボックスを有効にすると、可能な場合は、同じジオメトリとマテリアルのメッシュを 1 つのバッチでレンダリングするように HDRP に指示します。これにより、レンダリングのスピードが上がります。さまざまなマテリアルがある場合やハードウェアが GPU をサポートしない場合は、HDRP はメッシュを一度にレンダリングできません。例えば、オブジェクトピボットに基づくアニメーションを持つゲームオブジェクトの 静的バッチ はできませんが、GPU ならそれらのインスタンス化が可能です。 |
Baked Emission | エミッションカラーがグローバルイルミネーションに影響を与えるかを示します。 |
Motion Vector For Vertex Animation | HDRP が頂点アニメーションを使うゲームオブジェクトにモーションベクトルを書き込むかを示します。これにより、頂点アニメーションに起因するゴーストがなくなります。 |
Add Precomputed Velocity | Alembic ファイルに保存された事前計算された速度情報を使うかを示します。 |
制限
エリア ライト は現在、Fabric または Hair マテリアルをサポートしていません。つまり、以下のマテリアルを照らしたり影を作ったりしません。