狂想的天空

狂想,只要你想!

C++博客 首页 新随笔 联系 聚合 管理
  21 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks

按上一部分,
被输入到Rendering pipeline的多边形资料,
首先被送到Vertex shader(顶点着色器)。
那么,什么是顶点颜色器呢?
顶点着色器在整个Rendering pipeline中又有什么作用呢?


顶点着色器,从名字可以看出,其只对“顶点”进行处理,而不是对“面”进行处理
(这句话似乎是句费话!但这一点很重要)

顶点是从哪里来的呢?
就是输入到Rendering pipeline的多边形资料的各顶点。

那么顶点着色器对这些顶点进行什么样的处理呢?

一,坐标转换处理
  即决定顶点要被描绘到输出图像的何处

二,打光处理
  即决定以哪种颜色来显示各顶点。

首先,坐标转换部分。
这部分的处理,会把定义在3D空间的顶点坐标值,转换成最后要输出到图像上的2D坐标值(屏幕坐标);
(因为我们终究要把它画在计算机屏幕上,所以,我们须要把它转换成2D的坐标。)

这一点很像我们在拍照的时候,从相机的取景器里看到物体的样子。
现实世界是3D的,而我们通过镜头把物体投影到取景器上(2D的屏幕);

在3D绘图中,会以计算的方式来模拟这种现象,将3D的资料投影到2D的surface上。
我们只是把实际的世界中所做的事情,在电脑里模拟出来而已,
这就是所谓的 坐标转换处理。

听到坐标转换,也许会感觉很难,
而在DirectXGraphics中,只要将配置在3D空间的模型的 位置 方向 大小 
以及摄像机位置 方向 视角以及surface的 纵横比 等信息丢给 Rendering pipeline,
按下来它就会自动去进行坐标转换处理了,所以,我们不必太过担心。
在以后的章节里,我们进一步讨论这些概念。

第二,打光处理(lighting)

在经过坐标转换,决定了各顶点的显示位置之后,接下来就是决定每个顶点的显示颜色,也就是打光处理(光照计算)
在进行这部分计算时,我们会用到三个基本概念:材质(material),法线光线(light)

材质指的是该多边形是使用哪种材质的参数。这部分会存放该多边形的颜色,或者,它是否有类似金属的光泽等等的信息。

法线是指组成该多边形的各顶点,会把光线往哪个方向反射回去的信息。

光线是模拟电灯或太阳等光源并将它简化之后的东西。这由光的颜色和光线的方向等信息组成。

打光处理的结果,会以各顶点的defusespecular这两种颜色成份来输出。
defuse 是决定该顶点看起来像哪种颜色时所需要的基本颜色成份;
specular 是表现光泽时所使用的颜色成份。

这里注意一点,打光处理和坐标转换时一样,是真对“顶点”做处理的,而不对“面”处理的;
那么多边形的内部是怎么被填满的?(也就是真的“面”的部分)
这个问题,我们在下一部分 Rasterizer 中找到答案。

posted on 2008-11-23 16:06 狂之想 阅读(557) 评论(0)  编辑 收藏 引用 所属分类: 2D,3D

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


//