5.5 Single Pass Rendering? Eh??

Just upgraded from Unity 5.3 to 5.5. Tried single pass rendering and this is what I get:

This is useless. What am I missing? Somebody have a link handy on how this is supposed to be done? All I did was check the “virtual reality supported” box, removed OpenVR and added Oculus SDK in player settings.

Todd, it’s hard to tell from the screen shot, but this looks like a similar issue I’ve run into. Please take a look at this thread and see if the symptoms are the same.

I’m seeing that same double image in both eyes. Everything looks 2D.

Not sure if I’m going to muck with project settings and risk screwing something up. The slow mode works well enough for my project (same as 5.3 as far as I can tell).

Sounds like this might be the problem for me. I’m getting that duplication in each eye. I’ve got some AA script on my camera instead of the built in Unity AA which contains Graphics.Blit() calls, so this is probably tripping it up.

Image Effects
When using Single-Pass Stereo rendering, Image Effects require some extra attention. Each Image Effect runs once on the packed Render Texture (which contains both the left-eye and right-eye images), but all draw commands that run during the Image Effect are applied twice: once to the left-eye half of the destination Render Texture, and once to the right-eye half.

Image Effects do not automatically detect Single-Pass Stereo rendering, so you need to adjust any reads of packed Stereo Render Textures so that they only read from the correct side for the eye being rendered. There are two ways to do this depending on how your Image Effect is being rendered:

  • Graphics.Blit()

  • Mesh-based drawing

See below for more information on these methods.

Without these adjustments, each draw command reads the whole of the source Render Texture (containing both the left- and right-eye views), and outputs the entire image pair to both the left-eye and right-eye side of the output Render Texture, resulting in incorrect duplication of the source image in each eye.

The reason this happens is that each Image Effect is either drawn using Graphics.Blit or by drawing a full-screen polygon with a Texture map. Both methods reference the entire output of the previous Image Effect in the chain. When they are used to refer to an area in a packed Stereo Render Texture, they reference the whole packed Render Texture instead of just the relevant half of it.