第4回.Post-processing Stackを使う

(2017/03/01)GitHubではなくAssetStoreからダウンロード出来るようになりました。

●はじめに

 前回はイメージエフェクトの使い方を簡単に説明しました。
今回はPost-processing Stackの使い方を説明します。

●Post-processing Stackとは?

 Unityのイメージエフェクトは効果を一つずつ追加していくタイプでした。この方法は、必要なエフェクトだけ追加していくことが出来るので使いやすいという利点があります。しかし一方で、それぞれのイメージエフェクトが独立して動作するため、内部的に同じ処理をしているにも関わらず、その情報を使いまわしたりすることがありません。そのせいで、統合されたイメージエフェクトを持つUnrealEngine4などに比べて、パフォーマンス上不利になっていました。
 そこで統合的なイメージエフェクトとして新しく開発されているのがPost-processing Stackで、現在アセットストアで公開されています。


●Post-processing Stackを使ってみる

 さっそく使ってみましょう。

  1. アセットストアから、Post Processing Stackをダウンロード、インポート
  2. Main Cameraを選択
  3. Add ComponentからPost-processing Behaviourを検索し追加
  4. Projectウィンドウ内で、右クリック->Create->Post-processing Profile
  5. 生成されたProfileを、7で追加したPost-processing BehaviourのProfileに割り当てる
  6. ProjectウィンドウでProfileを選択し、Inspectorウィンドウに各パラメータを表示させる

 これでPost-processing Stackが使用可能になります。
ここから各エフェクトを有効にして、パラメータを設定していきます。

AntiAliasing アンチエイリアスの設定です。DeferredRenderingではTemporal Anti-aliasingがおすすめです。
Ambient Occlusion SSAOの設定です。細部の陰影を出したいときに。
Screen Space Reflection SSRの設定です。リフレクションが一部正確になります。DeferredRenderingのときに。
Fog フォグの設定です。
Depth Of Field 被写界深度の設定です。カメラのボケです。
Motion Blur モーションブラーの設定です
Eye Adaptation 明順応or暗順応の設定です。人間の目のように、シーンの明るさに合わせて露出を調整する機能です
Bloom 高輝度部分をぼかします。またレンズの汚れ表現にも用います。
Color Grading カラコレの設定です
User Lut ルックアップテーブルを用いたカラコレの設定です
Chromatic Aberration 色収差の設定です
Grain フィルムグレイン
Vignette ヴィネット(周辺減光)
Dithering 不明

●作例

 Post-processing Stackを使ったUnityのレンダリングです。
使用したのは日本の学校3D背景モデルを探してるならコレ!SbbUtutuya氏によるUnity用「校舎・教室・廊下・トイレ・体育館・保健室・プール」背景アセット!とゾンビhttps://www.assetstore.unity3d.com/jp/#!/content/30232です。


f:id:IARIKE:20170225162306p:plain
f:id:IARIKE:20170225162346p:plain
f:id:IARIKE:20170225162349p:plain

以下ホラー風味
f:id:IARIKE:20170225181407p:plain
f:id:IARIKE:20170225181423p:plain
f:id:IARIKE:20170225181439p:plain
f:id:IARIKE:20170225181455p:plain


以下はPost-processing Stackを全く使わなかった場合です。どれだけ効果的か分かるかと思います。
f:id:IARIKE:20170225162440p:plain
f:id:IARIKE:20170225162445p:plain
f:id:IARIKE:20170225182031p:plain

●おわりに

 今回はPost-processing Stackを解説しました。個別のエフェクトは説明しませんでしたが、パラメータを弄ってれば大体わかると思います。
 ご覧いただいた通り、UnityでもStandard ShaderとPost-processing Stackだけでそれなりにフォトリアルな絵を作ることができます。なので、通常のShaderやImageEffectのShaderを自作するのは、基本的にNPR(Non Photorealistic Rendering)か、特殊エフェクト目的になることが多いかと思います。

 次回からようやくプログラミングに入りたいと思います。