多种渲染模式
用什么方式令两块显卡同时渲染一帧画面是一个问题。3dfx的是隔行的方法,让每块显卡负责单或双的扫描线,然后把渲染结果一起输出到模拟显示接口。这样的方案在今天行不通了,不过ATI和NVIDIA都找到了自己的方法。
两家都想到了最理想的办法,就是让两块显卡轮流渲染(AFR)不同的帧,顾名思义,就是让每块显卡渲染整个完整独立的帧,这一帧由这块显卡渲染,下一帧由另一块显卡做,如此交替。每块显卡渲染整个帧的主要好处是,显卡可以把握好几何处理与像素处理之间的关系。
由于各种各样的原因,不能总是用AFR模式(如当新的一个帧建立在上一个帧基础上的时候)。在轮流渲染行不通的时候,ATI和NVIDIA都想到了另一种方法,就是垂直分解当前帧。当一个帧瓜分给两块显卡的时候,几何管线不象像素管线那么方便拆分。在渲染一个场景的时候,不容易把对象分配给不同的显卡,因为场景内各个对象可能影响到任何一个像素。
排列好几何体之后,要估算画面不同区域需要多少像素工作量,NVIDIA的好处是能够更好地把工作量平分给两块显卡。如果上半部分的画面比较容易渲染,就会把超过半屏的工作交给负责渲染上半部的显卡。这种方法的好处是让两块显卡的工作量更加平均。ATI可以按60/40或70/30的比例划分渲染工作,不过这种划分取决于每一个应用程序。
平均分配工作是很重要的一项任务,ATI的CrossFire在这方面更进了一步。他们推出一种称为Supertiling(意译为超级贴磁砖)的渲染模式。这种模式把整个画面分解为32x32的像素块,像素处理时每块显卡负责自己的棋盘格。由于基本上任何一个区域都是由两块显卡平分,工作量自然变得平均起来。
Supertiling最大的优势在于兼容性好,包括OpenGL在内的所有任务在内,几乎没有Supertiling不能做到的。OpenGL也可以使用AFR或帧划分模式,AFR是最理想的,但如果能取得更佳的工作量平衡当然更好。
除了拥有这么多的多显卡渲染分配模式之外,ATI还使用了增强AA模式。这得益于可编程点取样和硬件复合引擎。