文/明月
NVIDIA最近发布了一个全新的图形编程语言:C for
Graphics,简称Cg,很显然从这个技术的字面上来看,就会知道Cg是使用C语言作为蓝本,面向显示卡的语言。这种技术会对我们有什么影响?可以给我们带来什么好处呢?现在让我们一起来看看:
为什么需要Cg
目前已经发布的NVIDIA的GeForce
3/4以及ATi的Radeon 8500这几款图形芯片都具备了DirectX
8级别的可编程特性。但是,由于没有合适的工具,因此大多数3D图形开发者没有办法发挥它们的全部潜能。而造成这个现象的主要原因就是,以上的显示卡如果要实现硬件的像素渲染和顶点渲染编程就必须要使用低级的汇编语言来进行,我们知道汇编编程的工作量极大而且难度是非常高,对于显示卡要达到的特效显然要求应该更高,因为众多的3D图像程序员都很难发挥这些显示卡硬件渲染方面的可编程性。
汇编语言一般很难看懂而如果换用Cg语言的话,那么编程变得更简单。
C语言是目前世界上流行、使用最广泛的高级程序设计语言。对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件、三维、二维图形和动画,它是数值计算的高级语言。因此综合来看,如果在显示卡上能够使用C语言来进行编程显然是非常好的想法。为此NVIDIA开发了Cg语言。
Cg语言的一些特点
Cg语言是全新的类C高级编程语言,在微软的帮助下我们看到了它的雏形,有意思的是Cg语言不但支持普通的DirectX图形接口,对OpenGL图形接口也提供了完备的支持。Cg语言主要包括两个部分,Cg语言特征、Cg编译器,而且这种编译器可以使用高级语言数据类型。
Cg语言适用性相当强,开发者可在多种平台上使用
同其它编程语言相比,Cg是非常特殊的,它提供了Cg浏览器(Browser,针对语言属性和可视化操作),从而可以让开发变得更简单。另外Cg语言已经获得了大量数字内容生成和游戏开发产商的认证支持。这样显然Cg语言比其它任何的语言都更适合于3D游戏卡程序开发。
由于采用C作为开发蓝本,因此开发者可以在很多平台上使用Cg语言,比如:Cg可以使用在Windows、Linux、Mac
OS、Xbox下。并且由于同时支持DX8和OpenGL 1.4,因此Cg语言的适用性就更广了。
Cg语言将给我们带来电影品质的3D图像
不过,我们这里需要说明白了一点就是,Cg具备很高的效率,因为Cg其实就是提供了应用程序同硬件加速规范的中间层,应用程序通过Cg来调用DX和OpenGL,而原来这些功能是通过汇编调用的。所以说Cg不但可以大大降低编程的繁杂度,并且保持了汇编的高效性。使用Cg的开发环境,图像编程就成了书写Cg代码的过程,随后,通过Cg编译器产生低级的汇编代码,这样开发者再也不用去直接接触图形核心的细节了。
Cg语言具有广泛的兼容性
目前NVIDIA已经提供了Cg开发包1.0版,可以在Quadro 4和其它GeForce
4卡上进行开发。
NVIDIA Cg Toolkit 1.0包括以下组件:
Cg Compiler Public
Beta 1.0
Vertex (DirectX 8, OpenGL 1.4)
Pixel (DirectX
8)
Cg v1 language specification
Cg Standard Library
Cg Browser
Cg User's Manual
Cg Shaders
(Assorted pre-written programs)
即将发布的NVIDIA
Cg开发工具包2.0包括以下组件:
Cg Compiler 1.0 Gold
Vertex (DirectX
9, OpenGL-nv30)
Pixel (DirectX 9, OpenGL-nv30)
CgFX
Parsing
Cg Browser 5.0 (CgFX enabled)
More Shaders
Cg
Courseware
Cg语言的实际意义
NVIDIA宣称在未来的一年中Cg将可以给我们带来电影品质的3D图像,而现在的显示卡都只能实现普通的帧渲染。Cg可以更好地使用图形核心的可编程特性,可以提高开发速度,使开发者可以共享和重用代码,NVIDIA称Cg为一个“工业标准语言”。因此,ATi、Matrox、3D
Labs等显示核心厂商会推出它们自己的Cg优化版本,基本的DX8和DX9渲染代码都能够适用NVIDIA编译器运行在它们的硬件上,DX9渲染是从微软的编译器派生的,而OpenGL
1.4的代码通过其它编译器生成。因此,从现实意义上来说Cg已经真正走到了前台。
和统一驱动体系(Unified Driver
Architecture)类似,在Cg上使用了NVIDIA的统一编译体系,这使得Cg可以向后兼容。不同的用户可以使用Cg的预编译模式或者实时编译模式。如果没有Cg,图像开发者要直接面对GPU的细节和图像API,增加了开发者的开发时间,并且这种整合式的支持也对开发的跨平台性做了很好的规范。
其实Cg可以带来的最大特点,还是3D图形效果质量的提升。因为Cg已经预置了众多3D特效的命令,要达到一定的效果我们仅仅需要使用1-2条命令就足够了。同时这也可以促进非专业3D图形程序员,开发出出色效果的3D画面,因为要达到这个目的,只要你具备C语言开发能力就足够了。
3D图像质量的提升,是Cg语言最大的卖点
Cg已经得到众多数字内容生成和游戏厂商支持,包括:Alias/Wavefront,
SoftImage, Discreet, Luxology, Valve Entertainment, Sony Online
Entertainment和Microsoft's Games
Division;Cg还有其它更多的大众游戏和DCC数字签名。到今年夏季,第一个Cg应用会是Maya、SoftImage、3ds
Max和Lightwave的软件插件,这些插件非常重要,它可以使开发者在像素和顶点渲染上创建3D艺术品。
NVIDIA非常希望Cg可以成为一个图像上的标准,这样在不远的未来就创造出漂亮的令人惊讶和真实的3D场景。而目前的游戏世界还深陷在帧渲染以及固定渲染的的泥潭中,几年以来游戏画面都没有太大的改观。不过,目前有了Cg语言,这就可以充分地发挥显示核心的真正特性,从而实现更出色的3D效果,相信类似Final
Fantasy那样的画面不久就可以出现在实际的游戏中。
|