【eNet硅谷动力专稿】(未经允许,不得转载)许多人一直认为光线追踪是3D游戏通往照片级画质殿堂的唯一道路,而另一方面这也有许多人所反这种看法,对于这场争论PCPER曾先后刊登多篇文章来阐述双方观点:从全面介绍光线追踪的技术文章;到分析实时光线追踪前景的评析类文章;再到对游戏界知名人士的访谈等等~~当然还少不了对Intel光线追踪团队取得的进展报导。而今天,另一种号称向主流群体敞开大门的实时光线追踪技术正开始崭露头角,PCPER在第一时间特备此文,为读者全面揭开这种新生技术的神秘面纱。
就在今年三月,一家名不见经传的公司——Caustic Graphics突然浮出水面,并声称带来一种具有突破性意义的实时光线追踪软硬件解决方案,按照他们的说法,这种软硬兼施的新技术为长年受到效率过低困扰的实时光线追踪技术带来生机!自2006年创建之后,Caustic Graphics就一直闭门造车,自导最近才为世人所知。其管理团队聚集了来自苹果、Autodesk、ATI、Intel、NVIDIA等业界巨头的技术与图形专家,三位创始人James McCombe、Luke Peterson、Ryan Salsbury曾经在苹果共事,其中McCombe被誉为是苹果OpenGL图形系统“第三号人物”,同时也是iPhone、iPod等嵌入式、低功耗平台光棚化渲染算法的首席架构师。在三位创始人花了8个月时间编写出光线追踪模型之后,他们开始一边测试新算法,一边计划成立一家公司,并在最终定下新公司的发展方向后成立了Caustic Graphics。目前光线追踪的应用
毫无疑问,在现今占据实时3D成像主导地位的光棚化渲染世界里,无数游戏制作人为了在三维世界中逼真再现各种阴影、透明化、反射等效果而倾注了大量的心血。光棚化渲染本身可以看作是一个汇集了无数天才制作人实现各种效果的取巧方法集合体,各种取巧性技术在经历了长达20年以上的千锤百炼中不断完善,虽然效果不错且效率高,但却始终不够完美。在许多领域里,光线追踪依然是图形设计师们将现实“克隆”到屏幕中的唯一手段,许多在光棚化中非常复杂的效果,比如阴影、光照、抗锯齿等都可以光线追踪中轻松实现,当然前提是实时光线追踪的速度得足够快。
目前光线追踪技术正被广泛应用于电影、建筑、工业设计等领域,显然许多高端高质的好莱坞特效绝非光棚化渲染能够满足,所以从事这些行业的设计师们肯定希望能有高效的硬件来加速缓慢的光线追踪计算,从而节省大量宝贵的时间。
光线追踪的另一项应用则跟玩家的关系更加密切,那就是应用于游戏本身,当然我们指的是游戏的开发过程,而不是游戏的实时渲染部分。目前许多游戏在开发过程中都需要跟光线追踪打交道,由于硬件跟光棚化的限制,游戏中的光影效果完全靠实时演算还存在很大的障碍,因此很多制作人都喜欢运用预先计算好的光照、阴影贴图来“忽悠”玩家,这种方法用来表现固定光源的光照效果时效果非常好。而光照图的烘培过程就需要采用光线追踪技术才能达到最佳效果。因此游戏开发领域也正是Caustic Graphics重点开发的市场之一,Caustic希望游戏开发商可以利用他们的软硬件系统来缩短游戏开发周期。老生常谈:光棚化 VS 光线追踪
有关光棚化与光线追踪的较量可以说是一场无休止的争辩,双方的优缺点相信早已被大多数经常关注3D图形的读者所知晓,两者在对像素的处理上存在很大的差异。通常光棚化渲染是将生成的多边形拆散成为若干组屏幕像素,然后分成多线程塞进GPU的渲染流水线进行计算。光棚化的美妙之处就在于像素是被打包成小组进行处理,这样相邻像素间包含相同或相似shader代码的几率就很高,我们就可以动用多个线程对一个像素进行同类型的操作。也正是由于光棚化这种特性,使得目前SIMD架构的处理其光棚化任务时效率非常高。
光线追踪则不同,它是通过玩家视点向屏幕上的像素发射光线,当光线与3D空间中的物体发生碰撞时就会启动一条shader,该shader会生成额外的光线,又时会生成大量的光线往各个方向发射。Shader生成的光线越多,渲染的细节就越细腻,但显然运算量就会越大。随着光线数量的不断“繁殖”,可以想像运算量的庞大程度,再加上SIMD架构在面对随机性运算时效率低下,也正是这两个原因,实时光线追踪一直停留在“实验阶段”。
提升现阶段硬件对于处理光线追踪时代效率以及改进目前流行的光线追踪算法,一直是业界专家们研究讨论的话题。目前对于实时光线追踪的都是通过“包裹式追踪”的方式来实现的。所谓“包裹式追踪”就是将若干组像素打包在一起,然后追踪相邻像素的所对应的光线,显然这种处理方式的效率会比较高,但随之光线不断产生碰撞跳转,原本完整的像素包将被逐渐打散,GPU非常依赖的数据局部性也就等不到保障,Caustic声称目前的GPU没有足够的带宽来满足实时光线追踪庞大的数据交换。Caustic Graphics的RTRT解决之道
Caustic Graphics一开始并没有设计硬件产品的打算,但是当他们自己的独门实时光线追踪算法诞生之后,他们无法在目前的市场上找到符合自己算法要求的CPU或GPU。Caustic Graphics编写的算法之所以独特是因为它解决了传统光线追踪算法偏向随机性的问题,新算法大幅提升了光线追踪计算的局部性,但这部分的算法需要他们自己设计一颗协处理器来完成。Caustic Graphics的工程师们非常明智,他们对于自己硬件的定位仅仅是一颗专注于光线追踪运算的协处理器,而绝不干越俎代庖的蠢事——shader之类的传统光棚化操作依旧由GPU来完成。
目前出于保护知识产权和商业机密的原因,Caustic Graphics对于“光线追踪处理器”(ray tracing processing unit,下文简称RTPU)的内部机密仍守口如瓶,对于RTPU如何跟系统的其他部件协调工作也不得而知。但是通过对Caustic Graphics的探访,小编还是收集到一些情报,现整理如下:
·RTPU只负责渲染过程中所涉及的光线追踪计算部分,其中包括对每束光线的跟踪计算以及衍生光线shader的激活步骤。
·通过统一的软硬件解决方案可以实现庞大数量的光线跳转计算,同时能够满足实时演算所要求的速度。
·软件方面,CausticGL API可以负责将光线追踪过程中产生的随机结果shader传送给GPU进行操作,以保持高效性。
·RTPU还负责将光线追踪计算得出的随机着色shader代码编译成GPU所擅长的高局部性代码。Caustic Graphics RTPU内存系统
采用传统的光线追踪算法,需要花费大量的时间创建跟维护庞大的多边形数据库以供场景渲染使用。而一旦场景中的几何模型产生变化,程序员就需要重建数据库,渲染场景所需要的数据树需要经常变换,由此可以想象存储系统的压力是多么巨大。因此为了提高效率,很多实时光线追踪DEMO经常是演示一些固定几何模型的场景,所以互动方面也只是视角围绕着预制模型转圈。而复杂的场景每一帧通常需要400~500万多边形,这也正是目前依赖于存储局部性原理的GPU在碰到光线追踪运算时就萎靡不振的原因,解决当前光线追踪算法存在的内存需求过高问题已经是提升效率的关键。
Caustic在这方面有了解决之道,他们的独门算法可以让RTPU根据从板载控制器获得的一种特定存储数据集来优化计算量,因此不需要超大规模存储带宽和容量,彻底解决了GPU在光线追踪领域的死门。有了这样的技术,Caustic给我展示的“Caustic 1号”样板卡仅仅搭配了一条64-bit DDR2 SO-DIMM内存,这跟RV770的GDDR5显存相比可谓天渊之别。
Caustic 1号/2号光线追踪处理器
这是提供给开发人员和独立软件开发商(ISV)的第一批硬件样品“Caustic 1号”,供他们在“CausticRT”平台上测试、编程和设计之用。该卡采用PCI-E 1.0 x4接口,两块黑色散热片下边就是两颗传说中的“光线追踪处理器”(RTPU),其实都是简单的FPGA(现场可编程门阵列),运行频率100MHz,每颗RTPU都设有自己专用的64-bit DDR2 SO-DIMM内存,另外蓝色散热片之下是PCI-E桥接芯片,由于RTPU的功耗非常低,整卡采用单槽被动散热设计。
而实际只有“Caustic 2号”才是准备上市的零售版,“2号”使用自行设计的ASIC(专用集成电路),频率350MHz,计算能力是“1号”的四倍,而且改用PCI-E x16接口来获得更大带宽,不过整体仍是简单的单槽散热设计。上市时间?大概在“2010年初”。另一个值得关注的特性是,RTPU是具备高度平行化的系统,不但可以在一块加速卡上放置两颗RTPU处理器进行协同工作,还能在一套系统里使用多块这样的加速卡来进一步提升计算性能,就像SLI和CrossFire。Caustic配套软件
CausticRT是一套软硬一体的RTRT(实时光线追踪)解决方案,前面我们重点介绍的都是其硬件部分,接下来我们来看一下软件部分。被称为CausticGL正是CausticRT平台的软件开发层,由于创始人具有非常强的OpenGL专业背景,Caustic并没有自己去开发一套专用的RTRT API,而是基于OGL ES 2.0编写RTRT扩展子集,并将其命名为CausticRT。采用CausticRT的最大优势就是允许开发人员像往常编写shader那样来编写新的RT shader,而一些原本非常复杂的光影shader(用于创建复杂的光照跟投影效果)则可以由简单的RT shader来代替,这样既可以减轻程序员的负担还可以提升硬件效率。此外开发人员还可以将CausticGL与其他图形API相结合,比如OGL 3/3.1,未来甚至能够与DX混合调用。
另一个有趣的特性是CausticGL并非RTPU专用,它同样支持GPU,所以在没有RTPU的系统里,RTRT计算也可以交由GPU来负责,当然效率将大打折扣。目前Caustic正计划将CausticGL推广为行业标准RT API,虽然他们自己仍未前景乐观,但我们觉得至少有三家公司不愿意看到这样的结果。从技术角度来看,Caustic所取得的成就是振奋人心的,将实时光线追踪带入桌面平台势必对游戏、商业渲染、娱乐等领域带来巨大飞跃;而从行业竞争来看,Caustic势必将面对多方面的压力,像当今的GPU王者NVIDA/AMD肯定要出来发难,而全力打造Larrabee利器进军RTRT领域的Intel更是Caustic的直接竞争者,任何有意介入RTRT市场的对手势必被Intel视为威胁。DEMO演示
Caustic Graphics在一台MacPro上展示了一个实时渲染DEMO,其中RTRT以外的渲染工作全部由CPU负责,GPU完全不参与。DEMO中在威尼斯广场上放置两辆奥迪R8s,均由大约180万个三角形组成,周围环境只是陪衬,故而没有实际建模,只是平滑的纹理贴图。画面在VGA 640×480分辨率下实时渲染,每像素光线数量、每条光线的反射次数、反锯齿效果、甚至着色器代码等参数都可以实时调整。
DEMO特性总结:
·视角移动的时候关闭反锯齿以提升渲染速度,但固定后恢复反锯齿。对比效果如上。
·无限反射效果,即倒影之中可以看到更小的倒影,再往里还有更小的,这效果需要大量的光线跳转计算。
·汽车表面喷漆采用程化着色渲染,而不是固定贴图,负责计算的shader程序包含发射光线运算,DEMO里可以对其进行实时编辑。
·追踪光线数量可供调节,DEMO预设是像素4条光线,此时渲染速度5-6FPS。增加光线数量会带来更好的效果,但是帧率会按比例下降。
·具备RTRT计算的程序化景深效果,无需光棚化取巧。
·热门DX10.1特效之一环境光吸收(Ambient Occlusion)被用在了汽车的表面的凹陷处,同样是程序化渲染。
·可以实时拆卸汽车零部件,如拿掉顶盖或车门,并四处移动它们。此项主要是演示RTPU在几何模型发生变化时的性能表现。
很遗憾大家不能亲自体验这个DEMO,但是可以看看下边这段视频,其中的场景包括500万个三角形(包括两辆汽车的360万个),所有可见效果都是使用一块CausticOne加速卡百分之百程序化光线追踪渲染而来的,实时帧率3-5FPS。光从DEMO的效果来看,相信很多玩家并不能察觉RTRT的魅力所在,甚至会有不少人认为目前许多光棚化游戏已经超过该DEMO的效果。而一旦到了熟悉RT的人士眼中,RTPU带来的革命性将立刻放发光芒!前景展望
不论是产品本身的技术性,亦或其背后的销售策略,CasuticRT都有着对RT领域或计算机图形业产生爆炸性影响的潜力。虽然Caustic一再声明自己无意跟GPU/CPU做竞争,但是AMD/INTEL/NVIDIA几家巨头是否买账就不得而知了。但至少其“只为RTRT提供一套专门的解决方案”理念无形中为Caustic留下一线生机,至于最终是否会落得跟Ageia一样惨遭巨头吞并的下场则仍需时间证明。
纯粹技术细节上,此行对Caustic的探访虽然让我们了解不少技术信息,但目前许多更加深层的东西仍处于保密阶段。幸运的是至少我们目前知道CausticRT平台可以提供比目前最先进的GPU/CPU快得多的RTRT性能,而且RTPU是一个高度平行化的系统,只需简单的增加RTPU的数量即可按比例提升整套系统的性能;此外还有非常重要的一点——低功耗,可以预计低功耗的多RTPU并联系统将受到专业领域的青睐。
现阶段公布的工程版本——“Caustic 1号”已经能够提供超越当前最强GPU的RTRT性能,预计2010初面世的“Caustic 2号”宣称能够达到1号14倍的性能,届时如果采用双卡并联系统,那么理论上则可以得到28倍“Caustic 1号”的RTRT性能,如此数量级的性能增长对于发展缓慢的RTRT来说绝对是一个飞跃性的进步。
游戏领域方面,预计完全支持RTRT的游戏引擎至少还得5年后才能面世,Caustic将努力争取RTRT早日进入游戏市场,但目前商用领域才是他们的主要的盈利市场,也只有通过这一市场他们才能获得足够的后续发展资金。对媒体与娱乐设计师、产品设计师、建筑设计师等专业人士来说,他们对光线追踪并不陌生,深深了解它的强大之处,这才是CausticRT平台的真正用武之地。如果能在很短的时间内把自己的汽车方案逼真地渲染出来展示给老板看,设计师怎能不兴奋?如果能在一套简单的平台上快速渲染出如真似幻的电影大片,好莱坞怎么能拒绝?
Caustic Graphics已经开始和Cinema4D、Autodesk、Blender Render等专业厂商合作,争取在他们的软件中加入对CausticRT的支持,还购买了拥有知名巴西渲染系统(Brazil Rendering System)的SplutterFish公司,以便更好地了解如何与软件开发商合作集成CausticRT和开发工具,充分发挥其软硬件的性能。这些对该公司的长期发展和成功非常重要。
对于个人娱乐市场最敏感的价格问题,Caustic目前似乎毫无吸引力。目前整套CausticRT平台的报价为4000美金,这个价格包含了一块Caustic1号加速卡、成套CausticGL软件堆栈以及一年的固件、软件升级费用。显然这样的售价只有商用领域的用户才有兴趣,未来Caustic是否会针对不同市场推出不同价位的产品?目前还没有答案,但可以肯定只有这么做才能在娱乐市场有所作为。当然目前谈论娱乐级的RTPU产品还有些为时过早,我们至少得到2011年才能在市场上看到针对游戏市场的RT加速卡。