URP not rendering right-eye in VR (2019.3.0b7)

Couldn’t find anything about this in the issue tracker, but my Valve Index HMD will not render the right-eye in any URP project Multi-Pass or Single Pass rendering. Normal 3D projects work just fine—it’s specific to the URP template.

Looking for help on this issue, otherwise I will post a bug report.

Thanks,
TS

2 Likes

Could you please submit a bug report for that issue?

I can confirm this has been happening to me too for a few weeks now.

This may be due to post processing in the URP template. There is a known issue where post processing does not work correctly. Try turning it off and see if that helps. Multipass rendering with URP will also not work right now and you can get one eye that won’t render.

Hi it has been 2 months and this problem still persists. Is there a solution for this?

1 Like

Is there any news about this?

Still not working, even in latest beta. Multipass don´t render right eye

Got the same issue with multipass.
Fortunately I use single pass for performance reason but I feel bad for people having to use multi pass as it’s broken right now.
Unity should add this to the known issues by the way.

It’s a shame it wasn’t fixed yet as it’s a pretty critical problem. URP feels like it’s been neglected for a while.

1 Like

Using single pass instanced and urp / new XR package, my terrain only renders on the left eye aswell…

It’s on the agenda for the team’s next sprint.

1 Like

Hi Leonhard, we are having several other issues with URP on Android VR (Oculus Go/Quest) where we feel there has been slow progress since October last year when we had a response from the XR Graphics Lead on it but more issues have come up since then than fixes, see below.

-UniversalRP on Oculus Quest/Go won’t render depth pass/UI/transparent shaders with MSAA on (this includes UI and Shader Graph materials that use Depth) - case 1184810 with a detailed explanation from DeniDeRyke here but no PR to fix it since
https://github.com/Unity-Technologies/ScriptableRenderPipeline/pull/5060#pullrequestreview-321337559

-Fixed-Foveated Rendering currently doesn’t work with UniversalRP unless we edit the Forwardrenderer.cs to remove a blit that prevents FFR from working, we have to use this branch to get around it or an alternative solution in a forum post below: https://github.com/prefrontalcortex/ScriptableRenderPipeline/tree/ffr-hack
Forum post: https://discussions.unity.com/t/745220 page-2#post-5374089

The FFR issue is mentioned by Oculus here https://developer.oculus.com/downloads/package/unity-integration/

“Using the Unity Universal Render Pipeline may break Fixed Foveated Rendering on Oculus Quest and Oculus Go when using the linear color space or modifying the eye texture resolution scale.”

3 Likes

This issue seems to stem from a driver issue on Oculus side. We’re currently waiting for Oculus to check up on that suspicion.

This bug is scheduled to be tackled in the team’s next sprint.

Fantastic!

1 Like

@LeonhardP
Would be happy to know this bug is scheduled to be tackled too:

Currently the URP deform shader is broken in VR with single pass, we could temporary move to multi-pass but it’s broken too (and it’s not a real solution anyway for performance reason).

Any love for VR and URP before final 2019.3 release will be much appreciated!
Thx!

2 Likes

A PR on the SRP repo was made for this to include a test scene for their automated testing and merged into master like a month ago https://github.com/Unity-Technologies/ScriptableRenderPipeline/pull/4803

The test flags up that Opaque Texture sampling is broken so it should be very clear to them it isn’t working. Haven’t seen it fixed yet…

Looks like we have a fix in review :slight_smile:
https://github.com/Unity-Technologies/ScriptableRenderPipeline/pull/5513

1 Like

This issue still does not have a solution but, if you can, by disable opaqueTexture in your PipelineAsset. with this I was able to keep both transparency and MSAA working with both URP 7.2 and 7.3 in Multiview mode. It may have some other gochas but here is the post I got the idea from https://github.com/Unity-Technologies/ScriptableRenderPipeline/pull/5060#issuecomment-562692795

1 Like

I try to port an image effect to URP for VR and seems impossible, i cannot even get a simple Blit work, the sampling of the main texture seems wrong whatever i tried

struct v2f {
        float4 pos : SV_POSITION;
        float2 uv : TEXCOORD0;
//#if UNITY_UV_STARTS_AT_TOP
        float2 uv1 : TEXCOORD1;
//#endif   
        UNITY_VERTEX_OUTPUT_STEREO
    };

//UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex);
    half4 fragAdd(v2f i) : SV_Target{
        UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
   
        //half4 colorA = tex2D(_MainTex, UnityStereoScreenSpaceUVAdjust(i.uv.xy, _MainTex_ST));
        //half4 colorA = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, UnityStereoScreenSpaceUVAdjust(i.uv.xy, _MainTex_ST));
        half4 colorA = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv.xy);
        //half4 colorA = SAMPLE_TEXTURE2D_ARRAY(_MainTex, sampler_MainTex, i.uv.xy, unity_StereoEyeIndex);
        return  colorA;
    }

    struct Attributes
    {
        float4 positionOS       : POSITION;
        float2 uv               : TEXCOORD0;
        UNITY_VERTEX_INPUT_INSTANCE_ID
    };
    v2f vert(Attributes v) {
        v2f o = (v2f)0;
        //UNITY_SETUP_INSTANCE_ID(o);
        UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); //0.2
           
        VertexPositionInputs vertexInput = GetVertexPositionInputs(v.positionOS.xyz);
   
        o.pos = float4(vertexInput.positionCS.xy, 0.0, 1.0);
        float2 uv = v.uv;
#if !UNITY_UV_STARTS_AT_TOP
        uv = uv * float2(1.0, -1.0) + float2(0.0, 1.0);   
#endif
        o.uv = uv;
        return o;
    }

Any help on this would be greatly appreciated. In the post image effect i just blit the background in a temporary texture and render it with this pass, this works ok on normal pass VR, but single pass instanced is not working.

Blit(cmd, source, m_TemporaryColorTexture.Identifier()); //KEEP BACKGROUND      

Blit(cmd, m_TemporaryColorTexture.Identifier(), source, material, 4);

this is what i see in single pass instanced VR (using the mock VR module of Unity)

I changed my project to use URP, and the right eye stopped working ( Oculus Rift / Quest )
I’ve read on the top that this issue is fixed ? or I read it wrong ?