ue4多个关卡怎么构建光照_游戏中的全局光照(四) 漫反射GI

本文深入探讨了在UE4中构建全局光照漫反射GI的多种方法,包括光照预计算、带方向光照预计算、Lightmap、Light Probe和Precomputed Radiance Transfer。通过球谐SH、H-Basis、球形高斯SG等技术,解释了如何处理静态和动态物体的光照信息。此外,还介绍了全动态光照的发展趋势。
摘要由CSDN通过智能技术生成

26244e4ed5fa33e2f57e5aa43c77a4dc.png
TC130:实时渲染学习笔记目录​zhuanlan.zhihu.com

接下来我们来讨论GI的漫反射部分, 首先需要明确的是, 这里的漫反射GI, 指的是最后一步是漫反射, 而不关心前面的光传播是漫反射还是镜面反射.

光照预计算

和前面我们烘焙AO系数的过程一样, 最简单的方式就是将漫反射的光照预计算并保存下来, 当然, 这种方式仅仅适用于静态的物体和静态的光照. 另外, 这里的烘焙是可以包含前面我们讲的环境光照的.

一般来说, 我们通常需要将场景中的物体分为静态(static)和动态(dynamic)的, 对于静态物体使用烘焙的技术. 而对于动态的物体, 会在下面讲到如何实现GI效果.

最简单形式的烘焙就是直接记录静态光照在物体表面上的 irradiance, 对于一个平坦 lambertian 平面, 实时计算光照的过程非常简单, 只需要用 irradiance 乘以物体表面的albedo即可:

994f84d9801dd2a62bbaf080a1fad330.png

当然这里我们是假设物体表面是平坦的, 对于有法线贴图的物体, 这种方式就会出现明显的穿帮. 因此目前已很少见到预计算 Irradiance的做法.

你可能觉得困惑的一点是, 为什么不将物体表面的漫反射光照直接计算出来并保存呢, 因为漫反射Lambertian假设在所有方向上观察强度完全相同, 这样根本就不需要考虑法线的问题了.

原因是这样做会消耗非常大的存储空间. albedo 贴图本身是非常 high-frequency 的, 而且 albedo 贴图是可以在多个模型间复用. 但是 lightmap 无法复用, 只能做成 low-frequency 的. 这样将 lightmap 和 albedo 分离可以尽量降低内存消耗.

带方向光照预计算

因此, 我们烘焙的 lightmap 需要考虑不同法线情况下对应的光照信息. 幸运的是, 我们手头有很多现成的工具. 在本系列文章第一篇中讲环境光照的时候, 讲到过球形高斯SG和球谐函数SH, 正好可以在这里使用.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值