● T&L和Shader
T&L(Transform and Lighting,多边形转换与光源处理)是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为几何处理。在GeForce问世之前,T&L的大部分运算是交由CPU处理的,由于CPU的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此T&L性能低下,转交给GPU做这一部分大大改进了PC的整体图形性能。
GPU的下一次重大改进是引入Shader(着色器),Shader是配合DirectX 8的规格产生的图形芯片架构技术,它进一步扩展了GPU的能力,使原来的渲染管线和T&L带有了可编程的能力,极大地增强了GPU绘制出来的3D图形的表现力。从GeFroce 3一直到现在的GeForce 9,GPU的发展一直基于这种用于控制显卡硬件几何构建/渲染过程的Shader来延续的。
早期版本的shader有两种, 一种是顶点级的,称为vertex shader(OpenGL称为vertex program),取代固定渲染管线中的变换和光照部分,程序员可以自己控制顶点变换、光照等。一种是像素级的,称为pixel shader(OpenGL称为fragment program),取代固定渲染管线中的光栅化部分,程序员可以自己控制像素颜色和纹理采样等。
● 统一渲染架构
DirectX 10+GeForce 8,我们迎来了GPU新的一页,统一渲染架构。在06年底出现的这种新技术和产品中,顶点、像素、几何处理等各种其他3D处理都能被映射成浮点处理被GPU的流处理器(SPs:Streaming Processors)计算。几何着色处理是DirectX 10的新特性,这种功能统一渲染架构的的流处理器可以很好的支持,以此实现更加丰富的特效,并大大降低几何处理对CPU的依赖。GPU的分遣控制逻辑可以动态的分配流处理器去执行前面所述的顶点、像素和几何着色部分,甚至对于3D开发者来讲都不用过多的考虑不同着色器的分配,现在这些完全都可以交给API和驱动自动控制。
这种新的GPU流处理器的通用性良好,未来更多的3D应用也可以在API和驱动的支持下被加进来,就这一点来说统一架构的着色器也远优于不可扩展的传统架构。
在传统的管线模型里,数据流的开始是各种不同从CPU至GPU的属性、指针、命令和纹理。然后主要的处理阶段遵循相当线性方式,包括顶点着色、像素着色、栅格化,一直到完成处理的像素输入到缓冲区。事实上Geforce 7系列GPU的物理管线在每一个主要处理阶段都拥有很多子阶段,在像素着色阶段就有着超过200个分步的子阶段 。在统一的管线/着色器架构里,Geforce 8/9 GPU的设计显著的降低了管线处理阶段,并且把顺序流方式改成了循环执行。信号被输入到统一着色器核心处理后输出至寄存器,然后再被重复输入至着色器核心进行下一步处理。
深入图形程序,通常来说都是像素着色应用多于顶点着色应用,这也是早先着色器分离架构中像素着色器多于顶点着色器的原因。不过这只是总体上的统计情况,而在具体3D应用程序中,某个时段还是有所不同。因此,统一着色器架构的GPU的动态着色器处理能力将比传统的着色器分离架构更有效率。