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

来源:互联网 发布:跟聪明的女朋友知乎 编辑:程序博客网 时间:2024/05/19 23:25
9.2点光源对平面的投影
光源的方向矢量
    上一节是平行光的情形,点光源也是类似的,对于通过使用WorldSpaceLightDir()方法来计算光源方向来说,就完全一样了。
       
 pass {   Tags { "LightMode" = "ForwardAdd" } Blend DstColor SrcColorOffset -2,-1CGPROGRAM#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  }

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


0 0
原创粉丝点击