Unreal4: GPU Lightmap
UE4通过ightmapPathTracing.usf实现静态物体的lightmap烘焙。lightmap是把模型表面的光照情况预计算并缓存起来的一张贴图,首先讲模型表面展开到uv空间且不能uv覆盖,因为平常的uv贴图可以复用,但是模型上每一个点的光照情况可能都不一样;然后,对lightmap texel对应的模型表面点,做光照的半球积分。
lightmap的材质限定
Lightmap本质上存储的是表面的入射辐照度(irradiance),它隐含的假设是最终着色时该表面以 Lambertian 漫反射来使用这份光照数据,运行时乘以 diffuse albedo 得到出射颜色。UE4 lightmass在烘焙lightmap时,在计算间接光弹射时,所有中间弹射表面也被作为diffuse reflector处理,在中间弹射点做cosine-weighted半球采样,忽略材质的specular、roughness、metallic等属性,忽略特殊的光效,比如焦散(caustics,即 LSDE光照路径)。Lightmass 烘焙的整个光照传输链路中,每一次弹射都是diffuse的,Lightmass取Base Color作为弹射albedo,理论上金属化的表面(metallic = 1)在PBR中几乎没有diffuse分量,这样的处理可能会有不一致的问题。
