镜头光晕 (Lens Flares) 模拟相机镜头内的折射光线的效果,主要作用就是让太阳光/其他光源更加真实。
Build-in
Build-in管线中,可以直接添加Lens Flare组件即可获得效果。
URP(2019)
在Unity2019版本升级为URP管线后仅Scene视图可以看到效果,Game视图没有任何效果,查看文档得知URP不支持Lens Flare了,需要自己进行实现,大概思路就是按照顺序渲染几个面片。
这里有介绍:具体方法(转载)
URP(2021.2)
喜大普奔,Unity意识到了这个问题,并且在2021.2之后进行了完善,更新了URP专属的Lens Flare,需要在光照上添加Lens Flare(SRP),如果不是光照有的就不显示。
(新版本细化了对于每个面片的设置,但是对于图集的处理找不到了,如果采用图集,需要自己分割,一个一个放)
相比Build-in添加很多属性:
Screen Attenuation 主要是涉及随着距离变远,炫光逐渐消失,这里没设置就是不消失。
Occusion 主要是涉及物体遮挡的设置。
具体解释见:Lens Flare(SRP)官网API
遇到问题:
1.Scene视图可以看到,但Game视图没有
网上查了很多,说是在Camera上加Flare Layer,我加了也不好用,后面发现Camera没有打开Post Precessing,因为它底层本质上是后处理,所以需要勾选。
2.Scene视图可以被物体遮挡,但Game视图不行。
同样看下实现原理,遮挡是通过深度缓冲区算的,然后一看Camera,果然没有使用。这里简单的办法是直接把Depth Texture设置为On,当然也可以 Use Pipeline Settings,然后改设置。