Search Unity

PostFX v2 – アップグレードされたポストプロセッシングスタックで美しいビジュアルを実現しよう

, 6月 11, 2018

ポストプロセッシングスタックを使うと質の高いビジュアルの作成と細かな調整が簡単に行え、ドラマチックで写実的なエフェクト実現することができます。バージョン 2018.1 をもってベータ版ではなくなり、最も要望の多かった機能が追加され、可能な限りのバグ修正が行われました。また、モバイル専用パス、ボリュームブレンディング、カスタムユーザーエフェクト用の完全なフレームワークも追加されています。

ポストプロセッシングスタックのバージョン 2(v2)は、今後多数リリース予定のパッケージの第一弾として公開されます。アセットストアパッケージ同様の便利なプラグイン形式で、かつ Unity のコア機能と同様に更新が可能になります。また、Unity Hub のテンプレートからも利用できます。

2018.1 で改良されたポストプロセッシングスタック(PostFX v2)には、質の高いエフェクトと、強力なオーバーライドスタックが使用できる自動ボリュームブレンディング、そしてユーザー独自のカスタムエフェクトを記述・配布できる自在度の高いフレームワークが搭載されました。ライトウェイトレンダリングパイプライン(LWRP)、HD レンダリングパイプライン(HDRP)、および Unity 組み込みのレンダーパイプラインとの互換性も備えています。

(左の画像はポストプロセッシング無し、右の画像はスタックをフル使用)

経緯

PostFX v1 は以前からアセットストアで無料で入手が可能となっていました。これは、フィードバックを頂いてユーザーの皆様のワークフローに対する理解を深め、品質と効率性を高めることが目的でした。この結果、機能を改良して一段階レベルアップさせるための貴重な洞察を得ることができました。

PostFX v2 は、以前から含まれていたエフェクトの多くを改良された形で提供します。また、ワークフローがボリューメトリックによるアプローチに変更されたことで、複数のカメラのそれぞれに独自のスタックを持たせる代わりに、異なるエフェクト間の切り替えを簡単に行えるようになりました。

PostFX v2 は開発期間中を通して GitHub 上に提供されていました。これは、ユーザーの皆様に対して可能な限りの透明性をもって公開し、フィードバックによって開発に貢献していただけるようにすることを目的としたものでした。この過程において、素晴らしい反応を多数お寄せいただきました。2000 人以上の方が PostFX v2 のレポジトリをお気に入りに登録され、330 人以上の方が、PostFX v2 のプログラムに独自の変更を入れるためにフォークされました。小さな修正から大きなプルリクエストまで、450 件のチケットと 30 件のプルリクエストがオープンされ、多くのユーザーの皆様がスタックをカスタマイズし、変更セット送ってくださいました。

この機能をお試しになられ、非常に有益なフィードバックやプルリクエストをお寄せ下さった皆様に感謝申し上げます。

現在の入手方法

エディター内のパッケージマネージャーからテスト・検証済みバージョンのパッケージにアクセス可能です。最新の開発ブランチの PostFX v2 は、引き続き GitHub から入手可能です。

パッケージマネージャーは Unity 2017.2 で追加された機能で、Unity で開発された新機能をプロジェクト内から動的に読み込んだり更新したりするためのモジュラーシステムおよび API です。Unity 2018.1 ではこれが、新公開のパッケージマネージャー ユーザーインターフェース、Hub、プロジェクトテンプレートによってさらに強化されました。これらの追加機能はすべて、新しいプロジェクトをより迅速に効率的に開始できるようにするものです。詳細はパッケージマネージャーに関するドキュメンテーションをご覧ください。

また、テンプレートの Unity Hub からも入手可能です。プロジェクトテンプレートによって、Unity で新しいプロジェクトを起動する方法が変わります。Unity プロジェクトテンプレートは、多くのユーザーの皆さんに Unity を「そのまますぐに」快適にお使いいただけるように搭載されました。各種プロジェクト(モバイル、高性能 PC、3D、2D、VR など)ごとに、一般的なベストプラクティスに基づいてあらかじめ設定の整えられたテンプレートをご利用いただけます。

