CG

2007年12月02日 星期日 22:09
· CG 推出的背景因素:

  目前大部分的图形渲染系统的流水线由于各种原因,功能被限制为某些特殊效果,不具备扩充性,依据这些流水线编制的软件,只能实现特定的效果,这是一些游戏无法展现许多效果的罪魁。按道理,VertexShaderPixelShader的可编程性可以改变这一切,实际上问题远非如此简单,由于编程的困难,即使一些常用的API增添了很多专门为此编写的函数,为了实现理想的特殊效果,还是必须使用直接控制GPU的汇编语言,难度极大,效率又低,挫伤了开发人员的积极性,具有可编程性的VertexShaderPixelShader的硬件并没有带来革命性的变化。在这个技术出来之后,大部分人仍然在埋怨,为什么硬件已经在技术上实现的功能无法被软件使用,惊人的图形效果只能在测试软件中看到,强大的硬件性能似乎成了一种摆设,这种状态从GeForce256一直延续到Ti4600。如果这种状态得不到改善,具体情况我不敢妄加猜测,至少就目前众多对nVIDIA疯狂升级的怀疑目光,正是nVIDIA最不愿看到的境况。

CG

     ·脱胎于C语言

  CG语言的诞生很好的解决了这一问题。CGC For Graphic)高级语言脱胎于C语言,一个习惯了C/C++的程序员将很容易从传统的编程环境结合OpenGL转换到CG下,CG也集成了一些效果标准库,使一些标准效果不需要重新编写就可以得到直接应用,提高了工作效率。CG还具有良好的通用性和可移植性,可以绕开具体的GPU核心,达到更高的虚拟层,也就是说程序开发人员可以只注重概念,所要实现的效果而忽略具体的硬件实现环节。更令人高兴的是,CG使特殊的效果与具体的硬件分离,它的运行编译特性能够让用此编写的软件与各种平台和平相处。同时,它具有良好的向后兼容性,同一个程序能够在今后更好的硬件平台上实现更亮丽的效果,根本不需要进行重新编写优化,它的灵活性已经远远的走在了业界前列。这也意味着,以后出来的新硬件我们可以马上享受到其带来的好处,而不用苦苦等待针对新硬件开发出来的软件,这正是我们对硬件升级最怀疑的地方,让用户摆脱升级的循环,真正享受到专业制图的乐趣所在。

CG

  如前文所述,虽然可编程GPU具有良好的可编程性,但是复杂的步骤加上需要对硬件具体操作,已经让大部分程序员望而却步,并且游戏厂商为了游戏的销量,不太可能只为最高端的图形设备优化,也造就了目前PC游戏如此尴尬的局面。CG的确是连接这两者的优秀工具,具体硬件的抽象给硬件厂商与游戏开发商甚至消费者都大大减轻了负担,如果遵循同一个标准,软硬件双方都不用担心新技术的支持,甚至包括用户也应该感激这个技术的出现,至少这要比简单的提供所谓虚无缥缈的硬件新特性要好的多。

CG

  作为游戏爱好者,我们不应该只是局限于目前方头方脑的游戏人物形象,而需要更多更精细的模型,更逼真的环境,可是目前的环境,这一切似乎遥遥无期。实际上,对游戏开发商来说,这一切并不难,但是复杂程度确可能是翻倍都不止,并且还有可能费力不讨好,聪明的开发商们不会如此冒风险。CG是解决这个问题的良方,由于CG开发环境以及编译的动态性,说是能够实现惊人的效果一点不为过,更为实际的是,更多的游戏厂商能够接收和支持这种环境,创造一个共盈的空间。也由于CG的易用性,通过这个平台,更多的游戏将能够使用GPU的可编程特性,我们再也用不着为新硬件没有软件支持而担心,进一步的猜想在于,电影般效果的游戏也有可能登上PC

  自从DirectX 8GeForce3发布后,微软与Nvidia一直就在努力降低着色引擎的创建难度。着色引擎用于建立Dot3碰撞贴图等图形效果,它的与众不同之处在于着色引擎具有可编程性和可定制性。可编程效果具有更大的灵活性,更便于建立复杂的3D场景。

CG

许多不同的效果聚合在一起实现了真实的皮肤效果。

  对拥有这种功能的当代显卡GeForce3GeForce4 TiATI Radeon 8500来说,开发商不得不使用汇编码令建立或修改着色引擎。这种低层语言以详尽的细节为基础告诉硬件该做些什么。曾经有那么一段时期,所有的PC应用都是使用汇编语言建立了,后来C语言的出现使越来越多的人学会的编程,也降低了复杂程序编制的工作强度。希望CG语言在3D图形领域也能起到同样的效果。使用CG建立的着色引擎可占三十行以上的代码,并其转换为一两行。可以预期会出现越来越多的CG着色引擎供游戏美工人员选择,他们可使用多种着色引擎建立桢的不同部分。从左边的图片可以看到,着色引擎以像素为基础进行工作,可以被分层化。
  着色引擎对图形届来说不是什么新鲜事物了。它作为电影CG效果的一部分已经有一段时间了。来自电影公司的专业3D美工师使用一种名叫RenderMan的语言来建立并填充(在大量的服务器上)拥有几何、材质和着色引擎的3D场景。Nvidia由此获得了CG发展的灵感,希望CG能发展到类似于RenderMan的水平,能帮助电影美工人员建立CG内容。

