原理
以灯光的视角对场景进行渲染,得到一张阴影深度图,然后正常渲染场景的时候在灯光空间下判断当前片段的深度是否大于阴影深度图中对应的地方,从而判断当前片段是否在阴影中。
渲染阴影深度图
- 灯光视角的投影矩阵:
- 平行光:用正交投影矩阵。
- 点光源:用六个透视投影矩阵。
- 灯光视角范围:
- 平行光:灯光的投射体正好包含摄像机所能看到的物体。
- 点光源:整个场景。
- 渲染阴影深度图
Pass{
Fog{
Mode Off }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycG.cginc"
struct v2f{
float4 pos : SV_POSITION;
float2 depth :TEXCOORD0;
};
v2f vert(appdata_base v){
v2f o;
o.pos