こちらのブログ記事で、テンプレートを最大限に活用する方法をご説明しています。

内容

シーンの見た目や雰囲気をカスタマイズするための多彩なエフェクトが組み込みで提供されています。それらのエフェクトの多くは v1 から記述し直されたものです。新しいバージョンには新しいコンポーネントも含まれています。エフェクトは可能な限りひとつのパスにまとめてありますが、一部はスタンドアロンのままです。また、ローエンドのデバイスにおける最適化をサポートするモバイル専用のオプションも含まれています。それでは、内容を具体的に見て行きましょう。

アンビエントオクルージョン(SAO、MSVO)

近接した溝や穴、交点や表面を暗くします。現実世界においては通常、そのような領域では環境光が遮断されて暗く見えます。

アンチエイリアシング(FXAA、SMAA、TAA)

アンチエイリアシング エフェクトは、エイリアシングを防いで 3D グラフィックの見た目を滑らかにする一式のアルゴリズムを提供します。エイリアシングとは、線がギザギザになったり「階段状の」見た目になる現象です。

ポストプロセッシングスタック内に提供されているアルゴリズムは以下の通りです。

  • Fast Approximate Anti-aliasing(FXAA)
  • Subpixel Morphological Anti-aliasing(SMAA)
  • Temporal Anti-aliasing(TAA)

自動露出

このエフェクトは、画像に含まれる輝度の程度に応じてその露出を動的に調整するものです。調整は時間を掛けて徐々に行われるため、例えば暗いトンネルから外に出た時などは、プレイヤーは屋外の強い光に少しの間目がくらむことがあります。同様に、明るいシーンから暗いシーンに移動した場合も「眼」の調節に時間が掛かります。このエフェクトは v1 のスタックでは文字通り「Eye Adaptation(目の順応)」と呼ばれていました。

ブルーム

このエフェクトは、画像内の明るい領域の境界から外に漏れる光を作り出し、極度に明るいライトがカメラまたは眼をくらませるような表現を演出します。

色収差

カメラのレンズが全色を同じポイントまで集束できない場合に起こる現象を表現するエフェクトです。画像の暗い部分と明るい部分の境界に沿って、色の「漏れ」として表れます。

色収差エフェクトはこのカメラの粗を再現するものです。アーティスティックなエフェクトとしても(例えばインパクトのあるカメラ表現のアクセントなどに)一般的に使用されるものです。

カラーグレーディング(LDR、HDR、CUBES)

カラーグレーディングは、最終的なイメージの色や輝度の変更・修正を行うプロセスです。ちょうどインスタグラムなどでフィルターを適用するようなものであると考えてください。

カラーグレーディングエフェクトには以下の 3 つのモードがあります。

  • Low Definition Range ― このモードはローエンドのプラットフォーム用ですが、すべてのプラットフォームで使用可能です。レンダーされた最終的なフレームに、[0,1] の範囲に制限された形でグレーディングが適用され、標準の LUT 内に保存されます。
  • High Definition Range ― HDR レンダリングに対応するプラットフォーム向けのモードです。すべての色の処理が HDR で適用され、ログエンコードされた 3 次元 LUT 内に保存されることで、十分な範囲と精度が確保されます(Alexa LogC El1000)。
  • External ― このモードを選択すると、外部のソフトウェアで作成されたカスタム 3 次元 LUT が提供できます。

被写界深度

被写界深度は、カメラレンズの集束特性をシミュレートする一般的なポストプロセシングエフェクトです。実際の現実世界のカメラは、特定の距離にあるひとつの物体にしか、焦点をはっきり合わせることができません。つまり、ある特定の距離よりも近く、あるいは遠くにある物体には、多少のボケが生じます。

グレイン

グレイン(粒子)エフェクトは、コヒーレントなグラデーションノイズに基づいています。フィルムの見た目の「粗」を模倣するために一般的に用いられるものです。ホラーゲームではしばしば誇張されて使用されます。

レンズの歪み

このエフェクトは、レンダーされた最終的な絵を歪めたり、あるいは歪みを取ったりすることで、レンズの形をシミュ―レートするものです。

