灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2846回复:0

[显卡技术]关于显卡shader的基本概念!

楼主#
更多 发布于:2012-08-28 14:43

  题外话:一位业内朋友和我聊天时问我X1600有几个shader,我反问他问得是不是shader processor。朋友疑问:shader难道不是硬件单元吗?我说,当然不是。我又去查看了一下,果然看到了很多网上的对显卡术语的描述,特别是对shader这个基本术语的翻译似乎也有些让人曲解。叫什么名字的都有,从进行的描述中也感觉到不是很理解shader的意义。给一个大致的澄清,让人们清晰化一些。
     我从我很久之前保留的资料中找到这么一句话: 这句话是对shader最精炼和到位的描述,shader的用途、目的与工作方式都包含了在内。      我们知道针对3D硬件的两大API,OpenGL和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实施渲染过程中引入了可编程特性是对实时渲染进行的一场革命,这样提供给了游戏开发者更大的创作自由度,从而可以创造出更好的效果。


喜欢0 评分0
游客

返回顶部