Version: Unity 6.0 (6000.0)
言語 : 日本語
カメラ出力
カメラからの深度テクスチャの出力

カメラ出力の概要

Camera は深度、深度+法線、モーションベクトルのテクスチャを生成できます。ポストプロセスエフェクトやカスタムライティングモデルの実装に使用できる最小限の G バッファテクスチャです。

これらは主にエフェクトで使用されます。例えば、ポストプロセスエフェクトでは、深度情報がよく使用されます。

深度テクスチャのピクセル値は 0 から 1 の範囲で、非線形分布です。使用する設定とプラットフォームによりますが、一般に精度は 32 ビットか 16 ビットです。深度テクスチャから読み込む場合、0 から 1 の範囲の高精度の値が返されます。カメラからの距離、または他の線形の 0 から 1 の値を取得する必要がある場合、ヘルパーマクロ を使って手動で計算します。

深度テクスチャは、現段階で一般的に使用されている多くのハードウェアとグラフィックス API でサポートされています。以下は特別な要件のリストです。

  • Direct3D 11 以降 (Windows)、OpenGL 3 以降 (Mac/Linux)、Metal (iOS) など、よく使われるコンソールは深度テクスチャに対応しています。

Camera.depthTextureMode 変数を使って、カメラの深度テクスチャをスクリプトから有効にできます。また、Shader Replacement 機能を使って、同様のテクスチャを自身でビルドすることもできます。

3 つの使用可能な深度テクスチャモードがあります。

  • DepthTextureMode.Depth: 深度テクスチャ。
  • DepthTextureMode.DepthNormals: 深度とビュー空間の法線を 1 つにパックしたテクスチャ。
  • DepthTextureMode.MotionVectors: 現在のフレームの各スクリーンテクセルのピクセルスクリーンスペースのモーション。RG16 テクスチャにパックされます。

これらのフラグを使って、上記のテクスチャのどのような組み合わせも指定することができます。

内部の処理

深度テクスチャは、使用するレンダリングパスやハードウェアに応じて、実際の深度バッファから直接取得されたり、別のパスにレンダリングされたりします。通常、ビルトインレンダーパイプラインのディファードシェーディングレンダリングパスを使用する場合、深度テクスチャは G バッファのレンダリングによって生成されるため、 何もしなくても取得できます。

有効な場合、MotionVectors テクスチャは常に別のレンダーパスから取得されます。Unity はこのバッファに動いているオブジェクトをレンダリングし、その動きを前のフレームから現在のフレームに描画します。

カメラ出力
カメラからの深度テクスチャの出力