Rendering pipeline之 顶点着色器 

Rendering pipeline之 顶点着色器 

按上一部分,
被输入到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 中找到答案。

你可能感兴趣的:(Rendering pipeline之 顶点着色器 )