HDRPの機能
#HDRP
文中でtransparentを透明、translucentを半透明としています。
Features List(機能一覧)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/HDRP-Features.html
High Definition Render Pipeline overview(HDRPオーバービュー)
HDRP全機能の一覧を示す。このドキュメントではHDRP機能の以下カテゴリについて説明する。
Project(プロジェクト)
Material(マテリアル)
Lighting(ライティング)
Camera(カメラ)
Tools(ツール)
Programming(プログラミング)
Project(プロジェクト)
Platform support(サポート対象のプラットフォーム)
HDRPプロジェクトは、Xbox One、PS4、コンピュートシェーダー互換のあるDirectX 11、DirectX 12、Metal、Vulkanのプラットフォームで動作させることができる。
Virtual Reality(VR)
HDRPはVRと互換性があり、シングルパスレンダリングに最適化されている。VRに関するより詳しい情報はVRドキュメントを参照。
Camera-relative rendering(カメラレラティブレンダリング)
ビルトインのレンダーパイプラインに比べて、HDRPを使うと広大なワールドスペース座標で遠くのゲームオブジェクトをレンダリングするのがより頑健で、数値計算が安定する。HDRPがどのように実現しているかについての情報は、カメラレラティブレンダリングのドキュメントを参照。
Dynamic resolution(動的解像度)
ダイナミックレゾリューションを使うと、HDRPはレンダリングする解像度を変更できる。これによって、可能であればハードウェアの機能の利用や、現在のビューポイントと等しいかそれ以下のレンダーターゲットでのレンダリングの両方が可能になる。これにより、Unityプロジェクトで安定したフレームレートの実現の手助けになる。ダイナミックレゾリューションとHDRPがサポートするタイプについてのより詳しい情報は、動的解像度のドキュメントを参照。
Volumes(ボリューム)
ボリュームを使って、環境シーンとポストプロセッシングエフェクトの設定をローカライズできる。シーンには複数のボリュームを持たせることができ、フォグ密度、スカイカラー、カメラ位置による露出などを作ることができる。HDRPでボリュームをどのように使うかについては、Volumesのドキュメントを参照。
Materials(マテリアル)
HDRPシェーダーを使い、以下に示す機能が利用できる。
Opaque/transparent surfaces
透明サーフェス用のいくつかのブレンドモード
フォグと一緒に利用できる透明サーフェス
透明サーフェスの屈折と歪曲
Material types
光沢のある金属やベルベットのように、見る角度によってハイライトが変化するサーフェスでの異方性
シャボン玉や虫の羽根のように、見る角度によって色が変わって見えるサーフェスでのイリデッセンス
例えばアルミニウム、銅、鉄などの、スペキュラーライティングのみのリットサーフェスで、ベースカラー入力がスペキュラーカラーとなるメタリック
色のついているスペキュラーハイライトにしたいサーフェスのスペキュラーカラー
肌や木の葉のように、光の相互作用と散乱をシミュレーションする半透明サーフェスのサブサーフェススキャッタリング
光の相互作用をシミュレーションし、マテリアルを透過する光がぼやけないサーフェスでの半透明
ハイトマップで変位させたいサーフェス上のピクセルと頂点の変位
自己発光する光源のように使いたいマテリアルでのエミッション
サーフェスにテクスチャを投射するデカール(Decals)
細かなディテールをサーフェスに付け加えるディテールマッピング
Lit Shader(リットシェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-LitShader.png
Litシェーダーを使ってリアリスティックなマテリアルを簡単に作ることができ、サブサーフェススキャッタリング、イリデッセンス、半透明といった効果を使えるオプションがある。LitシェーダーはHDRPでデフォルトのシェーダーとなっている。シェーダープロパティの全リストを含むより詳しい情報は、Litシェーダードキュメントを参照。
Layered Lit Shader(レイヤードリットシェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-LayeredLitShader.png
Layered Litシェーダーはメインのマテリアルと他のタイルマテリアルを組み合わせ、高解像度テクスチャに近い品質のビジュアルを作り出し、Litシェーダーで高解像度テクスチャを使うより性能にかかわるコストが低い。シェーダープロパティの全リストを含むより詳しい情報は、Layered Litシェーダードキュメントを参照。
Unlit Shader(アンリットシェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-UnlitShader.png
Unlitシェーダーを使うと、ライティングの影響を受けないマテリアルを作ることができる。Unlitシェーダーはビジュアルエフェクトで使うのに最適だ。シェーダープロパティの全リストを含むより詳しい情報は、Unlitシェーダードキュメントを参照。
設定でShadow Matteのオプションを使うと、ライティングなしにサーフェスで影を受け取ることができる。アルファを使う不透明と透明のシャドウがある。
StackLit Shader(スタックリットシェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-StackLitShader.png
StackLitシェーダーは品質に関わるパフォーマンス面でLitシェーダーより優れている。このシェーダーはLitシェーダーよりも正確にサーフェスを覆い、Litシェーダーと違い異方性、SSS、イリデッセンス、かすみのパラメータを同時に利用できる。
Hair Shader(髪シェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-HairShader.png
HairシェーダーはUnityプロジェクトでリアルな髪の毛を正確にレンダリングする専用のシェーダー。Kajiya Kayライティングモデルをより少ない手間で使えるよう改良したもので、柔軟性にも優れている。
Fabric Shader(布シェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-FabricShader.png
FabricシェーダーをHDRPで使うとリアルな織物のマテリアルをレンダリングできる。綿、羊毛、シルクといったライティングモデルを使い、幅広い布表現を作り出すことができる。
AxF Shader(AxF シェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-AxFShader.png
AxFシェーダーはX-Rite社のAxF measured Materialフォーマットをサポートしている。Unity Industryバンドルの一部であるAxFインポーターでは、AxFアセットをインポートすると自動的にAxFマテリアルが使われる。
Decal Shader(デカールシェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-DecalShader.png
Decalシェーダーはシーン中のサーフェス上にデカールを配置できる。サーフェスにデカールを適用するには、サーフェスに投射するためにDecal Projectorコンポーネントを利用するか、メッシュに直接デカールを適用してサーフェス上に配置する。シェーダープロパティの全リストを含むより詳しい情報は、Decalシェーダードキュメントを参照。
Terrain Shader(地形シェーダー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-TerrainShader.png
Terrain Litシェーダーはビルトインのテレインシステムと互換性があり、単一のドローコールで8層までサポートしている。このシェーダーはLitシェーダーと同じライティングモデルを使用する。
Lighting(ライティング)
Light types(ライトのタイプ)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-LightTypes.png
HDRPのライトでは、シーンを最もリアルにライティングするために、物理ライトユニット(PLU)のタイプを利用する。PLUを使ってライトを正しく動作させるためには、HDRPのユニット規約に従う必要がある(Unity上で1の単位は1メートルに等しい)。HDRPでのライトの種類は以下のようなものがある。
Directional(ディレクショナルライト)
Color temperature(色温度)
色指定できるクッキー
シャドウマスクをサポート
Spot(スポットライト)
Color temperature(色温度)
色指定できるクッキー
シャドウマスクをサポート
コーン、ピラミッド、ボックスの各形状
Point(ポイントライト)
Color temperature(色温度)
色指定できるクッキー
シャドウマスクをサポート
Rectangle(矩形ライト)
Color temperature(色温度)
色指定できるクッキー
シャドウマスクをサポート
Tube(チューブライト)
Color temperature(色温度)
シャドウマスクのサポートなし
Disk(ディスクライト、ベイク専用)
Color temperature(色温度)
シャドウマスクのサポートなし
ライトプロパティの全リストを含むより詳しい情報は、Lightコンポーネントドキュメントを参照。
Reflection probes(リフレクションプローブ)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-ReflectionProbes.png
HDRPはシーンでリアルな反射をリアルタイムで実現するための、キューブマップと平面のGPUリフレクションプローブをサポートする。より詳しい情報は、リフレクションプローブドキュメントを参照。
Screen-space reflection and refraction(スクリーンスペースリフレクションとリフラクション)
HDRPは反射と屈折にスクリーンスペースのソリューションを提供する。スクリーンのデプスとカラーバッファを使い、カメラに対して光が移動する経路をシミュレーションするのを助け、正確に反射と屈折を計算する。より詳しい情報は、スクリーンスペースリフレクションとスクリーンスペースリフラクションのドキュメントを参照。
Emission(エミッション)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-Emission.png
HDRPマテリアルはライトエミッションをサポートし、マテリアルを自己発光する光源にできる。グローバルイルミネーションはエミッションを記録し、現実世界のライトに基づくインテンシティを設定する物理ライトユニットを使うことができる。
Shadows(影)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-Shadows.png
HDRPは影を計算するのに複数の方式を利用する。
Shadow cascades(シャドウカスケード): HDRPはカメラからの距離に基づいた、ディレクショナルライトによる影の品質を制御するのにカスケード分割を使う。
Contact Shadows(コンタクトシャドウ): HDRPはデプスバッファ内でレイマーチングを行い、影の処理を行う。それによってHDRPは、通常の影アルゴリズムがとらえられないような小さいディテールでもキャプチャできる。
Micro Shadows(マイクロシャドウ): HDRPはマテリアルに設定されたノーマルマップとアンビエントオクルージョンマップを使い、それらのマップをメッシュであるかのように影を推計する。
メインのカスケードシャドウマップでエリアシングを減らすのに、PCFやPCSSのような別のフィルタを使うことができる。
パンクチュアルライト(スポットライト、ポイントライト)やエリアライトの影では、HDRPはライトがスクリーン範囲をどれだけカバーするかによる動的解像度を使うことができる。HDRPはシャドウアトラスの中身が全体ではない場合に再スケールする。
HDRPが利用するフィルタリングアルゴリズムについてのより詳しい情報は、フィルタリングクオリティのドキュメントを参照。
シャドウマップの高度な設定では、影に色合いや、また半影を適用できる。
Sky(スカイ)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-Sky.png
HDRPでは、ボリュームでスカイの設定と変更ができ、またシーン中のカメラ位置に依存するようなスカイタイプが利用できる。HDRPではスカイのビジュアルを、使用する環境ライティングから切り離すことができる。HDRPは、以下に示すUnityプロジェクトで使用できるビルトインのスカイタイプを含む。
Gradient Sky(グラディエントスカイ): スカイの天空、中空、地平線の各セクションで3色をレンダリングするシンプルなスカイ。
HDRI Sky(HDRIスカイ): HDRIボリュームコンポーネントにセットしたキューブマップテクスチャで、スカイ環境を構築する。
Physically Based Sky(物理ベースのスカイ): 高度によって密度が指数関数的に現象するふたつの大気がある、球状の惑星をシミュレーションする。
Procedural Sky(プロシージャルスカイ): プロシージャルスカイボリュームのコンポーネントで選択した値に応じた環境を作り出す。この機能はビルトインレンダーパイプラインのプロシージャルスカイに近い。このスカイタイプは廃止されたが、まだHDRPプロジェクトで利用できる。より詳しい情報は、Unity2019.2からUnity2019.3へのアップグレードガイドを参照。
Fog(フォグ)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-Fog.png
HDRPでは、ボリュームでフォグの設定と変更ができ、またシーン中のカメラ位置に依存するようなフォグタイプが利用できる。フォグには自分で色をセットしたり、スカイの色を使うことができる。HDRPのフォグは不透明と透明なサーフェスで両方のマテリアルに影響を与える。HDRPはオプションのボリューメトリックエフェクトで指数関数的なフォグを実装する。
Light Layers(ライトレイヤー)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-LightLayers.png
ライトレイヤーはライトとメッシュを指定するレイヤーマスク。ライトはライトレイヤーで指定したメッシュのみを照らす。またライトレイヤーは、シャドウマップセッティングで影をライティングから切り離す。ライトレイヤーについてのより詳しい情報は、ライトレイヤードキュメントを参照。
シャドウマップのライトレイヤードロップダウンで、どのライトからの影をどのオブジェクトが受け取るかを制御できる。デフォルトではライトレイヤーとシャドウマップのライトレイヤーは同期しており、結果として首尾一貫(オブジェクトがライトを受け取るなら、影を投げかける)したものとなっている。シャドウマップのライトレイヤーについてのより詳しい情報は、シャドウライトレイヤードキュメントを参照。
Screen space ambient occlusion(スクリーンスペースアンビエントオクルージョン)
HDRPには、アンビエントオクルージョンをリアルタイムで近似計算する、スクリーンスペースアンビエントオクルージョンの機能が含まれている。シーンに配置されたライトとゲームオブジェクト周辺の環境に基づき、インテンシティとゲームオブジェクトのサーフェス上のアンビエントライトの位置を近似計算する。
Screen space specular occlusion(スクリーンスペーススペキュラーオクルージョン)
HDRPはまた、直接的な情報をサポートするスクリーンスペースアンビエントオクルージョンを提供する。HDRPはこれを間接光のスペキュラーライティングにダイレクトに適用する。
Physical light units(物理ライト単位)
HDRPは実世界の物理ライト単位を使い、シーンを簡単にリアルなやり方でライティングできる。どのような単位をHDRPが利用するかのリストを含むより詳しい情報は、物理ライト単位ドキュメントを参照。
Camera(カメラ)
Post-processing(ポストプロセッシング)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-PostProcessing.png
HDRPには、並外れた高品質のグラフィックを作りだす、専用に実装されたポストプロセッシングがある。ポストプロセッシングを使ってフルスクリーンのフィルタを適用することができ、少しのセットアップ時間で抜本的にUnityプロジェクトのビジュアルを改善するカメラエフェクトを使うことができる。HDRPのポストプロセッシングに関するオーバービューは、ポストプロセッシングドキュメントを参照。
Custom Post-processing(カスタムポストプロセッシング)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-CustomPostProcess.png
HDRPではボリュームのフレームワークを使い、ポストプロセッシングのカスタマイズを追加できる。不透明とスカイオブジェクトの処理後や、ビルトインのポストプロセッシング前、あるいはその後に処理が注入される。より詳しい情報は、カスタムポストプロセッシングドキュメントを参照。
Anti-Aliasing(アンチエリアシング)
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-AntiAliasing.png
HDRPには、性能と品質のことを念頭に置いて、エリアシングを取り除く以下に示すアンチエリアシングが含まれている。
Multisample anti-aliasing(MSAA): すべてのピクセルから複数の位置をサンプルし、これらを組み合わせて最終的なピクセルを作り出す。HDRPでは最もリソースを消費するアンチエリアシング技術。
Temporal anti-aliasing(TAA): ヒストリバッファのフレームを利用して、FXAAよりも効果的にエッジをスムースにする。モーションでエッジをスムースにするには実際良い手法だが、モーションベクタを有効にしなければならない。
Subpixel morphological anti-aliasing(SMAA): 画像の境界からパターンを探し出し、それをもとに境界の上でピクセルを混ぜ合わせる。
Fast approximate anti-aliasing(FXAA): ピクセルレベルごとにエッジをスムースにする。HDRPでは最もリソース消費が少ないアンチエリアシング技術。
Physical Camera
HDRPは物理ライト単位のような他の物理ベース機能とシームレスに動作する、物理ベースのカメラシステムを使っていて、物理的に正確な、統一された結果を作り出す。物理ベースカメラは現実世界のカメラのように動作し、そのため同じ性質を使っている。このことからHDRPのカメラを現実のカメラのようにふるませるように構成でき、露出や被写界深度のエフェクトで望んだ結果を出すことができる。HDRPの物理ベースカメラについて、使い方の説明を含むより詳しい情報は、カメラコンポーネントドキュメントを参照。
Custom Passes
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-CustomPass.gif
カスタムパスはシェーダーとC#で書いた処理をレンダーループ内の特定の箇所に注入できる機能で、オブジェクトを描画したりフルスクリーンパスを実行したり、デプスやカラー、法線といった情報をカメラバッファから読み取ることができる。カスタムパスドキュメントを参照。
Tools
Render Pipeline Wizard
HDRPをすばやく正確にセットアップするのを助けるために、HDRPはレンダーパイプラインウィザードを提供している。設定上の問題を1回のボタンクリックで解決し、設定済のデフォルトシーンセッティングでテンプレートシーンを作成する。レンダーパイプラインウィザードについて、使い方の説明を含むより詳しい情報は、レンダーパイプラインウィザードドキュメントを参照。
Render Pipeline Debugger
レンダーパイプラインデバッガーは、起きている問題の理解を助けあらゆる問題をすばやく解決する、多くのデバッグ機能とビジュアル表示機能を含んでいる。レンダーパイプラインデバッガーについて、使い方の説明を含むより詳しい情報は、レンダーパイプラインデバッガードキュメントを参照。
LookDev
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-LookDev.png
ルックデブはアセットをインポートし、見栄えの良い一貫したライティング環境に表示できるビューア。外から持ち込んだアセットを検証したり、HDRPで作成したアセットのショウケースとして使う。ルックデブについて、使い方の説明を含むより詳しい情報は、ルックデブドキュメントを参照。
MatCap mode
マットキャップモードでは、HDRPはシーンウィンドウのライティングボタンをマテリアルキャプチャ(MatCap)ビューに置き換える。このモードはシーンにライティングせずにシーンを操作し感覚をつかむのに特に役に立つ。マットキャップモードについて、使い方の説明を含むより詳しい情報は、マットキャップモードを参照。
Backplate
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Images/HDRPFeatures-HDRISky.png
さまざまな形状(四角、円、楕円、無限平面)の平面に、直接HDRIスカイから底の部分を映すことができる。
ピクセルフットプリントを変更することで、オブジェクトのスケールをシーンにあわせることができる。
Programming
Material architecture
HDRPはフォワードとデファードのマテリアルをサポートしている。デファードマテリアルはフォワードマテリアルより効果的だが、サポートしているプロパティにわずかに制限がある。フォワードマテリアルはプロパティの制限はないが、デファードマテリアルよりレンダリングが遅い。
HDRPのマテリアルアーキテクチャは自分のフォワードマテリアルを追加することができ、コンパイルしなければいけないHDRPのマテリアルリストに追加できる。
Lighting architecture
HDRPは、不透明と透明のゲームオブジェクトのフォワードとデファードのレンダリングで、タイルとクラスターのレンダラーをハイブリッドで利用している。これはローカルのライトリストを作り、HDRPがたくさんのライトを使ってレンダリングできるようにしている。SSSや異方性を使うような、複雑なマテリアルをライティングするのにはフォワードレンダラーを使う。標準のLitやUnlitマテリアルなどの共通のマテリアルでは、ライティングの処理スピードを上げるためにデファードレンダラーを使う。HDRPライティングアーキテクチャについて、タイルとクラスターのレンダリングについての説明を含むより詳しい情報は、ライティングパイプラインドキュメントを参照。
Control on Shadow Update
HDRPではライトに問い合わせてシャドウマップを更新するAPIを提供している。シャドウマップのアップデートモードをオンデマンド(OnDemand)にセットし、RequestShadowMapRenderingクラスのRequestShadowMapRendering()を呼び出すだけで良い。