| 和当今构建我们实时3D游戏中的光栅化技术不同,光线追踪技术能实现真正基于物理学的水面、倒影、折射等效果。但是光线追踪算法又无比复杂,大部分好莱坞大片渲染一帧就要拥有数千个CPU内核的渲染集群耗费十几个小时,要实现每秒30帧~60帧的实时光线追踪,谈何容易。早在2004年,德国青年Daniel Pohl就通过修改《Quake 3》游戏,引入了光线追踪算法。通过这一翻天覆地的改变,修改版《Quake 3》所展现出的图形效果足以让当时大部分游戏汗颜。之后的几年里,Daniel Pohl更将注意力放到了《Quake 4》、《Quake War》等游戏上,试图在这些游戏中实现实时光线追踪算法。有趣的是,Daniel Pohl的实时光线追踪技术完全不依赖于GPU,仅仅是借助多内核CPU的运算能力“硬抗”。也许正因为如此,Daniel Pohl随后被Intel高薪聘用,继续向实时光线追踪领域迈进。 在Intel披露Lar rabee显卡计划后,就有人惊呼,难道Intel希望用光线追踪代替日常实时3D计算中最基本最传统的光栅化算法,从而在根基上撼动NVIDIA、AMD的统治?2009年3月,一家名不见经传的公司—Caustic Graphics突然浮出水面,带来了一种具有突破性意义的实时光线追踪软硬件解决方案。这家由苹果公司图形部门三大元老创办的公司,声称一举解决了光线追踪算法效率低下的难题。究竟未来实时3D的世界,光线追踪和传统光栅化算法谁主沉浮?我们一起从原理入手,来了解什么是光线追踪。 |
|
光线追踪通过模拟光的自然流动,我们可以模拟有关折射、反射以及光在半透明物质中的行为、阴影以及色渗的物理原理,完成对各类相关效果的模拟。光线追踪算法能够渲染出近乎真实的图片。在之前,人们已经提出多种算法用以提高光透射和光线追踪的速度,比如采用适应性采样、样本复用、减少阴影光线的数量等方法。如果没有在算法上进行优化,目前的显卡还无法实现流畅的实时光线追踪算法。我们处于光线追踪研究的初级阶段大概再过2~3年,我们才有可能看到支持光线追踪的游戏。 如果你看过精美的3D建筑效果图、复杂的好莱坞科幻片,你就会发现他们对玻璃材质、液体的渲染处理远远超越我们日常玩的3D游戏。这是因为他们都采用了光线追踪算法,相比3D游戏的光栅化算法有更真实的表现力。在3DS Max、Maya、Softimage XSI等软件中,无一例外地采用了基于光线追踪(Ray Tracing)和光能传递(Radiosity)的算法。由于光线追踪算法完全符合真实世界中光线的传播、折射、衍射、吸收等过程,所以可以渲染出肉眼无法分辨的3D场景。 随着CPU和GPU性能的爆炸性增长,在过去的几年里,已经有越来越多的公司试图实现实时光线追踪算法。 | |
|
由于光线追踪算法和现实世界中的物理规则几乎一样,所以在构建精美的3D场景的时候,就有了得天独厚的优势。在画面质量上,光栅化在光线追踪算法面前几乎没有还手之力。光栅化技术要实现媲美光线追踪算法一样的真实场景反射、折射效果,对开发者而言简直是噩梦。 | |
|
每个结点除了保存其两个子结点的引用以外,还可以保存一个或多个元素。上述过程是一个递归过程,直至每一子空间仅包含一个多边形为止。通过BSP树程序员可以选择性的渲染只被人们看到的多边形,而不必理会被遮挡或被覆盖的多边形。 | |
|