The Cg Tutorial 翻译

已经搬家到新博客 jjyy.guru
分享跟游戏相关的技术、编程心得、unity3d、cocos2d、emacs、操作系统

第一章,简介

这一章讲了四节:

1、“什么是CG?”介绍Cg编程语言。

2、“顶点,片段以及图像管线”讲了现代图形硬件的数据流和解释了Cg语言怎样参与这些数据流。

3、“Cg的历史性发展”讲了一些Cg发展的背景

4、“Cg的环境”讲了应用程序怎样着手使用Cg语言,通过实时Cg语言和3D API。

1.1 什么是Cg?

则会本书教了你怎样用一种叫做Cg的编程语言。Cg语言使你控制形状,外形,和使用可编程图形硬件进行对象的描绘成为可能。它结合了令人难以置信的速度和今天处理器的图形功能通过编程控制。计算机图形工作者,不管是艺术家还是程序员,都拥有了前所未有的的实时图形产生的控制能力。

Cg语言提供了开发人员一个完善的开发平台,而且这个平台是非常容易在多个平台上去创建特效和实时电影级效果。通过提供一个新级别的抽象,Cg代替了开发者直接控制图形硬件的汇编语言,从而更容易的锁定OpenGl,DirectX,Windows,Linux,Macintosh OS X和Xbox这些家用机平台。Cg语言是开发出来与微软公司密切合作,成为OpenGl,DirectX,HlSL这些语言的有利竞争者。

Cg的意思的“C for graphics”。C语言是一种比较流行通用的语言,在70年代就出现了。由于它的流行以及简洁的设计,随后就出现了不少以C为基础的编程语言。比如说,C++和JAVA继承了它的语法以及结构。如果你熟悉C或者任何一种相似的语言,那么学习Cg语言会更加轻松。

另一方面,如果你对C语言甚至编程语言都不熟悉,但是你热爱计算机图形学而且想去学习一些新知识,无论如何,这本书都值得一读。Cg编程是比较简短而且容易明白的。

许多章节都有在理解Cg以及使用Cg方面有用的上下文知识。换句话说,你会发现通过实践会更加容易去学习Cg语言。任何时候你都可以没有拘束地跳到下一章,如果你认为这样学习会比较舒服的话。

1.1.1          图形硬件的编程语言

Cg不同于C,C++的地方是,它非常特别。没有人会用Cg去写一个电子表格或文字处理程序。相反,Cg定位在控制图形的形状,颜色等等渲染方面。明白地说,这种语言是一种被称为着色语言。然而,Cg可以做着色意外的更多的事情。例如,Cg编程可以表现物理模拟,混合,和其他非着色的事情。

可以把Cg编程看成一份详细的食谱,怎样使用图形硬件去渲染物体。例如,你可以写Cg程序去作出表面上的崎岖或者作出字符动画。后面,在1.3节里面,你将会学到更多的着色语言的历史和Cg是这段历史的哪一部分。

1.1.2          Cg的数据流模型

除了被专门用于图形之外,Cg和其他着色语言是不同于传统编程语言的,因为他们是基于数据流的计算模型。在这种模型里,计算是发生在对流水线的数据进行响应的。

当渲染图像时,Cg编程是操作在那些经过了处理的顶点和像素块上的。想象Cg编程就像一个黑盒子,里面的顶点或者像素块在盒子的一边,经过一系列的处理之后,他们就留到另一边。然而,这个盒子不是真的一个黑盒子,因为它是由你决定的,用Cg语言编程,可以精确地描述里面发生了什么事。

每一次顶点经过处理或者光栅化产生像素块(fragment),在渲染3D场景的时候,Cg就会处理你相应的顶点或者像素块(fragment)。1.3小节揭示了Cg更多的数据流模型。

当今相当多的个人电脑以及家用机上都有图形处理单元(GPU),它是实行图形处理像转换和光栅化3D模型那样的任务的。你的Cg会确实执行在计算机的Gpu中。

1.1.3          GPU的专业化和CPU的推广

不管个人电脑还是家用家平台都不一定要有GPU,但它们一定要有CPU去运行操作系统和应用程序。因为CPU是以通用计算作为设计的。CPU运行的应用程序是用通用计算语言编写的,比如C++,JAVA。

 因为GPU是专业化的设计,所以在图形方面速度比CPU更快,比如渲染场景。新的GPU可以每秒钟处理成千上万的顶点,光栅化亿万个甚至上百亿个像素段(fragments)。未来的GPU甚至会更加快。这就是GPU在处理顶点和像素段上的压倒性的优势。但是GPU不能执行想CPU那样通用的程序。

专业化、高性能的GPU就是Cg存在的原因。通用的编程语言对于专业化地处理顶点和像素段来说实在太不适用了。相反,Cg语言就是设计出来去做这种事。Cg也提供了一个抽象的执行模型。你将会学习到这个独一无二的GPU执行模型在1.2节。

1.1.4          Cg的原理

去支持假象的互动,3D应用程序需要保持动画帧率在每秒15帧甚至更高的画面。一般的,我们会考虑60或者更高的帧率去实现实时互动,计算机的画面可能会有上百万的像素需要重新绘制。对于3D场景,GPU经常处理每一个像素在显示器上,计算物体间的阻挡,计算

TO BE CONTINUED...

原文地址:https://www.cnblogs.com/Liu_HY/p/1682420.html