前回の記事
CameraのDepthTextureModeをDepth有効にした際のFrameDebuggerの変化
の関連で、次は同じ条件で forceIntoRenderTexture を true にした時の変化をメモしておきます。
Camera-forceIntoRenderTexture - Unity スクリプトリファレンス
public class DepthCheck : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
var camera = GetComponent<Camera>();
camera.forceIntoRenderTexture = true;
}
}
- Event数は3
- Statsは
- Batches 2
- SetPass 2
- メイン描画の描画先は Temp Buffer になっている
-
描画パスの末尾にImageEffectが追加されている
- 内容としては、DrawDynamicのBlit()で、TempBufferをno nameにコピーしている
この構成どこかで見たなーと思うかもしれませんが、
PostProcessingStackV2で、PostProcessをかけた時と似たような構成になっています。
forceIntoRenderTextureをfalseにして、PostProcessLayerをカメラに付けた時の状態はこちら

- メイン描画部分のRenderTargetはTempBufferになっている
- BeforeImageEffectsのコマンドが追加されている
- 最初のDraw Dynamicで TempBuffer を_TargetPool0にコピー
- 次のBuiltInStack DrawMeshで _TargetPool0 を TempBufferに戻している
-
末尾にImageEffectsが追加されている
- 内容としては、DrawDynamicのBlit()で、TempBufferをno nameにコピーしている
ちなみに、PostProcessLayerのDirectly to Camera Targetのフラグを立てると、BuiltInStack DrawMeshで直接no nameにコピーを行うことで、最後のTempBufferをno nameにコピーするステップを削減できます。

ただやはり、 それでもメイン部の描画はTempBufferにされるところが注意点かな。
Camera-forceIntoRenderTexture - Unity スクリプトリファレンス に
If set to true camera rendering will always happen into a RenderTexture instead of direct into the backbuffer. This can be useful if you have no image effects but want to use command buffers to act on the current rendering target.
trueに設定すると、カメラのレンダリングは、バックバッファーに直接ではなく、常にRenderTextureで行われます。これは、イメージエフェクトはないが、コマンドバッファーを使用して現在のレンダリングターゲットを操作する場合に役立ちます。
とあるように、PostProcessingStackV2みたいにコマンドバッファでImageEffectっぽいことをしようと思った時は、
forceIntoRenderTextureをtrueにすることで、PostProcessingStackと同様の描画フローを辿れそうですね。
ちなみに、前回の記事
CameraのDepthTextureModeをDepth有効にした際のFrameDebuggerの変化
と一緒に指定すると、こうなります。
using UnityEngine;
public class DepthCheck : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
var camera = GetComponent<Camera>();
camera.depthTextureMode = DepthTextureMode.Depth;
camera.forceIntoRenderTexture = true;
}
}
- 前段にUpdateDepthTextureが追加される
- 描画先はCameraDepthTexture
- メイン描画部はTempBufferに描画される
- 終段にImageEffects DrawDynamicでTempBufferをno name(フレームバッファ)にコピーしている
- Event数は5
- 深度バッファ作成に2
- メイン描画に2
- 最終コピーで1
- Statsは
- Batches 3
- SetPass 3
今回も作業メモとして残しておきます。
ここから深度バッファ周りを触っていく予定。

