VR中image或者文字一直浮现在眼前
- Canvas的RenderMode为WorldSpace
- image的操作方式 World Space canvas on top of "everything" ? - Questions & Answers - Unity DiscussionsIs it possible to render a world space canvas on top of everything? Example, health bars on top of all 3D objects.
https://discussions.unity.com/t/world-space-canvas-on-top-of-everything/128165
Shader "UI/Default_OverlayNoZTest" {Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}_Color("Tint", Color) = (1,1,1,1)_StencilComp("Stencil Comparison", Float) = 8_Stencil("Stencil ID", Float) = 0_StencilOp("Stencil Operation", Float) = 0_StencilWriteMask("Stencil Write Mask", Float) = 255_StencilReadMask("Stencil Read Mask", Float) = 255_CullMode ("Cull Mode", Float) = 0_ColorMask("Color Mask", Float) = 15}SubShader{Tags{"Queue" = "Overlay""IgnoreProjector" = "True""RenderType" = "Transparent"//"PreviewType" = "Plane"//"CanUseSpriteAtlas" = "True"}Stencil{Ref[_Stencil]Comp[_StencilComp]Pass[_StencilOp]ReadMask[_StencilReadMask]WriteMask[_StencilWriteMask]}Cull [_CullMode]ZWrite OffLighting OffFog{Mode Off}ZTest AlwaysBlend One OneMinusSrcAlphaColorMask [_ColorMask]Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata_t{UNITY_VERTEX_INPUT_INSTANCE_IDfloat4 vertex : POSITION;float4 color : COLOR;float2 texcoord : TEXCOORD0;};struct v2f{UNITY_VERTEX_INPUT_INSTANCE_IDUNITY_VERTEX_OUTPUT_STEREOfloat4 vertex : SV_POSITION;fixed4 color : COLOR;half2 texcoord : TEXCOORD0;};fixed4 _Color;fixed4 _TextureSampleAdd; //Added for font color supportv2f vert(appdata_t IN){v2f OUT;UNITY_INITIALIZE_OUTPUT(v2f, OUT);UNITY_SETUP_INSTANCE_ID(IN);UNITY_TRANSFER_INSTANCE_ID(IN, OUT);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);OUT.vertex = UnityObjectToClipPos(IN.vertex);OUT.texcoord = IN.texcoord;#ifdef UNITY_HALF_TEXEL_OFFSETOUT.vertex.xy += (_ScreenParams.zw - 1.0)*float2(-1,1);#endifOUT.color = IN.color * _Color;return OUT;}sampler2D _MainTex;fixed4 frag(v2f IN) : SV_Target{half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;//Added for font color supportclip(color.a - 0.01);return color;}ENDCG}} }
shader逻辑在项目中创建并附加到材质球,并把材质球赋值给Material
-
TextMeshPro为字体创建的sdf材质进行修改 Overlay
-
改为