狂想的天空

狂想,只要你想!

C++博客 首页 新随笔 联系 聚合 管理
  21 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks
模型在 vertex shaderrasterizer处理之后,
基本上是一个有颜色的模型了。
也就是说,在rasterizer处理之后,其实就已经算是一个3D的图像了。

但是,这个图像只是各个面被使用渐进色涂满而已,非常单调。
要想使图像的各个面上贴上别的图像,
或者,使各个面呈现半透明的图像,
就需要做其它处理。
这个处理,就是pixel shader(像素着色器)

像素着色器,就是以rasterizer所产生的各个pixel为对象来进行各种处理,
让单调的图像成为有各种特别效果的图像。

pixel shader的内部被分为如下图所示的区域。


其中,浅蓝色区域即为像素着色器处理部分。
绿色部分是像素测试部分。

在这里特别需要注意的是:在面上贴上图像的Texture Mapping,
以及将颜色与目前已被画到rendering targer的像素产生混合的blending处理;

以上几个处理,我们会在以后的小节里详细介绍。

下面我们先简单介绍一下像素测试部分。 

上图的绿色部分即为像素测试部分。

像素测试分为 alpha test ,stencil test ,depth test三部分;

depth test 是比较常用的,有时候我们也叫深度测试,或者,Z测试;
在这个测试中,会依据各个像素所设定的深度资料,让原本就会躲到别的像素后面去的像素不被画出来。

具体来说,首先必须要有一个能够暂时储存画面上的各像素深度资讯的depth buffer,的暂存记忆体。
然后,在描绘各模型的各个像素时,若它的前面已经有其它的像素被描绘的话,则不进行描绘,
而若没有的话,进行描绘。并更新depth buffer的深度资讯。
这样以来, 即使是重叠关系复杂的多边形,也不会出现奇怪的结果,会以正确的前后关系来进行描绘。

关于alpha test ,stencil test ,会在以下小节里介绍。






posted on 2008-12-03 20:33 狂之想 阅读(864) 评论(0)  编辑 收藏 引用 所属分类: 2D,3D

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


//