上面我们已经了解了CPU和GPU之间的中转是由graphics driver software来承担的,接下来我们来了解一下GPU硬件本身的构造。
著名的游戏引擎虚幻引擎(Unreal Engine)Epic Games的Unreal window用PC游戏是在1998年公布的。当时因为还是软件渲染时代,坐标转换矩阵计算是在CPU中进行的。
1999年NVIDIA发布了Geforce 256显卡,因为硬件是T&L(transform & lighting),矩阵计算和Multiply accumulate operation这些固定功能是由硬件来实现的,从这个时候开始,3D PC游戏的坐标转换将在GPU中实现。
单机游戏机中,在2000年发布的索尼Playstation2中CPU Emotion Engine的向量运算单位已经实现了几何处理,2001年发售的任天堂GameCube在GPU Flipper上实现了硬件T&L。
2000年微软发布了window用图形API DirectX 8。
DirectX 8不是固定功能,而是搭载了用户可以自定义编写的软件管线的硬件Shader,前提得是Programmable shader架构的GPU。
Shader分为两种,处理几何的Vertex Shader和处理Pixel的Pixel Shader,各自内部分别实现了个别硬件Block。
在OpenGL/OpenGL-ES中,把在DirectX中叫做Pixel shader的词汇称之为Fragment shader。
2001年发布了支持DiectX 8的操作系统windows XP和Nvidia GPU Geforce 3。
同年,发售的微软单机游戏机 'XBOX’搭载了支持自定义的Geforce 3,并支持Programmable shader。
渲染就是为了表现出3D立体感,给物件赋予由Shading这种模型现象而产生的阴影和灯光效果。
灯光、阴影处理等影响渲染结果的处理有很多,所以Shading这个词汇作为现代用语,指的是使用GPU来渲染的一般表现。
把在GPU硬件Shader中运行的程序叫做Shader Program,有时候干脆就叫做Shader。
在这之后,在2005年发售的微软XBOX 360中采用的ATI GPU Xenos,采用了Unified shader,这是一个很大的突破。
Unified shader作为同一硬件,在Shader process 中,同时处理vertex shader和Pixel shader两边,会根据各自处理阶段和每个游戏特性的不同会更换适合各个处理负荷的资源分配,在Shader process 方面能保持road平衡。
这边Unified shader process是以stream processing unit来实现的,具有5要素的VLIW(Very Long Instruction Word,超长命令) ISA。<