2015-04-21 9 views
1

Я использую следующий шейдер в единстве 4.6.2, но, к сожалению, он не работает в единстве5. У меня есть объект в AR-сцене (vuforia 4), и я хочу показать тени на плоскости, находящейся под объектом. Этот самолет должен быть прозрачным и показывать только тени, как на картинке.Прозрачный Shade Shader Unity5

Like in this picture here

это шейдер, который работает в единстве 4.6.2

Shader "TransparentShadowShader" { 

Properties 
{ 
    _ShadowColor ("Shadow Color", Color) = (0,0,0,1) 
} 

Category { 

Blend SrcAlpha OneMinusSrcAlpha 

Lighting Off 
Zwrite Off 
LOD 200 


SubShader 
{ 
    Tags { "RenderType"="Transparent" } 

    CGPROGRAM 
    #pragma surface surf Custom 

    struct Input { 
     float2 pos : POSITION; 
    }; 

    uniform float4 _ShadowColor; 

    void surf(Input IN, inout SurfaceOutput o) 
    { 
     //Pass through shadow colour to lighting model 
     o.Albedo = _ShadowColor.rgb; 
     o.Alpha = _ShadowColor.a; 
    } 

    half4 LightingCustom(SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) 
    { 
     half4 c; 

     //Inverse illumination - atten accounts for shadowing 
     c.rgb = s.Albedo.rgb * 1.0f-atten; 
     c.a = s.Alpha * 1.0f-atten; 

     return c; 
    } 
    ENDCG 
} 
} 

Fallback "VertexLit", 2 

} 

это то, что я получаю в unity5, используя этот шейдер

enter image description here

+0

Можете ли вы объяснить, каким образом затенение не работает? – bwroga

+0

Я добавил изображение шейдера .. Похоже, он перевернулся или что-то в этом роде. – Jenny

+0

@Jenny вы нашли решение? –

ответ

-1

Хорошо, уже искали ответ на этот вопрос, все было проще, чем ожидалось

Shader "Invisible/InvisibleShadowCaster" { 
SubShader { 
    Tags { 
     "Queue"="Transparent" 
     "RenderType"="Transparent" 
    } 
    CGPROGRAM 
    #pragma surface surf Lambert alpha addshadow 

    struct Input { 
     float nothing; // Just a dummy because surf expects something 
    }; 

    void surf (Input IN, inout SurfaceOutput o) { 
     o.Alpha = 0; 
    } 
    ENDCG 
} 
FallBack "Diffuse"} 

это работало отлично для меня, попробуйте

+0

спасибо за ваш ответ, но я не вижу теней на своем самолете ?! – Jenny

+0

Тогда я не знаю, попробуйте использовать стандартное единство 5 шейдеров и посмотрите, что получится –

+0

Вы использовали этот шейдер на плоскости справа? И у вас был объект поверх него, который создает тени? Все еще не могу понять! :( – Jenny