分类: LINUX
2010-08-25 18:03:35
我从我很久之前保留的资料中找到这么一句话:Shaders drive the programmable graphics pipeline, and define the final surface properties of an object. 这句话是对shader最精炼和到位的描述,shader的用途、目的与工作方式都包含了在内。
我们知道针对3D硬件的两大API,和Direct3D都有它们固定的渲染管线,即pipeline,我们把顶点位置、法线、纹理坐标等数据参数提供出来,然后再定义光源,我们就可以得到一幅渲染出来的图像。在这个具体的渲染过程中和程序的设计者是没办法具体实施控制的。
下面的部分大家都比较熟悉了,从DX8和OpenGL扩展开始将可编程特性引入到渲染管线中来,这样使游戏开发者通过自己编写一段小程序运行于显卡硬件来自己控制具体的渲染过程,在微软的DirectX中就称这段程序代码shader,在OpenGL中就叫Program,译成中文就是“程序”(还是OpenGL厚道……)。所以说,shader更多的是表现一种可编程控制的概念。
所以,我想了半天,也找不到一个很合适的名字加给shader,所以还是索性叫shader好了,反正大家都明白。 如果一定要给shader加一个中文名字的话,我希望是“渲染器”。
下面的内容是现在显卡芯片中到处都谈的部分,我就照搬过来在这里:
shader有两种,
一种是顶点级的,称为vertex shader(OpenGL称为vertex program),取代固定渲染管线中的变换和光照部分,程序员可以自己控制顶点变换、光照等。硬件中处理顶点shader的单元叫vertex shader processors(顶点处理单元)。例如,X1600芯片中之中有5个vertex shader processors。
一种是像素级的,称为pixel shader(OpenGL称为fragment program),取代固定渲染管线中的光栅化部分,程序员可以自己控制像素颜色和纹理采样等。硬件中处理像素shader的单元叫pixel shader processors(像素处理单元)。例如,X1600芯片中之中有12个vertex shader processors。
在pipeline实施渲染过程中引入了可编程特性是对实时渲染进行的一场革命,这样提供给了游戏开发者更大的创作自由度,从而可以创造出更好的效果。
chinaunix网友2010-10-24 16:57:52
博主辛苦啦! 文章写的非常精彩! 受益匪浅! 技术需要实践!如需迅速掌握嵌入式核心开发技术 请关注“百度哥2010”的ARM11嵌入式“real6410”开发板 http://shop62249124.taobao.com/
chinaunix网友2010-08-27 08:49:26
Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com