入门图形课程通常有一个项目,要求您构建光线跟踪器以渲染场景。许多进入研究生院的图形学生说,他们想从事射线追踪。然而,在SIGGRAPH等场所中,光线追踪似乎是一片死地。
光线跟踪是否真的是在所有所需照明等条件下准确渲染场景的最佳方法,是光线跟踪器的缓慢(读取非交互式)性能使它们变得不感兴趣,还是还有其他东西?
入门图形课程通常有一个项目,要求您构建光线跟踪器以渲染场景。许多进入研究生院的图形学生说,他们想从事射线追踪。然而,在SIGGRAPH等场所中,光线追踪似乎是一片死地。
光线跟踪是否真的是在所有所需照明等条件下准确渲染场景的最佳方法,是光线跟踪器的缓慢(读取非交互式)性能使它们变得不感兴趣,还是还有其他东西?
Answers:
光线跟踪是一种非常好用且直观的算法,它是比光栅化更实际的描述场景照明的方式,但是:
即使在非交互性应用程序(例如电影)中,由于其局限性,很少使用射线追踪。皮克斯只开始在汽车中使用光线追踪,并且仅用于某些特定的反射效果(电影“汽车”的光线追踪)。
这是一篇出色的文章,更详细地描述了光线跟踪的当前状态及其优点和缺点:光线跟踪的状态(在游戏中)。
基本光线跟踪具有与环境光有关的主要问题。大多数照明模型将环境光视为渗透到乙醚中的恒定因子。尽管光线跟踪非常适合计算反射,但它存在数值不稳定和复杂的表面相交测试的问题。光线跟踪在硬件加速渲染中可能无法很好地发挥作用,因为递归在确定任何特定像素的照明度方面起着重要作用。基本的光线跟踪在计算上非常昂贵。
光能传递系统更好地处理环境光,因为它会将环境中的所有物体都当作光源,从而产生比光线追踪更真实的照明模型。使用光能传递解决方案,场景中存在固定数量的多边形,并且该计算适合硬件加速。
最终,光线追踪并不是渲染场景的最佳方法,但它是良好渲染策略的一部分。高昂的计算成本和不良的环境照明是打击光线追踪的主要手段。作为研究主题,正在进行中,但似乎集中在硬件加速上。
我不会说光线跟踪/路径跟踪已经死了……如果有的话,由于该领域许多相关算法的内在并行性与速度的结合,使得该领域的兴趣重新兴起。基于GPU的系统,每秒可计算数百万条射线。此外,渲染管道还具有灵活性,更通用的语言(例如CUDA和OpenCL)使它们能够使开发人员利用GPU的并行功能,而不必像最初的GPGPU技术那样显式使用OpenGL图形管道。持续的路径跟踪研究的一些著名的主流例子包括:
最后,您需要对全局照明问题的优化技术进行大量研究,包括基于点的全局照明,光子贴图和相关的优化,高级外观建模(包括数据驱动方法),辐照度缓存等。