道恩的内在美七日谈之四 影响电脑三维渲染演变步伐
3D开发人员会问:究竟是什么限制了3D渲染的脚步?
答案显然是开发(编程)语言,而现在CG给了我们新的希望。当三维 (3D) 渲染越趋复杂,一个好的三维 (3D)游戏好可能要经过很长时间才能由编写至出版,一个三维 CAD 程序开发人员要好一段时间才绘画出一个复杂的三维图。我们实在需要一个简单工具能快速帮助完成三维 (3D) 渲染,去减省生产时间和成本及增加更多逼真华丽的三维效果。
NVIDIA 有见于此,开发出了一个图形编程—Cg 语言,一种针对图形编程的高级语言。如果能够采用高级语言来编写实时的像素和顶点特效的话,程序员就将再也无需为编写低级的汇编代码程序而消耗时间了。经过内部的精简和优化,这种新的图形编程语言将能够籍着增加具备电影般品质特效的应用程序数量,从而使整个业界发生翻天覆地的变革。
现在的软件应用程序大都已经采用高级编程语言(例如C或者C++)来开发了,但是在创建复杂的3D画面效果时,开发人员依然不得不使用限制性很高的汇编语言。Cg编程语言(Cg的含义可以看作是说用于图形编程的C语言),为开发人员提供了一个在3D画面特效编程易用性和编写速度上的巨大飞跃,促进在桌面PC上实现实时的电影品质画面体验。
NVIDIA公司正在领导着实时渲染技术的革命,随着Cg语言规范和NVIDIA Cg编译器的推出,人们已经向实时电影渲染这个目标迈出了飞跃性的一步。
图 1.透过采用Cg语言,电影与实时渲染的差距正在逐渐地拉近
语言的好处
广泛的认同
Cg是拥有广泛认同的高级图形语言。数以百计的开发人员已经完成培训并正利用各种Cg工具编写正确的shader程序;一些制作好莱坞电影特效的公司也都正把NVIDIA公司的Cg编译器整合到其未来发布的产品中,以加速实时渲染和画面生成的表现。
拥有众多具备重要影响力的常青软件
采用Cg技术的众多游戏以及其它可视化应用程序不仅能够获得无以计数的桌面硬件支持,而且还能够为加强现实感而开启令人赞叹不已的视觉特效。随着开发人员采纳Cg语言,消费者将会看到可供选择的应用程序数量会大幅度增加,视觉特效也由于其重要性已经和应用程序密不可分了。在桌面PC上参与电影的体验将会梦想成真。
有了Cg后,消费者将会尽情享受游戏中那以往只能在电影中才能看到的出色特效所带来的特殊感受。采用了Cg shader(Cg着色器)的游戏由于会调用针对某硬件专门编译的Cg runtime(Cg运行语言),因此能够在运行的时候尽享该硬件所具备的先进技术。还有就是,当有新的GPU出现的时候,采用Cg运行语言的游戏也同样可以很快获得该GPU带来的新技术优势,而无需重新编译或者升级该软件。随着安装升级硬件所获得的优秀性能与优势,游戏的寿命将更加长久。
游戏Games:更多的特效,更短的开发时间
Gg带来的最大好处就是能够让游戏开发者缩短产品开发到上市的时间,其高级语言的构造让程序员能够在更短的时间里开发出同样的画面效果。由于编译器自动针对NVIDIA GPU及其支持的API进行优化,因此产品开发的周期得以进一步地缩短。
Cg语言可以让一系列的高保真电影特效应用到游戏中,并且以实时的方式执行:
运动模糊以及其它镜头摄影特效
不规则的木纹、大理石纹以及其它物料表面纹理
精确的肌肤、肌肉以及头发效果
真实、动态的植物与大树
反光的金属表面 图2. 利用NVIDIA Cg编译器可以实现的特效样本
与生俱来就具备平台无关性的Cg语言以及NVIDIA的Cg编译器能够极大地帮助游戏开发人员。游戏甚至能够采用上其发布当天才出现的新技术——这样一来,就不会再受限于只能采用开发计划伊始时候出现的那些技术了。
由于游戏研发团队中会有许多美工人员以及程序员,Cg的开发环境允分考虑到了这点,让shader能够在图形界面下使用或者在运行环境下进行设定(runtime setting)。这些选择可以让shader程序的效果能够满足于非编程人员的想法,并且更快、更容易地创作出特效应用于整个游戏环境中。
最后,Cg的高级语言特性能够让程序员轻松地修改以及增进shader程序。一旦某个shader的编写完成,这个shader就能够马上在其它游戏开发中应用或者共享。由于Cg开发过程的高效率带来的成本节约以及可以共享Cg源代码,游戏开发者将会对使用Cg感到非常愉快的。
数码内容创作工具开发人员
数码内容创作(DCC)开发人员一直都在挑战最新GPU的极限,尝试在设计和执行复杂效果的时候获得尽可能多的性能与特效。美工需要透过生成最逼真的画面,才能在一开始就确定作品的好坏。NVIDIA Cg编译器优秀的代码执行效率以及内建的优化能够让性能达至最快,简化的代码编写也提高了无数种特效的开发速度。
以下是使用Cg语言能够带给DCC应用程序及其用户的其它好处:
实时合成(Real-time compositing)
更多传统用途的工具能够用于2D电影的3D画面效果合成。
平台无关性
标准化的Cg语言是不会只用于某个API或者平台的。
代码共享
Cg实时shader知识库将会公开,透过这个知识库就能更好地把shader特效共享与各程序中。
快速的效果预览
Cg开发的shader程序消除了特效设计与预览之间的差距——再也不需要等待漫长的非实时渲染了。许多DCC应用程序提供商正在使用Cg编程环境,获得了以比以往快得多的实时渲染能力。Cg 缩短了产品开发周期,并且可以在现今以及未来的各种平台上都提供最出色的性能。
CAD应用程序开发人员
由于现存有大量基于低级硬件功能编写的代码,使得计算机辅助设计(CAD)应用程序在内核级的变更很缓慢。Cg语言规格的出现,为把逼真画面引入到CAD可视化环境而无需全面更换软件提供了一个黄金机会。CAD应用程序开发商或者第三方开发上能够很快就推出能够在CAD软件中表现真实表面和纹理效果的插件。
Cg语言还为CAD市场带来的很多其它方面的好处:
更加容易的数据共享
得以充分利用先进的GPU
运行飞地修改模型细节与参数
加强逼真感
可以顺利地从现有代码过渡
从现时市面上最能发挥 Cg语言的威力的就是 Geforce FX 系列显卡,因为Geforce FX显卡拥有有强大硬件图形引擎,当Geforce FX显卡加上Cg语言时会出现1 +1 大于 2 的视觉效果,从而令我们最新游戏画面更快及更华丽、游戏厂商更快推出新游戏给游戏迷和我们可能以更平宜价钱买到这些游戏。 另外各程序应用人员会比从前更快完成其工作,可以快速提升其生产效率。 所以我们实在需要一片如此强劲显卡以及一个如此方便的程序语言工具,来提高游戏迷视觉感受及提升程序应用人员生产效率。