モーションブラー

モーションブラーは一般的なポストプロセッシングエフェクトで、カメラの撮影しているオブジェクトがカメラの露出時間よりも速く動いている時に起こるブラーをシミュレートします。これはオブジェクトが素早く動いた場合や露出時間が長い場合に発生することがあります。

スクリーンスペースリフレクション

スクリーンスペースリフレクションは、スクリーン空間のデータを再利用して反射を計算する技術です。濡れた床の表面や水溜まりなどの繊細な反射を作り出す時に一般的に使用されます。

ビネット

写真の世界では、画像の中央と比べて外縁をより暗くしたり彩度を低くしたりすることをビネットと言います。

コンポーネント

Post Process Layer

Post Process Layer コンポーネントは、カメラの上に適用されます。Component -> Rendering -> Post-process Layer から使用できます。

設定は各種項目に分かれており、トリガー(通常はカメラ Transform)とその適用先のレイヤーを設定してボリュームブレンディングを制御したり、任意のメソッドのアンチエイリアシングを適用したり、フォグを有効にしたりできます。下部にある「Toolkit」設定には、現在のフレームを EXR 形式にエクスポートするための幾つかのユーティリティが提供されています。

一番下のセクションではカスタムエフェクトのレンダリングの順序を設定できます。詳しくは GitHubの「Writing Custom Effects」をご覧ください。

Post Process Volume

ポストプロセッシングをこのフレームワーク内で機能させるために、ローカルボリュームとグローバルボリュームを使用しています。これにより、各ボリュームに優先度と一式のエフェクト オーバーライドを持たせることが可能になっているので、シーン内でポストプロセッシング設定を自動的にブレンドすることができます。例えば、軽いビネットエフェクトをグローバルに設定しておいて、プレイヤーが洞窟に入った時には、ビネットの Intensity の設定のみをオーバーライドして強くし、その他の設定は変えない、といったことも可能です。

この例では、ひとつのグローバルボリュームの「Is Global」にチェックマークを入れ、それ以外のボリュームは、このボリュームと Post Process Profile から派生させています。そして「Cave Area Profile」を 1 つ作成し、カメラ(トリガー)がトリガー領域(ボックスコライダーで設定されます)に入ると「Global Profile」からエフェクトがオーバーライドされるようにしています。「Cave Area Profile」にはブレンド距離が設定されており、優先度はグローバルボリュームよりも高く設定されています。

以下の動画で、これがシーン内でどのように機能するかご覧いただけます。カメラがボリュームに入ると、グローバル設定がオーバーライドされてエフェクトが綺麗にブレンドされます。

Post Process Debug

ポストプロセッシングスタックには各種のモニターとデバッグビューも含まれていますので、エフェクトを正しくセットアップして出力内の問題をデバッグするために役立ちます。

カスタムエフェクトの作成

また、このフレームワークでは、コードベースを修正することなくカスタムのポストプロセッシングエフェクトを記述してスタックに接続することも可能です。もちろん、このフレームワークに合わせて記述したすべてのエフェクトにはそのままボリュームブレンディングが使用でき、レンダーループに依存している機能が必要なければそのままスクリプタブルレンダーパイプライン(SRP)にも対応します!

Unity のフィールドエンジニア、高橋啓治郎の Twitter で、実験の数々をご覧いただけます。

Cinemachine および Timeline との併用

PostFx v2 は、エディターのその他の部分と密接に統合されています。例えばCinemachine と Cinemachine Post Processing コンポーネントです。これらは両方とも Timeline に追加可能なので、アーティストやデザイナーがより自在にクリエイティブな作業を行うことができます。Unity の YouTube チャンネル および チュートリアルで、その例をご覧いただけます。

モバイル端末での実行

ポストプロセッシングのモバイル端末での実行は簡単ではなく、アンビエントオクルージョンなどの一部のエフェクトは、最も高性能なモバイルプラットフォームでさえ負荷が高すぎて実行できません。

