《Unity3D ShaderLab开发实战详解》第12章体积阴影

体积阴影

原理: 使用两个Pass,第一个Pass将物体背光面向灯光方向挤出,渲染正面,第二个Pass将物体背光面向灯光方向挤出,渲染背面,同时利用融合将重合的部分抵消掉,只剩下阴影部分。
注意: 第一个Pass渲染的结果是(纯白色 * 后面的颜色 + 后面的颜色 = 2 * 后面的颜色),第二个Pass渲染的结果是((0.5,0.5,0.5,0.5) * 2 * 后面的颜色 + 0 * 2 * 后面的颜色 = 后面的颜色),结果两个Pass重叠的地方就相互抵消了。

Pass{
	Cull Back //只渲染正面
	Blend DstColor One
	CGPROGRAM
	ENDCG
	SetTexture[_MainTex]{constantColor(1,1,1,1) combine constant}
}
Pass{
	Cull Front//只渲染背面
	Blend DstColor Zero//剔除掉和第一个Pass重叠的部分
	CGPROGRAM
	ENDCG
	SetTexture[_MainTex]{constantColor(0.5,0.5,0.5,0.5) combine constant}
}
发布了41 篇原创文章 · 获赞 4 · 访问量 3888

猜你喜欢

转载自blog.csdn.net/weixin_42487874/article/details/103295668
今日推荐