全息投影制作详解
实现原理:
1.使用聚光灯的光强值切换模型的显示和消失,当光衰减为0时,模型完全可见,当光衰减为100%时,模型完全消失,光衰减值在0到100%间,则呈现模型渐变显示或消失。
2.使用双Pass处理半透明模型穿插的问题。
3.通过偏移屏幕的Y坐标来做噪波纹理的UV动画,模拟全息投影屏上的噪波效果(类似于电视机屏幕上的噪点和上下滚动的横条纹)。
4.使用菲尼尔制作模型边缘的流光效果。
算法详解:
1.聚光灯的衰减
WorldSpaceLightPos向量是float4类型数据,XYZ是光向量3个轴坐标,W是光源类型,0是平行光,1是点光源或者聚光灯,这里WorldSpaceLightPos节点的Type即为W分量。我们这里是用的聚光灯,所以Type等于1,1和衰减的乘积还是衰减本身,在经过Smoothstep的灰度遮罩处理,得到了一个光强衰减遮罩(衰减值其实是利用的灯光衰减贴图来模拟的,并非实时灯光衰减,从下面代码中可以很直观的看到底层的操作)。
代码中,由于聚光灯只能在前向叠加Pass(ForwardAdd)