|
=============这部分是相关讨论,提问回答在最后=============
@孟德尔 君的回答前面还比较靠谱,而后面说
光线追踪现在还在很初级的阶段,连电影业都没广泛应用,皮克斯直到汽车总动员才开始大规模使用光线追踪,而且还是部分应用。 以及
或许10年后再看,光线追踪只是一个历史的笑话也说不定。 就显得有些主观臆测了。
说 "光线追踪现在还在很初级的阶段" 我无法认同。
什么是光线追踪算法
基本光线追踪算法:
(上图来自wikipedia)
1. 对于每个像素,由摄像机向场景中发射一条光线。
2. 对于每条光线,一直追踪到它碰到某物体表面。
3. 对于每个与表面相交的点,向光源发出一条影子探测光线,来查看是否每个光源都可见,并依此来对该像素点着色。
4. 如果相交的表面材质是漫反射的就停止。如果表面材质是反光/折射的,则根据物理中反射或折射原理计算得出反射/折射方向并发射一条新的光线。
5. 重复1到4,直到达到最大追踪深度或者光线碰到光源或者漫反射表面。
光线追踪算法的优势:
1. 具有物理准确性,可以达到相片级渲染,尤其擅长强反射(金属等)和折射材质(玻璃、液体等),焦散( caustics )现象、复反射( interreflection ) 等可以模拟得很逼真,还有影子。
2. 算法简单易实现
光线追踪算法的劣势:
计算代价很高,就是慢
光线追踪历史:
将光线追踪算法应用于图片渲染最初是由Arthur Appel于1968年提出,那时还叫ray casting。1979年Turner Whitted带来了新的研究突破(Recursive Ray Tracing Algorithm)。1984年, Carpenter等人发表了一篇分布式光线追踪的论文(Distributed Ray Tracing),影响甚广。发展到今天,大多数的相片级渲染系统都是基于光线追踪算法的。基本的光线追踪算法并不难,相信大部分计算机图形学的同学都写过的,难的是如何优化提高效率。
皮克斯的RenderMan和光线追踪
说到皮克斯直到《汽车总动员》才开始大规模使用光线追踪。皮克斯的《汽车总动员》于2006年6月在美国上映,今年已经是2014年了,已经快8年过去了,沧海桑田呐同学们。
皮克斯一直使用的是自家开发的渲染器RenderMan,基于REYES(Renders Everything You Ever Saw<--有点雷= =) 。REYES是另一种渲染算法,它对于处理复杂场景非常高效。1984年的时候皮克斯有考虑过光线追踪,但最终还是坚持使用REYES。那篇关于《汽车总动员》的论文(Ray Tracing for the Movie ‘Cars’)我有浏览过,里面提到五年前(也就是大约2000年左右)他们就启动了添加ray tracing功能到RenderMan的这个项目,同期《汽车总动员》正在制作中,文中也提到了《汽车总动员》使用光线追踪的动机:realistic reflections, sharp shadows, and ambient occlusion。REYES在处理反射强烈的汽车表面材质方面有些捉襟见肘,只能用environment map,仍然达不到光滑闪耀的质感。而这正是光线追踪擅长的。
使用光线追踪的主流渲染器
RenderMan就不说了,它本是基于REYES的,现在也有ray tracing的选项。众多工作室都在用。
(以下是纯基于光线追踪的渲染器)
Mental ray,NVIDIA出品,已经集成到3D建模软件Autodesk 家的Maya和3ds Max中。
Arnold近些年渐揽风骚,Sony Pictures Imageworks,Digital Domain, ILM, Luma Pictures等著名特效公司均有使用该渲染器。
VRay,比Arnold大众一点,近几年也在疯长,它目前有CPU版本和GPU版本(V-Ray 和 V-Ray RT GPU)。
光线追踪算法在目前的影视特效领域占有重要的地位。我不认为光线追踪会成为&#34;一个笑话&#34;。2013年的SIGGRAPH有关于光线追踪的讲座(Ray Tracing is the Future and Ever Will Be),可以参考。
硬要说的话,“光线追踪算法在电子游戏领域的应用还在初级阶段”还比较靠谱。
光线追踪目前多用于影视特效中做静帧渲染。若想要应用到游戏中就需要做到实时渲染,就是提问中说的实时光线追踪(Real-time ray tracing)。
======================回答问题的分割线======================
最后回答问题:什么是实时光线追踪技术?它可能出现在当前的次世代主机上吗?
什么是实时光线追踪技术?
光线追踪(Ray tracing)算法前面说过了,那什么样的是实时的呢?6 fps左右就可以产生交互感,15 fps 可称得上实时,30fps不太卡,60 fps感觉平滑流畅,72 fps再往上肉眼就已经分辨不出差别。
它可能出现在当前的次世代主机上吗?
全面应用在当前看起来是不太行,在将来应该会有。
你要CPU跑实时的光线追踪似乎是有点为难它了,在GPU上实现实时光线追踪相对容易一些,原因 @杨三 的回答里基本说了。GPU的优势就是核多,大量并行计算。而恰巧光线追踪就是个特别平行的体力活,每条光线都相互独立,所以可以并行地计算它们。能够加速的地方有碰撞检测,可以使用kd-tree或oct-tree之类。2009年SIGGRAPH 会议上, Nvidia 就发布了OptiX,Nvidia GPUs实时光线追踪的API 。
另外,NVIDIA目前已经有virtual GPU技术,类似于云计算,不需要本地的GPU。如果virtual GPU可以应用到主机上,实现实时的光线追踪应该没有问题。
最最最后, Phil Spencer原tweet说的是:
“@7kayhan@albertpenello We’ve done experiments with Realtime Raytracing. A ton of potential with this tech, amazing visuals.” 他只是说做了相关实验,却被Gamespot完全改编成了另一种说法: Xbox One could get photorealistic rendering system for &#34;amazing visuals&#34;。提问中的那篇文章看上去像是根据Gamespot这篇报道来的。
参考资料
[1] Matt Pharr and Greg Humphreys. Physically Based Rendering, Second edition
[2] Tomas Akenine-Moller, Eric Haines and Naty Hoffman. Real-time Rendering, Third edition
[3] Wikipedia |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|