一、制作步骤
1.1 使用一张 Mask 控制灯光形状
1.2 通过对 mask offset 的控制,可以模拟灯光的照射方向
1.3 通过与 UV进行计算,可实现从左上到右下的衰减,并通过 pow 加强变化
half mask = tex2D(_MaskTex, maskTexUV).r;
mask = mask - maskTexUV.x * _AttenuationX - (1 - maskTexUV.y) * _AttenuationY;
mask = pow(saturate(mask), _Pow) / _Smooth * _MaskInstensity + _MaskBias;
mask = saturate(mask);
1.3 通过 mask 区分亮暗部,并通过不同颜色加以控制
1.4 将颜色转换成灰度后,与 mask 做计算,实现照亮的部分对比加强增加立体感
1.5 为了更加可控,添加了旋转 UV 功能
旋转UV默认是在左下角旋转,如果想要居中旋转,需要 将坐标缩放到【-1,1】(UV远点在中间),旋转完成后在缩放到【0,1】
二、最终效果