Contents

UE4的LightPropagationVolume

目前刚接触UE4,想要得到最后更优质的图像,简单的研究了一下Light Propagation Volume。

Light Propagation Volume:

CryEngine的开发者发明了Light Propagation Volume (LPV) ,主张不使用预计算,在运行时直接计算动态间接光照。通过对LPV进行marching,可以产生半光泽材质的反射:它的做法简单总结是先生成一些虚拟的点光源来近似间接光照。每个点光源都要渲染一个reflective shadow map,然后将shadow map的光照信息注入到一个专门用球谐系数形式保存光照的volume 3D纹理里面,然后在纹理内部将最初的光照传递分散开来,渲染的时候直接从这个volume texture里读取要着色的点位置的颜色作为间接光照。这个方法可以达到不错的间接漫反射。缺点第一是volume texture太费显存,第二是基于体素化之后的光照信息也会有“格子”样的artifact,而且也是非常耗费计算的一个技术,因为每一个虚拟点光源都要渲染一个reflective shadow map。

这个功能是默认没有打开的(为啥没开不用多说了吧!),必须要修改配置文件,r.LightPropagation=1 加入consolevariables.ini 文件最后。 https://forums.unrealengine.com/filedata/fetch?id=1203718&d=1481266981

遇到问题

  • 漏光问题,拥有体积的面片墙无法遮挡光线渗透。之前项目的脑残做法是用一个额外的box进行遮挡阳光。我服了。 可通过调整Light Injection Bias 来规避问题。别问为什么,我现在也不知道。
  • 阴影平坦,调整Occlusion  

结论

总之呢,目前来说,由于灯光全都是动态光,mesh也是动态的,不能进行bake的话,LPV这是比较好的解决方案,但是并无法产生最好的图像。