在今年的GDC(游戏开发者大会)的Advanced Graphics Summit上,关于Snowdrop引擎中光线追踪技术的讨论引起了广泛关注。
一、光线追踪全局照明的实现细节
-
屏幕空间追踪:
- 屏幕空间追踪从相机出发,对屏幕上的每个像素点生成一条或多条光线。
- 这些光线在屏幕上进行遍历,查找与场景物体相交的点。
- 一旦找到相交点,引擎会计算该点处的光照信息,包括颜色、亮度等。
- 由于屏幕空间追踪只关注屏幕上的像素,因此其计算效率较高,但精度可能受到屏幕分辨率的限制。
-
世界空间追踪:
- 如果屏幕空间追踪未能找到相交点,引擎会转向世界空间进行追踪。
- 在世界空间中,引擎会发出光线,并检查光线是否与场景中的任何物体相交。
- 为加速这一过程,引擎使用BVH(边界体积层次)数据结构。BVH将场景划分为多个层次化的体积,从而可以快速定位到与光线相交的物体。
- 一旦找到相交点,引擎会计算该点处的光照信息,并考虑光线在物体间的传播和交互。
- 世界空间追踪的计算量较大,但可以提供更高的精度和更真实的光照效果。
-
光照缓存:
- 如果世界空间追踪也未能找到相交点,引擎会使用光照缓存作为后备方案。