CommandBuffer を試すために ポストエフェクトだけの処理を作成すると
なぜか結果が上下反転して出力されてしまいました
1
using UnityEngine; using UnityEngine.Rendering; public class CommandBufferSample : MonoBehaviour { [SerializeField] private Camera _targetCamera; [SerializeField] private Shader _shader; private void Start() { Render(); } private void Render() { var id = Shader.PropertyToID("_Temp"); var cb = new CommandBuffer { name = "Blur" }; var mat = new Material(_shader); cb.GetTemporaryRT(id, -1, -1); cb.Blit(BuiltinRenderTextureType.CameraTarget, id); cb.Blit(id, BuiltinRenderTextureType.CameraTarget, mat); cb.ReleaseTemporaryRT(id); _targetCamera.AddCommandBuffer(CameraEvent.AfterImageEffectsOpaque, cb); }
原因を調べていると Camera.forceIntoRenderTexture
を有効にすると動くという記事を見つけたので早速試してみます
_targetCamera.forceIntoRenderTexture = true;
_targetCamera.AddCommandBuffer(CameraEvent.AfterImageEffectsOpaque, cb);
結果うまくいきました
Camera.forceIntoRenderTexture
のリファレンスを読んでみると、CommandBuffer で
レンダリング結果を利用する場合には、これを有効にするといいということが書かれているので、これで対応は問題なさそうです