用灯光和模型正前方的向量点积之后再做计算,算出阴影的阈值,再用阈值和采样面部等高线的那张图(用灯光和模型左边向量积)进行比较,当阈值大于采样点,说明是阴影点。
float ilm = dot(LightDir, Left) > 0 ? ilmTex.r : r_ilmTex.r;//确定采样的贴图
//ctrl值越大代表越远离灯光,所以阴影面积会更大,光亮的部分会减少-阈值要大一点,所以ctrl=阈值
//ctrl大于采样,说明是阴影点
isSahdow = step(ilm, ctrl);
网友评论