在场景中融合物体的阴影与背景-Unity3d shader的灵活运用

好久没来博客园了,忙于生活的奔波,迷失在这世间的万紫千红,只有坐在电脑前才会让我感到平静。

这个shader使用了3个pass,来实现物体阴影与背景融合的效果,里面的宏参阅include的几个文件。

//code--------start

Shader "tcRecShadowAR" {//by tc ,at cas,in otc

subShader{

     Tags { "Queue"="Opaque" "IgnoreProjector"="True" "RenderType"="Opaque" }
     LOD 200
//    
     GrabPass {}
    
//visibly
Pass {
    
Tags {"LightMode" = "ForwardBase"}
Blend SrcAlpha OneMinusSrcAlpha
    
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#pragma multi_compile_fwdbase
#include "UnityCG.cginc"
#include "AutoLight.cginc"
#include "Lighting.cginc"

struct v2f
{
     float4 pos : POSITION;
     float4  uv  : texcoord0;
     LIGHTING_COORDS(1,2)

};
//
float4 _GrabTexture_ST;
v2f vert(appdata_base v)
{
     v2f o;
     o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
     #if UNITY_UV_STARTS_AT_TOP
     float scale = -1.0;
     #else
     float scale = 1.0;
     #endif
     o.uv.xy = (float2(o.pos.x, o.pos.y*scale) + o.pos.w) * 0.5;
     o.uv.zw = o.pos.zw;
     TRANSFER_VERTEX_TO_FRAGMENT(o);

     return o;
}
//
sampler2D _GrabTexture;
float4 frag(v2f i) : COLOR
{
     float4 c;
    
     float  atten = LIGHT_ATTENUATION(i);
     c.rgb = tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(i.uv)) * atten;
     c.a = saturate(1 - atten);
     return c;
}
ENDCG
         
     }
//
Pass {
          Name "ShadowCollector"
          Tags { "LightMode" = "ShadowCollector" }
          //
          Fog {Mode Off}
          ZWrite On
          ZTest LEqual


CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#pragma multi_compile_shadowcollector
#define SHADOW_COLLECTOR_PASS
#include "UnityCG.cginc"
//
struct appdata {
     float4 vertex : POSITION;
};

struct v2f {
     V2F_SHADOW_COLLECTOR;
};
v2f vert (appdata v)
{
     v2f o;
     TRANSFER_SHADOW_COLLECTOR(o)
     return o;
}
fixed4 frag (v2f i) : COLOR
{
     SHADOW_COLLECTOR_FRAGMENT(i)
}
ENDCG

     }
}

}

//code--------end

在场景中融合物体的阴影与背景-Unity3d shader的灵活运用

在场景中融合物体的阴影与背景-Unity3d shader的灵活运用