题外话:和我聊天的时候,有业内朋友问我X1600有多少个shader,我问他是不是shader处理器。朋友提问:shader不是硬件单元吗?我说,当然不是。又查了一下,网上有很多关于显卡术语的描述,尤其是shader这个基本术语的翻译,好像有误导。有任何名称,我从描述中不太了解着色器的含义。粗略的澄清一下,让大家看得更清楚。
我从很久以前保存的资料中找到了这句话:着色器驱动可编程图形管道,并定义对象的最终表面属性。这句话是对shader最精炼最准确的描述,shader的用途、用途和工作方法都包含了。
我们知道 3D 硬件的两个主要 API,OpenGL 和 Direct3D 都有其固定的渲染管线,即管线。我们提供顶点位置、法线、纹理坐标等数据参数,然后定义光源。您可以获得渲染图像。在这个具体的渲染过程中,游戏和程序设计者没有办法实现具体的控制。
以下部分大家都很熟悉。从DX8和OpenGL扩展开始,在渲染管线中引入了可编程特性,让游戏开发者可以通过自己编写小程序,运行在图形硬件上来控制具体的渲染。该过程在Microsoft DirectX中称为程序代码着色器,在OpenGL中称为Program,中文翻译为“程序”(或OpenGL是种...)。所以,shader更多是一个可编程控制的概念。
所以,想了半天,也没有找到一个很合适的名字给shader加上,所以就简单的叫shader吧。反正大家都懂。如果一定要给shader加一个中文名字,希望是“renderer”。
以下内容是现在显卡芯片里到处都在讨论的部分,我这里复制一下:
有两种着色器,
一个是vertex-level,叫做vertex shader(OpenGL叫做vertex program),它代替了固定渲染管线的变换和光照部分,程序员可以自己控制顶点变换、光照等。在硬件中处理顶点着色器的单元称为顶点着色器处理器(vertex shader processor)。例如,X1600芯片中有5个顶点着色器处理器。
一个是像素级的,叫做pixel shader(OpenGL叫做fragment program),它代替了固定渲染管线的光栅化部分,程序员可以自己控制像素颜色和纹理采样。在硬件中处理像素着色器的单元称为像素着色器处理器(pixel processing unit)。例如,X1600芯片中有12个顶点着色器处理器。
流水线渲染过程中可编程特性的引入是实时渲染的一次革命,它为游戏开发者提供了更大的创作自由,可以创造出更好的效果。
本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/shenmilingyu/article-382406-1.html
……