Electronic Joint Business

Solution for E-Business

umd

WDDM 编程与调试 (1) — GPU 架构概览

3D 图形处理主要目的是把 3D 场景变成一个 2D 图像。这里涉及的主要是几何学,主要需要解决的问题是坐标变换(Transform)、裁剪(clipping)和投影(lignting), 简称 T&L 或 TCL:

  • 坐标变换(Transform):即将一个 3D 物体变化为 2D 图像,基本做法是投影,包括透视投影和垂直投影。 其实这里面还会涉及把物体的“物体坐标”转换成世界坐标,再转换成“相机坐标”等。这涉及一系列矩阵变换。
  • 裁剪(clipping):3D 物体投影到 2D 平面上后,或是投影过程中,发现有一些部分是不应该被看见的,这时需要根据遮挡信息等把他们裁掉。
  • 光源(lighting):光把 3D 物理投影到 2D 平面并不能给人们带来足够真实感,因为同样的几何体,由于光照角度不同,材质不同,可能会显示出非常不一样的颜色,人眼需要这种颜色或灰度变化来区分物体间的位置关系。

一、3D 图形处理和 GPU 架构发展
Nvidia 在 1999 年推出的 GeForce256 第一次提出了 GPU 的概念,它第一次完整实现了整个渲染管线(pipeline). 这个时期使用 AGP 替代 PCI 传输数据,并且增加了诸如硬件 T&L、立方环境材质贴图、顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素、256 位渲染引擎等诸多先进技术。而硬件 T&L (Transform & Lighting 坐标转换和光源处理)可以说是 GPU 问世的标志。这个时期实现的渲染管线就是熟知的 fixed function pipeline,即固定管线渲染。从此 3D 游戏中坐标和光源的转换工作就由 CPU 转交给了 GPU。

渲染管线也叫渲染流水线,是显卡芯片中和图形信号处理单元相互独立的并行处理单元,渲染管线提高了显卡的工作能力和效率,传统的一条渲染管线由 PSU(像素着色单元 Pixel Shader Unit)、TMU (纹理贴图单元,Texture Mapping Unit) 和 ROP (光栅化引擎 Raster Operations Pipeline)三部分组成,PSU 负责像素处理,TMU 负责纹理渲染,而 ROP 负责最终的像素输出,用公式表示为 PS = PSU + TMU + ROP。一条完整的渲染管线意味着在一个时钟周期里至少进行一次 PS 计算,并输出一次纹理。

接下来的重大革新则是 DirectX 8.0 引入了着色器 (Shader) 。着色器就是一段可以改变顶点和像素的小程序,可被加载并在 GPU 上运行,它替代了传统的固定渲染管线参与到流程中,可以实现 3D 图形学中的相关计算。同硬件 T&L 仅能实现的固定光影转换相比,Shader 的灵活性更大,它使 GPU 真正成为了可编程的处理器。例如它可以只让特定的蓝色材质发生移动、扭曲和倒映,这样就产生波光粼粼的水波效果。

早期的着色器有两种:顶点着色器(Vertex Shader,在 OpenGL 中称为 Vertex Program),它取代固定渲染管线中坐标变换和光照部分,可以用于控制顶点变换和投影变换等,另一种称为像素着色器(Pixel Shader,OpenGL 称为 Fragement Program),用来取代固定渲染管线中的光栅化部分,可以用于控制像素颜色和纹理采样。换句话说,着色器就是一段由 GPU 执行的用于对 3D 对象进行操作的程序。像素着色器和顶点着色器都是 ShaderModel 中的以一部分,而 ShaderModel 可以理解为 GPU 的渲染指令集。事实上,着色器与汇编语言非常相似,只不过它是运行在 GPU 上的。1此后每逢 DirectX 有重大版本更新时,ShaderModel 也会相应的升级版本,技术特性都会大大增强。

>>> 阅读全文

 

, , , , , , , ,