- Home /
Multiple RenderTexture and depth buffer
Is it possible to write to one depthBuffer and multiple colorbuffers using RenderTexture objects? In my project I have two RenderTexture objects assigned to separate camera texture targets. Within Start() method my second camera sets:
camera.SetTargetBuffers(camera.targetTexture.colorBuffer, firstcamera.targetTexture.depthBuffer);
The final result is of course put in camera.targetTexture, but unfortunately without taking into consideration the depthBuffer information from the first camera. Any ideas why it isn't working?
$$anonymous$$ake sure that your second camera isn't clearing depth. If it is, that would cause the problem you're seeing.
Answer by KEric · Feb 19, 2014 at 12:56 PM
@MakeCodeNow Once again thanks for your help.
Of course the second rendering performed by second camera was clearing whole depth information from the first camera's pass. The lack of precise description from Unity's site cost me a lot of troubles.
Intelisense within MonoDevelop enums several CameraClearFlags
, that is: SolidColor
, Depth
, Color
, Nothing
and Skybox
. It seems that SolidColor
flag instructs clearing the depth buffer in addition to color buffer (who would've guess? maybe Depth
flag should clear the color buffer as well?). Furthermore, there is a second CameraClearFlags.Color
flag (which of course I was using in my desperation), but I wasn't able to figure out what's the purpose of it existence.
And finally my workaround: I've ended up clearing the second camera manually by setting up camera's cullingMask = 1 << LayerMask.NameToLayer("Nothing")
and trigerring Render()
function. Then rendering the first one and at the end rendering second camera once more, but this time with it's cullingMask properly set and clearFlags set to CameraClearFlags.Nothing
(here the depth buffer from the first camera's Render()
finally weren't cleared up. Amen.
Your answer
Follow this Question
Related Questions
Complex Depth Shader 0 Answers
sampler2d object has no methods 1 Answer
How to render a RenderTexture into a specific mipLevel 0 Answers
Read depth buffer on the cpu 1 Answer
Render scene depth to a texture 4 Answers