3D тени от 2D спрайтов

Для экспериментальных разработок и тем "я нашел чужой исходник, почему он не работает?"

3D тени от 2D спрайтов

Сообщение васятко 13 авг 2015, 18:12

Есть вот такой вот шейдер, который должен был бы делать так, чтобы спрайты получали и давали тени, как 3d объекты. Но реально тени от спрайтов появляются только на 3D объектах, а на других спрайтах - нет. Опытный товарищ, подскажи, что тут неправильно?
Синтаксис:
Используется csharp
Shader "Sprites/Bumped Diffuse with Shadows"
{
        Properties
        {
                [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
                _BumpMap ("Normalmap", 2D) = "bump" {}
                _Color ("Tint", Color) = (1,1,1,1)
                [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0
                                _Cutoff ("Alpha Cutoff", Range (0,1)) = 0.5

        }

        SubShader
        {
                Tags
                {
                        "Queue"="AlphaTest"
                        "IgnoreProjector"="True"
                        "RenderType"="TransparentCutOut"
                        "PreviewType"="Plane"
                        "CanUseSpriteAtlas"="True"
                       
                }
                        LOD 300


                Cull Off
                Lighting On
                ZWrite On
                Fog { Mode Off }
               

                CGPROGRAM
                #pragma surface surf Lambert alpha vertex:vert  alphatest:_Cutoff fullforwardshadows
                #pragma multi_compile DUMMY PIXELSNAP_ON

                sampler2D _MainTex;
                sampler2D _BumpMap;
                fixed4 _Color;

                struct Input
                {
                        float2 uv_MainTex;
                        float2 uv_BumpMap;
                        fixed4 color;
                };
               
                void vert (inout appdata_full v, out Input o)
                {
                        #if defined(PIXELSNAP_ON) && !defined(SHADER_API_FLASH)
                        v.vertex = UnityPixelSnap (v.vertex);
                        #endif
                        v.normal = float3(0,0,-1);
                        v.tangent =  float4(1, 0, 0, 1);
                       
                        UNITY_INITIALIZE_OUTPUT(Input, o);
                        o.color = _Color;
                }

                void surf (Input IN, inout SurfaceOutput o)
                {
                        fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * IN.color;
                        o.Albedo = c.rgb;
                        o.Alpha = c.a;
                        o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
                }
                ENDCG
        }

Fallback "Transparent/Cutout/Diffuse"
}
 
васятко
UNец
 
Сообщения: 5
Зарегистрирован: 11 дек 2014, 13:02

Вернуться в Шейдерная кузня

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3