跳转至

全局光照的复杂性

  • 直射光(好做)
  • 间接光(主要目的)
  • 间接阴影
  • 光滑(高光)反射
  • 焦散线
  • 次表面散射

次级光源概念(源自光线追踪)

任何被光源照到的物体表面,会再次作为光源照亮其他地方

关键问题

用间接光照照明点p需要什么。 1. 哪些表面是直接照明的? 2. 每个表面patch对p的共享是多少呢?

反射阴影贴图:RSM

问题一:哪些surface patch被直接照亮

  • 可以用最经典的Shadow Map
  • 阴影贴图shadowmap上的每个像素都是一个小的==surface patch==

假设

每个像素的精确像素亮度是已知的 所以可作出假设: - 任何反射都是漫反射 - 因此,射出光线在所有方向上都是平等的

光线概念区分

  • 辐照度:由一个光源发出的光
  • Irradiance:所有光线汇聚在一个表面上的光
  • Radiance:单光线

问题二:每个surface patch对p的贡献是多少

  • 对pathch表面所在==立体角的积分==
  • 可以转换为patch在弧面上的积分 ![[Pasted image 20250304095256.png]]

入射光亮或能量Incident flux or energy

可以实现把dA消去的结果 ![[Pasted image 20250304104355.png]]

一些问题

不是所有的像素都需要RSM贡献光照 - 可见性(依旧比较难处理):有些像素点明显不会发出光照,那就不需要RSM - 方向: - 距离:距离光源太远,贡献太少 ![[Pasted image 20250304104659.png]]

加速

理论上,所有shadowmap上的pixels都可以贡献给p - 我们可以减少这个数量吗?(512平方次,1024平方次......相当恐怖) - 我们可以使用==PCSS的第1到3步==

可以减少到只有几百个像素点

存储

RSM本质上就是Shadow Map。 RSM上需要存储什么呢? - 深度 - 世界坐标 - 法线 - flux

适用场景

手电筒:因为覆盖范围相对较小,不需要太大的RSM 《神秘海域4》、《美国末日》 ![[Pasted image 20250304105858.png]]

优点:容易实现

缺点

  • 性能消耗随光源线性增长:不适配多光源,因为和ShadowMap息息相关
  • 缺乏visibility检查:没有反射物到shadidngpoint的visibility
  • 许多假设:漫反射器,深度作为距离等等。不是很标准