CG

五个材质用来建立这个逼真的面孔,这是Nvidia未来硬件的技术演示。

  这种高级图形语言是DirectX 9的一部分。虽然微软和Nvidia进行了合作,且CG可完美兼容DX9语言,但两者还是有一些区别的。两公司宣布的不同之处在于CG不但能兼容DirectX 9,而且能兼容OpenGL,这意味着CG是进行跨平台开发的制作人员的理想选择。

CG

这个机器人模块上有大量的独立效果,展示了如何使用CG建立2D效果。

    ·CG推出的背景因素:

  需要时,用CG编写的着色引擎被编译成适应特定硬件和API的汇编码令。微软和Nvidia将推出各自的编译器。除支持OpenGLNvidia的产品还将针对自己的硬件进行特别优化。CG在需要时才能编译意味着将有更多的兼容性,这不但表现在不同硬件间,也表现在不同代硬件间。CG效果可轻松编译运行在现在的DirectX 8硬件或DirectX 9平台上。

     ·来自游戏开发商的支持

   2002 12 23 NVIDIASGI下属公司Alias Wavefrontä今日宣布联手推出能将高级实时渲染程序紧密整合到Maya 4.5里的CG插件。CG也称为高级渲染语言(HLSL),是C类高级图形编程语言,可使三维制作大师以及内容开发人员创作具有影院效果的影像,同时与之实时交互。
   
面向Windows®Maya CG插件第一次公开亮相是在20027月的Siggraph大会上,它由NVIDIA联合全球三维图形软件技术先驱Alias Wavefront开发而成,能够让Maya 4.5的用户充分利用NVIDIA 图形芯片(GPU)的高级硬件渲染功能。现在,新插件即可从以下网站免费下载:www.aliaswavefront.com/maya/plugins/ http://developer.nvidia.com以及www.CGshaders.org

     ·CG应用展示:

下面的截图是由Presenter 3D提供,使用了nVIDIACG技术并且结合了Quadro4 900XGLShader。这个场景能够随着视觉角度的变化而改变反射以及折射光线,所有场景均在Anti-Alaising 4x, 9-tap Gaussian)下实现。

CG

CG

CG

CG
CG

     ·CG游戏展示:

  nVIDIA的官方网站上公布了首款运用CG技术并支持DirectX9的一款动作类游戏——Gun Metal。该游戏由Yeti Studios开发,并由Rage Software发行。

CG

CG

CG

  Gun Metal是第一款利用CG语言开发制作的游戏。据称,游戏中共有14个令人兴奋的任务关卡,而且许多炫目的新特效将给玩家带来与众不同的视觉和游戏体验。
 游戏中CG独特的图形效果有:
  1.CG:支持所有的界面材质
  2.CG:在飞机造型上运用动态模糊效果
  3.CG:更加真实的水面折射效果
  4.CG:许多新的特性还在进一步摸索中
  5.DX9:接近现实的火光效果
  6.DX9:使用128bit浮点缓存模块,支持高对比色彩运用

  不过由于使用CG开发的关系,目前ATi显示卡不能运行此游戏,当然支持DX9Radeon 95009700也不能运行此游戏。但是Tommti Systems网站研发的“3d Analyze”软件就解决了这个问题。下载1.69版本的3d Analyze,从3d Analyze软件界面左边的启动菜单,运行Gun Metal.exe3d Analyze软件界面右边各种选项配置如下图所示。

CG

  到此,CG语言的介绍就讲完了,所有内容及图片均来自网络及nVidia网站。想进一步了解CG语言,可以去nVidia网站上下载相关文档及工具,自己操练~
  最后再给几个有用的下载地址:
   CG最新版下载地址:http://developer.download.nvidia.com/cg/Cg_1.5/1.5.0/0019/Cg-1.5_Feb2007_Setup.exe

   CG说明书:http://developer.download.nvidia.com/cg/Cg_1.5/1.5.0/0019/Cg_Specification.pdf
   3D程序可视化优化工具:http://developer.download.nvidia.com/tools/ShaderPerf/NVShaderPerfInstaller_NVR100_2.01.0305.1925.exe
http://developer.download.nvidia.com/tools/NVPerfKit/2.2/NVPerfKit.exe
   (因为最近在做3D游戏引擎,打算用来优化下运行演示时的Demo

 
 

你可能感兴趣的:(c)