显卡是个人计算机基础的组成部分之一,将计算机系统需要的显示信息进行转换驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示,是连接显示器和个人计算机主板的重要组件,是“人机”的重要设备之一,其内置的并行计算能力现阶段也用于深度学习等运算。 题外话:和我聊天的时候,有业内朋友问我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个顶点着色器处理器。 流水线渲染过程中可编程特性的引入是实时渲染的一次革命,它为游戏开发者提供了更大的创作自由,可以创造出更好的效果。
|
温馨提示:喜欢本站的话,请收藏一下本站!