一部のエフェクト(アンチエイリアシング、ブルーム、色収差など)向けに、「高速モード(fast mode)」を作りました。これはクオリティを落とすことでパフォーマンスをブーストするものです。また、カラーグレーディングには Low Definition Range を使用して、その他のエフェクトは可能な限り使用を控えることもをお奨めします。現在、モバイル向けの更に細かい最適化に取り組んでおり、将来的に公開が予定されています。

まとめ

PostFx v2 を使用すると高品質ビジュアルの作成や微調整が簡単に行え、ドラマチックでリアリスティックなエフェクトを作り出すことができます。ボリュームブレンディングによって、各種の組み込みエフェクトやカスタムのエフェクトの切り替え・オーバーライド・ブレンドがより行いやすくなりました。詳細なガイドはPost-processing のWiki(英語) でお読みいただけます。

PostFx v2 は Unity 2018.1 のパッケージマネージャーから入手可能になっています。バージョン 2017.x をお使いの場合は GitHub からご入手ください。どちらの経路から入手しても、パッケージの更新を引き続き受け取ることができます。

まだバージョン 2018.1 をお試しになっていない方は、この機会にぜひお試しください!

作品制作をお楽しみください!

15 コメント

コメントの配信登録

返信する

これらの HTML タグや属性を使用できます: <a href=""> <b> <code> <pre>

  1. Oh, and is TAA officially supported in LWRP now?

  2. Does screen space reflections work with LWRP?

    If so, can you provide an updated tutorial video? Last time I tried, working from Google Doc instructions, I couldn’t get any camera effects from this stack working in LWRP.

  3. When will the AO settings improve enough to be inline with competition and assets on the store like SSAO? Distance far/near falloff etc

  4. Post stack v2 is great and I use it extensively. However it breaks OffAxisCamera because it resets the camera matrix on PreCull in PostProcessLayer, even though TAA (using matrix jittering) is not enabled. I have described the issue on the forum but recevied no response.
    https://forum.unity.com/threads/new-post-processing-stack-pre-release.435581/page-18#post-3443106
    https://assetstore.unity.com/packages/tools/camera/offaxiscamera-98991

    Please make overwriting of the projection matrix optional. Or make it possible to set reference to a GetProjectionMatrix function like it is done for the jittered projection matrix in TAA.

  5. >Many of these effects have been re-written since v1

    What was the reason to rewrite them?

  6. Amin Montazeri

    6月 12, 2018 4:06 pm 返信

    %90 about PC and another huge platform !

    %10 about mobile, at the end of the article !

  7. Great! Thank you for the new version of the plugin and good explanation of new workflow.

  8. Awesome! It will be nice if you give more insights about the perfomance on mobile in a dedicated post, this kind of post give us lot of knowloedge about Unity

  9. Cool! Nice to hear you guys are giving a bit of love to mobiles with this too :)

    1. Dmitri Kurteanu

      6月 15, 2018 3:08 pm 返信

      Tested v2 on mobile:
      1. Getting “Tiled GPU perf. warning” every frame on mobile even on an empty scene because of v2.
      2. In my project with v2 I’m getting 38fps vs 47fps on pps v1, so not something I’d call “love to mobiles”

  10. That high DPI screenshot tho :O

  11. Great to see a full release out. I don’t see any mention about its level of VR support though. Are all the effects VR compatible? And if so, multi or single-pass?

  12. Do the PostFX v2 also works for VR like screensaver reflections and such? I do read something about mobile but maybe it is good to add some info for VR as well. I only played around with V1 and VR a long time ago and most of it didn’t work that well. Now I wonder how it will do and if it’s officially supported.

    1. I saw at the GitHub project you can see in some degree what is supported for VR or not. Some have ‘Known Issues’ for AR/VR which means it doesn’t work. However this makes me think, are they working on it?
      Nevertheless It’s great that Unity developed these image effects, maybe a little more info if SSR will be supported for VR some time would be nice. I thought that was the reason why they were redoing SSR, because it needed to support VR. =)

  13. Tijmen van den Heuvel

    6月 11, 2018 10:04 pm 返信

    The stack is exceptionally well designed and a breeze to work with, the fact that its truely built together with the community is such a great way to evolve it too.