Note that this guide was originally created for use with the Built-in Render Pipeline in Unity 2017.3. For information on adapting this guide for use with the Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP), see Update: believable visuals in URP and HDRP.
ポストプロセスは、レンダリングされた既存のシーンに基づくレンダリングエフェクトです。これは、通常、シーンビューに依存し、最終レンダリングを行う前に、レンダリングされたシーンの上にレイヤー化されます。この機能の利点は、既存のコンテンツに変更を加えることなく、シーンの見た目を劇的に向上できるということです。
現実のようなシーンを作成するために、ポストプロセス機能をすべて使用する必要はありません。しかし、シーンをさらに向上させるこの性能には、システムを理解するのに時間をかけるだけの価値はあります。 このセクションは、状況に応じたポストプロセスエフェクトを判断するのに役立ちます。また、これらの高度な機能に伴う落とし穴を回避する助けになるでしょう。
ポストプロセスに関して詳しくは ポストプロセシングの概要 を参照してください。
3D ポリゴンを解像度が制限された 2D スクリーンにラスタライズすると、最終的なピクセルはエイリアシング (オブジェクトのエッジの階段のようなもの) を示します。リアルタイム 3D でのアンチエイリアス技術には、SSAA (スーパーサンプリング)、MSAA (マルチサンプリング)、FXAA (fast approximate anti-aliasing)、SMAA (spatial anti-aliasing)、TXAA (temporal anti-aliasing) など、さまざまなソリューションがあります。 現在、その性能と比較的高いパフォーマンスを理由に、FXAA と TXAA がもっともよく使われています。例えば、サンプルシーンの以下の画像は、FXAA と TXAA の比較です。
FXAA は目につくエイリアシングの一部をうまく修正しますが、TXAA はこれよりさらに進んで、パフォーマンスがより向上しています。
FXAA は純粋なポストプロセスアンチエイリアスです。 簡単に言えば、ラスタライズされたシーンをキャプチャしエッジを分析し、既存の画像の上にアルゴリズムを実行して滑らかにします。 これは簡単で複雑な依存関係はなく、高速です。
TXAA はこれよりずっと複雑です。現在のフレームにブレンドする追加のデータとして、ジッタリングと前のフレームを使用します。また、モーションベクトルを使用して、どのピクセルを拒否/受け入れして最終フレームをレンダリングするかを予測します。SSAA で通常行われるような最終解像度よりも大きなシーンをレンダリングする必要なしに 、より多くのデータでフレームの有効解像度を向上させることができます。つまり、SSAA の品質に近い、明らかに FXAA よりずっと滑らかなアンチエイリアスでありながら、パフォーマンスに大きな影響がないという利点があります。
他のリアルタイムレンダリングと同様に、TXAA にも欠点があります。TXAA では、モーションベクトルが機能することが必要で、FXAA と比較すると、パフォーマンスへの影響がより大きくなります。最終画像を予想するという TXAA の複雑な性質は、高速で動くゲームオブジェクトに意図しないアーティファクトが発生したり、シーン全体のテクスチャがぼやける原因になることがあり、アプリケーションによっては適さない場合があります。
アンビエントオクルージョンポストプロセスは、スクリーンスペースデータの主に深度に基づくアンビエントオクルージョンの近似です。このため、通常は、スクリーンスペースアンビエントオクルージョン (SSAO) と呼ばれています。 ポストプロセスを有効にする で説明したように、SSAO はアンビエントライトでシェーディングするとき、特に動的なゲームオブジェクト (静的なシーンと動的なシーンとの間にオクルージョンの相互作用がないかもしれません) で、忠実度を向上させます。
一般に、SSAO はシーンのアンビエントライトによるシェーディングを支援しますが、あまりにも多くのオクルージョンを引き起こす可能性があります。オフラインの 3Dモデリングアプリケーションからオブジェクトごとにベイクしたアンビエントオクルージョンを使用して、ライトのベイクによるアンビエントオクルージョンを追加すると、SSAO はアンビエントオクルージョンの 3 番目の層になります。
SSAO を設定するときに最終出力を念頭に置いて、他のアンビエントオクルージョンソリューションとのバランスを見つけてください。
SSAO と同様に、スクリーンスペースリフレクションは現在のシーンビューを使用して、レイトレーシングを通してリフレクションを近似します。この機能を有効にすると、現実のように見える結果を得ることができます。これは、キューブマップにキャプチャされた通常のリフレクションに非常に正確なものを追加して補完します。しかし、レンダリングがディファードレンダリングのみに制限され、パフォーマンスに影響します。SSR のもう 1 つの欠点は、画面にないものによるリフレクションを反映しないため、画面の端のリフレクション効果が欠落することです。
被写界深度エフェクトは、大きなセンサーカメラで撮影された映画のような感覚を与えることができます。また、シーンのスケール知覚を変更するのにも使用できます (ティルトシフトカメラレンズがミニチュア効果を与えるのと同様)。 例えば、以下の画像は現実の写真ですが、被写界深度エフェクトを適用してミニチュアのように見せています。
わずかなモーションブラーは、あるフレームから他のフレームへの遷移をより現実らしく表現することができます。ただし、モーション酔いのリスクを減らすよう、アプリケーションに注意を払う必要があります。これは、シーン転換に大きな違いがある場合に特に当てはまります。これは、通常は、一人称または三人称のカメラでよく見られます。 例えば、プレイヤーがカメラを本当に速く左から右にスイングすると、たとえ 60FPS でレンダリングしていてもジッタが発生し、モーションブラーなしのストップモーションになります。下は、シャッター角 180 度でモーションブラーを実行した画像です。
全 360 度のシャッター角は、フレームの始めから終わりまで持続するトレイルを提供します。それより少ない場合はトレイルが短くなります。 そのことを念頭において、ストップモーションに見えるようにするには、モーションブラーを無効にします。
現実世界では、ブルームは光線が適切に集束されないレンズのアーティファクトです。これは通常、低品質のカメラレンズ、または特殊効果のあるグローカメラフィルターで発生します。ブルームはここに示すように、もやのかかったような柔らかい画像を作ります (Threshold Gamma を 0 に設定)。
または、ブルームを使って強い/明るいライトの要素を下のように変えることができます。
これらの機能を過度に使用すると、逆効果が生じるおそれがあります。これは、上の画像の最初のサンプルで確認できます。高輝度の画素が多くあり、この Threshold 値では非常に早くブルームを開始します。
Threshold 値を選択するときは、エミッシブサーフェスの特定の値、シーンのライティング設定、アイアダプテーションを有効にするかどうかを考慮してください。
トーンマッパーを使用すると、高輝度カラー値を処理することができます。トーンマッパーは入力データのリニア HDR バッファーを処理し、最終出力でそれを指定された色空間に戻すことができます。これはカメラの仕組みと似ています。Unity のポストプロセスでは、Neutral と ACES (Academy Color Encoding System (Wikipedia)) の 2 種類のトーンマッパーがあります。一見すると 、両者の違いはトーンマッパーのデフォルトのコントラストであるように見えます。しかし、両者間の主な違いは、Neutral は ACES のコントラストと似たように調整できることです。下の画像では、2 つの例はほぼ同じに見えます (Neutral 設定は、Black In 0.02、 White In 10、Black Out –0.04、White Out 10、White Level 5.3、White Clip 10)。
考慮すべき主な違いは、2 つのトーンマッパーが、色のついたライトや、爆発や炎によるエミッシブな効果などの高輝度カラーの値を処理する方法です。下の図では、ACES トーンマッパーと Neutral トーンマッパーの高輝度カラーの正規化が異なる様子が示されています。
色収差、グレイン、ビネットは、現実世界のカメラシステムからのアーティファクトをシミュレートするポストプロセスエフェクトです。それらを適切に使用するために、それぞれが実際のカメラでどのように発生するのかを理解すると良いでしょう。
色収差 (CA) は、カメラのレンズがすべての色を同じ収束点に集めることができない場合、画像に現れる色の分散です。これは通常、調整が不十分なレンズや低品質のレンズに発生します。これにより、Unityのカメラに適用することで、デジタルシーンに現実感が加わることもありますが、低品質のレンズで写したようにもなります。
グレイン が実際の写真や映画の最終的な画像に見られる場合は、通常、ノイズに変換される暗いシーンや高 ISO カメラセンサー/フィルムなどのセンサーに入る光の量が不十分であることを示しています。このエフェクトを使用してカメラの限界のシミュレーションを行い、元の 3D レンダリングされたシーンをより現実的なものにすることができます。ただし、シーン内のノイズが多すぎると、誤った動きの感覚を与えてしまったり、最終的にレンダリングされた画像のコントラストに影響を与える可能性があります。
ビネット は CA エフェクトに似ています。ビネットは、レンズがカメラのセンサー/フィルムの中心から端まで一貫したライトを与えることができない場合にアーティファクトを加えます。このエフェクトを使用して、シーンの中心点に焦点を合わせることができます。ただし、このエフェクトをあまり多く使用すると、下手なポストプロセス処理をしたようなシーンになります。
これらのポストプロセスの基本事項で重要な点は、各エフェクトの練習と理解を重ねる必要があるということです。そうすることにより、目的を持って機能を効果的に使用し、シーンのパフォーマンス全体に対して加える各エフェクトの視覚的効果を比較検討することができます。
その他のポストプロセス機能に関しては、以下を参照してください。