2016-06-08 2 views
3

enter image description hereМожет ли этот шейдер существовать в единстве?

«Передняя» и «обратная» - это все SpriteRenderer.

Есть ли шейдер в Unity, который может это сделать?

+1

Таким образом, вы хотите, чтобы заказ отображался в обратном порядке? Почему вы не можете просто упорядочить их правильно в 3D-представлении? – Bart

ответ

2

Вы можете создать свой собственный шейдер. Ниже приводится код для этого же: -

Properties { 
    _MainTex ("Font Texture", 2D) = "white" {} 
    _Color ("Text Color", 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 

    _ColorMask ("Color Mask", Float) = 15 
} 

SubShader { 

    Tags 
    { 
     "Queue"="Transparent" 
     "IgnoreProjector"="True" 
     "RenderType"="Transparent" 
     "PreviewType"="Plane" 
    } 

    Stencil 
    { 
     Ref [_Stencil] 
     Comp [_StencilComp] 
     Pass [_StencilOp] 
     ReadMask [_StencilReadMask] 
     WriteMask [_StencilWriteMask] 
    } 

    Lighting Off 
    Cull Off 
    ZTest Off 
    ZWrite Off 
    Blend SrcAlpha OneMinusSrcAlpha 
    ColorMask [_ColorMask] 

    Pass 
    { 
     CGPROGRAM 
     #pragma vertex vert 
     #pragma fragment frag 

     #include "UnityCG.cginc" 

     struct appdata_t { 
      float4 vertex : POSITION; 
      fixed4 color : COLOR; 
      float2 texcoord : TEXCOORD0; 
     }; 

     struct v2f { 
      float4 vertex : SV_POSITION; 
      fixed4 color : COLOR; 
      float2 texcoord : TEXCOORD0; 
     }; 

     sampler2D _MainTex; 
     uniform float4 _MainTex_ST; 
     uniform fixed4 _Color; 

     v2f vert (appdata_t v) 
     { 
      v2f o; 
      o.vertex = mul(UNITY_MATRIX_MVP, v.vertex); 
      o.color = v.color * _Color; 
      o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); 
      #ifdef UNITY_HALF_TEXEL_OFFSET 
        o.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); 
      #endif 
      return o; 
     } 

     fixed4 frag (v2f i) : SV_Target 
     { 
      fixed4 col = i.color; 
      col.a *= tex2D(_MainTex, i.texcoord).a; 
      clip (col.a - 0.01); 
      return col; 
     } 
     ENDCG 
    } 
} 
    FallBack "Diffuse" 
+0

спасибо за vanshika, но ваш шейдер не работает в 2D-орфографической камере и визуализаторе спрайтов. – mjk6026

+0

В средстве визуализации спрайтов также есть опция шейдера. Создайте новый шейдер и поместите его туда. Это будет работать. – vanshika

+0

нет! это не сработало. спрайт показывает только белый силуэт, а не изображение. – mjk6026

Смежные вопросы