Post-processing

Post-processingは、画面に表示される前にカメラの画像バッファーに全画面フィルターとエフェクトを適用するプロセスです。わずかなセットアップ時間で製品のビジュアルを大幅に改善できます。

写真加工ソフトのように元のビジュアルを後から加工することができます

チュートリアル

プロジェクトの作成

[PostProcessingSample]のプロジェクト名で新しく3Dプロジェクトを作成します。

シーンの作成

ゲームオブジェクトの作成

  • Plane
  • Cube x 3

マテリアルの作成

  • Blue
  • Red

マテリアルをアウトレット接続

  • PlaneにBlueを接続
  • Cubeの1つにRedを接続

サンプルシーン

基本の設定変更

PlayerSettings

  • Player -> Other Settings -> Color SpaceをLinearに変更

テクスチャはガンマ色空間に保存される傾向がありますが、シェーダーはリニア色空間を前提としています。そのため、テクスチャがシェーダーでサンプリングされると、ガンマベースの値は不正確な結果となる原因になります。これを解決するために RGB サンプラーを使用するように Unity を設定し、ガンマサンプリングからリニアサンプリングへ切り替えることができます。これにより、正しい色空間でシェーダーの入力と出力がすべて揃ったリニアワークフローを行うことができ、正しい結果が得られます。

MainCameraゲームオブジェクト

  • Cameraコンポーネント -> Rendering PathをDeferredに変更

Deferred Shading はライトと影が最も厳密にレンダリングされます。
Forward は、従来のレンダリングパスです。

Forwardレンダリングではオブジェクトごとにライティング計算が実行されます。
それに対してDeferredレンダリングでは、スクリーン上のピクセルに対してライティング計算が実行されます。
そのため、DeferredレンダリングではForwardと比較してピクセルシェーダーの負荷が軽くなります。

Post-processingのインストール

  • Windowメニュー -> PackageManager -> Post Processingをインストール

Post-process Volumeオブジェクトの作成、設定

  • Hierarchyビュー -> Create -> 3D Object -> Post-process Volumeを作成
  • Post-process Volumeコンポーネントのis Global チェックボックスをOn
  • Profileを作成 -> 右側のNewボタンをクリック
  • Inspector上部のLayerタブで[PostProcessVolume]レイヤーを作成後、そのレイヤーを設定

MainCameraゲームオブジェクトにPost Process Layerをアタッチ

  • Inspectorビュー -> Add Component -> Post Process Layerをアタッチ
  • Post Process LayerコンポーネントのLayerに[PostProcessVolume]レイヤーを設定

ビジュアルエフェクトの追加

Post-process VolumeコンポーネントのAdd effectボタンから様々なエフェクトを追加できます。

指定エリア内でのビジュエアルエフェクト

  • Post-process Volumeコンポーネントのis Global チェックボックスをOff
  • Post-process VolumeオブジェクトのBoxColliderのエリアを変更し、エフェクトをしたいエリアを調整
  • MainCameraを移動してエフェクトができるか確認

Emissionを使って特定のオブジェクトを輝かせる

  • 赤色のCubeオブジェクトのShader -> EmissionをOn
  • Directional Lightをオフ
  • Post-process Volumeコンポーネント -> Bloom -> Intensityを20くらいまでアップする

Unity

Posted by hidepon