Shader之——角色实时阴影

     移动段的实时阴影,之前的实现方案是,让角色受光,让接受阴影的地表受光,达到一个实时阴影的效果。然后就发现美术的地表做得比较复杂 面数跟材质球数量都不少,一旦受光,dc跟面数都增加的比较明显,对效率影响比较高。

     于是有了新的方案,地表上本来就会做一层行走网格,面数比较少,而且整个场景也就一到两个模型,干脆就用行走网格来接受阴影。让产生阴影的地方半透叠加到地表,没有阴影的地方全透明,对效率影响相对比较低。

效果如下:

shader如下:

Shader "scenes/ShadowCollision" {    
    SubShader {  
        Tags { "RenderType"="Opaque"   "Queue"="Geometry+9"}  
		 Blend SrcAlpha OneMinusSrcAlpha 
		Zwrite Off
        Pass {  
            Tags {  
                "LightMode"="ForwardBase"  
            }  
             
            CGPROGRAM  
            #pragma vertex vert  
            #pragma fragment frag  
            #define UNITY_PASS_FORWARDBASE  
            #include "UnityCG.cginc"  
            #include "AutoLight.cginc"  
            #pragma multi_compile_fwdbase_fullshadows  
            fixed4      _LightColor0; 		 

            struct VertexInput {  
                fixed4 vertex : POSITION;  
               
            };  
            struct v2f {  
                fixed4 pos : SV_POSITION;  
                LIGHTING_COORDS(1,2)  
  
            };  
            
            v2f vert (VertexInput v) 
			{  
                v2f o ;  
                o.pos = UnityObjectToClipPos(v.vertex );  
				TRANSFER_SHADOW(o);
                return o;  
            }  

            fixed4 frag(v2f i) : COLOR
			{    
                fixed  atten = LIGHT_ATTENUATION(i);
				fixed4 col = fixed4(0, 0, 0,1 );
				col.a = 1 - atten;
				return col;
            }  
            ENDCG  
        }  
   }  
   FallBack   "Transparent/Cutout/VertexLit" 
}  

亲,如果您觉得本文不错,愿意给我一些动力的话,请用手机扫描二维码即可向我打赏

                                         打赏

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值