HD レンダーパイプラインの屈折
HD レンダーパイプライン (High Definition Render Pipeline、HDRP) は屈折アルゴリズムを使って、マテリアル内の光の誤差と吸収をシミュレートします。演算の速度を上げるために、HDRP は光の進路について以下の仮定を使います。
- 光はまず空気中を進み、その後マテリアルを通過してから、再び空気を通過します。つまり、アルゴリズムは、空気からマテリアルへ、そしてマテリアルから空気への両接点で光の誤差を計算します。
- 単純な形状は、オブジェクトの面を概算することができます。この形状は 屈折モデル で定義されます。
HDRP は屈折モデルを使って、誤差のある光の方向と光がマテリアル内を進む距離を判断します。それからプローブプロキシボリュームに対してレイキャストを行い (プロキシレイキャスティング)、屈折した光線がぶつかるポイントを探します。
屈折の使用
マテリアルで屈折を設定するためには、以下の手順に従ってください。
- Material をクリックして Inspector で表示する。
- Surface Type ドロップダウンをクリックし、Transparent を選択します。これで Inspector で Transparency Inputs セクションが展開されます。
- Refraction Model ドロップダウンをクリックし、マテリアルに 屈折モデル を選択します。
- Base Map のアルファ値が 1 よりも低く、 Material が屈折するようにします。値が 0 の場合は、Material は完全に屈折します。
屈折を制御するプロパティーに関する詳細は、サーフェスタイプ を参照してください。
屈折させるオブジェクトのマテリアルの滑らかさが低下するほど、よりぼやけた屈折になることを覚えておいてください。
スクリーンスペース屈折を効率的に使いたい場合も、Proxy Volume を設定する必要があります。これは、スクリーンスペース屈折が Probe Proxy Volume を使ってシーンを概算し、正しい屈折色を見つけるためです。最高の結果を得るためにも、プロキシボリュームは屈折した光線が着地するであろうシーンをなるべく多く概算しなければなりません。プロキシボリュームの詳細は、リフレクションプロキシボリューム ページを参照してください
屈折の計算
HDRP は以下の技法を使って、光の屈折を計算します。
- スクリーンスペース屈折
- リアルタイムおよびベイクした リフレクションプローブ データ
Unity プロジェクトでどの技法を使うかを判断できるよう、以下の表でそれぞれの技法のリソース負荷を説明します。
技法 | 説明 | ランタイムのリソース負荷 |
---|---|---|
Screen space refractions | リアルタイムですべてのゲームオブジェクトをキャプチャする、スクリーンスペースソリューションです。 | 低いです。 |
Baked Reflection Probe | 手動で配置する、ローカル Reflection Probe です。ベイキングプロセス中に、静的ゲームオブジェクトのみをキャプチャします。 | 低いです。 |
Realtime Reflection Probe | 手動で配置する、ローカル Reflection Probe です。リアルタイムですべてのゲームオブジェクトをキャプチャします。 | 中-高です (ゲームオブジェクトキャプチャの解像度によって異なります)。 |
屈折のヒエラルキー
最高品質の屈折を生成するために、HDRP は各ピクセルを最も正確に表現する屈折技法を選択し、それを用いて屈折を計算すると同時に、その他のすべての技法とブレンドします。
これを実現するために、HDRP は Refraction ヒエラルキーと呼ばれる特定の順序で利用可能な技法を確認します。Refraction ヒエラルキーの順序は以下の通りです。
- スクリーンスペース屈折
- 標準 および 平面 Reflection Probes のサンプリング
つまり、スクリーンスペース屈折がピクセルに対して何も情報を返さなければ、HDRP はそのピクセルに Reflection Probe を使います。
スクリーンスペース屈折
屈折ヒエラルキーの最初のレベルは、スクリーンスペースソリューションです。スクリーンスペース屈折を計算するために、アルゴリズムは反射オブジェクトから光線をトレースします。そしてマテリアルのプロパティーに応じて光線を屈折させます。屈折した光線を計算するために、アルゴリズムは屈折性のあるオブジェクトは単純な形状 (屈折モデル) として概算できるものと仮定します。
屈折した光線はその後、最も近いプローブプロキシボリュームと交差し、屈折した光線の結果を最も適切に概算する、スクリーンスペースのピクセルを見つけます。利用できるリフレクションプローブプロキシがない場合は、HDRP は無限に 1 つの投影にフォールバックします。
リフレクションプローブ
屈折ヒエラルキーの第二レベルは、リフレクションプローブ を使います。例えば反映するエリアがオフスクリーンにあるなど、スクリーンスペース屈折がピクセルに対して有益な屈折データを生成しないと、HDRP は Reflection Probe を使います。 Reflection Probe はそれぞれの視点からシーンをキャプチャして、結果をテクスチャとして保存します。Probe の範囲内にある Refractive Materials はその Probe のテクスチャを問い合わせて、正確な屈折をシミュレーションします。
スクリーンスペース屈折とは異なり、Reflection Probe は手動で設定しなければなりません。
Reflection Probes に関する詳細は、以下を参照してください。
屈折モデル
HDRP は単純な形状を使ってゲームオブジェクトの面を概算します。
- Sphere: 面をスフィアとして概算します。
- Box: 面を空洞のボックスとして概算します。この場合、厚みはボックスの 2 つの平行な面の間の距離と考えます。
- Thin: 厚みが 5 cm に固定された、空洞のボックスとして面を概算します。
例
固形のゲームオブジェクトには、マテリアルが使われているゲームオブジェクトのサイズとほぼ同じ厚みを持つ、Sphere Refraction Model を使います。厚みは Refraction Thickness を使って設定します。
空洞の屈折ゲームオブジェクトには (例えば泡など)、Thin 屈折モデルか、または厚み値の小さい Box を使います厚みは Refraction Thickness を使って設定します。