Jan
14
2017

[Shader] Draw World Space UI Always On Top

If you want to draw UI in VR (for example Google Cardboard), it doesn’t support ScreenSpace rendermode in canvas..
So all the UI’s are using WorldSpace RenderMode.. which causes issues when UI goes behind geometry.

Fix: You can modify UI shader to disable ZTest

Shader source: (tested with 5.6.0b3)
https://github.com/UnityCommunity/UnityLibrary/blob/master/Assets/Shaders/2D/UI/UI_Always_On_Top.shader

*Only one line was modified from original UI shader,
// From
ZTest [unity_GUIZTestMode]

// To
ZTest Off


6 Comments + Add Comment

  • Just when I need it ! Thank you 🙂

    I’ve put it on all “Image” and “Text” components of my UI. Is there a way to replace the default UI shader by this one ?

    • Yes, i believe if you rename the shader as: Shader “UI/Default”
      then it might override the built-in one..

  • so I just added this to my project, I didn’t even attach it to anything and it fixed the shadow on top of my world space ui problem I was having.
    Don’t understand how thats possible. But Im just gonna go with it.

  • I cannot find the shader.

    • Fixed link now

      • Thanks mate!

Leave a comment

Connect

Twitter View LinkedIn profile Youtube Github Join Discord Twitch Instagram BlueSky

UnityLauncherPro

Get UnityLauncherPRO and work faster with Unity Projects!
*free unity hub alternative

@unitycoder_com

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.