untiy 3d ShaderLab_第9章_1_平面阴影(二) 点光源对平面的投影

9.2点光源对平面的投影
光源的方向矢量
    上一节是平行光的情形,点光源也是类似的,对于通过使用WorldSpaceLightDir()方法来计算光源方向来说,就完全一样了。
        
 pass {   
		Tags { "LightMode" = "ForwardAdd" } 
		Blend DstColor SrcColor
		Offset -2,-1
		CGPROGRAM
		#pragma vertex vert 
		#pragma fragment frag
		#include "UnityCG.cginc"
		float4x4 _World2Ground;
		float4x4 _Ground2World;
		float4 vert(float4 vertex: POSITION) : SV_POSITION
		{
		float3 litDir;
			litDir=normalize(WorldSpaceLightDir(vertex)); 
			litDir=mul(_World2Ground,float4(litDir,0)).xyz;
		float4 vt;
			vt= mul(_Object2World, vertex);
			vt=mul(_World2Ground,vt);
		vt.xz=vt.xz-(vt.y/litDir.y)*litDir.xz;
		vt.y=0;
		vt=mul(_Ground2World,vt);//将计算结果返回到世界坐标
		vt=mul(_World2Object,vt);
		return mul(UNITY_MATRIX_MVP, vt);
		}
 		float4 frag(void) : COLOR 
		{
			return float4(0,0.6,0,1);//绿色的阴影
		}
 		ENDCG 
	 }

如图,红色的是平行光的投影,绿色的是场景中点光源的投影。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值