イメージエフェクトは、Unity の画像に用いるポストプロセスの一種です。
OnRenderImage 関数を持つスクリプトならばすべて、ポストプロセス エフェクトとして機能します。カメラ オブジェクトにちょっと加えてみてください。スクリプト関数にしたがって全体のイメージエフェクト ロジックが働きます。
This script function receives two arguments: source image as a RenderTexture and destination it should render into, as a render texture as well. Typically a postprocessing effect uses Shaders that read the source image, do some calculations on it, and render the result into the provided destination (e.g using Graphics.Blit). It is expected that the image effect will fully replace all pixels of the destination texture.
When multiple postprocessing effects are added on the camera, they are executed in the order they are shown in the inspector, topmost effect being rendered first. Result of one effect is passed as “source image” to the next one; and internally Unity creates one or more temporary render textures to keep these intermediate results in.
注意事項
Cull Off ZWrite Off ZTest Always
ステートであるべきです。By default, an image effect is executed after whole scene is rendered. In some cases however, it is desirable to render an effect after all opaque objects are done (but before skybox or transparencies are rendered). Often depth-based effects like Depth of Field use this.
Adding an ImageEffectOpaque
attribute on the OnRenderImage
function allows to achieve that.
イメージエフェクトが一度に異なる画面関連のテクスチャをサンプリングすると、テクスチャ調整の仕方を考えるうえでプラットフォームの違いに気を付けなければならない場合があります。
一般的なシナリオでは、「ソース」テクスチャエフェクトとカメラのデプステクスチャには、アンチアイリアス設定によって異なる垂直方向の調整が必要です。詳細は プラットフォーム別のレンダリングの違い を参照してください。
Effects package には独自のイメージエフェクトの基礎となるいくつかの base と helper クラスが含まれています。すべてのコードは UnityStandardAssets.ImageEffects
名前空間にあります。