(HDRP) Camera.Render() renders black, but only if Scene View is not visible
I am rendering a disabled Camera component to a RenderTexture via Script sporadically in a Unity 2019.3.8f1 project with HDRP 7.3.1. As long as there is a "Scene" tab open and visible while playing the game, the Camera.Render()
call works as normal and an image is captured in the RenderTexture. However if only the Game view is visible (because the Scene view is tabbed behind the Game view) then the RenderTexture captures a fully black image. Here is the Code I use to capture the image:
static readonly int PhotoSize = 1024;
public void Capture()
{
var old = RenderTexture.active;
RenderTexture rt = RenderTexture.GetTemporary(PhotoSize, PhotoSize, 16, RenderTextureFormat.ARGB32);
PhotoCamera.targetTexture = rt;
RenderTexture.active = rt;
PhotoCamera.Render();
int x = (m_count % 2) * PhotoSize;
int y = (m_count / 2) * PhotoSize;
m_texture.ReadPixels(new Rect(0, 0, rt.width, rt.height), x, y);
m_texture.Apply();
RenderTexture.active = old;
rt.Release();
m_count += 1;
m_lastFlash = 0;
if (m_count == 4)
m_count = 0;
}
I have tried varying camera and the RenderTexture settings but I always get the same result. I have also tried using a RenderTexture prefab instead of RenderTexture.GetTemporary()
, but am experiencing the same issue there.
The error does not appear to have to do with`m_texture` (a Texture2D
) or anything after PhotoCamera.Render()
, since blitting the rendertexture to m_texture
works when the scene view is visible, and with a RenderTexture prefab I can see that rt
itself is already the issue, since it is either black or contains a correct image.
If I switch to the Scene view momentarily while I capture an Image it works, but upon returning to the Game tab successive Capture
calls fail to capture an image again.