在视觉计算软件中使用野猫显卡的Genlock和Multiview选项
视觉计算软件经常要求某些高端特性,比如要能通过外部源同步,或者要能指定一个最小帧率并实时地通知软件达到该帧率。此外,视觉计算软件经常使用多头显示功能。从技术角度说就是软件使用了多图形通道,每个通道驱动一个显示头(显示器、投影仪等等)。当你听到有人谈起“多头”系统, 他们指的就是一个具有多个图形通道的系统,每个通道驱动独立的显示器。
以图1所示的“多头”系统为例。
图1. 一个多头视觉计算的应用
在这种情况下,有一点极为重要,就是系统把这多个显示器看作一块“虚拟的帆布”,而它们表现得如同是一个大的显示器(这包括锁定缓存交换和显示刷新)。因此,为了达到最苛刻的视觉计算软件的要求,Wildcat III 6210, Wildcat II 5110-G,和Wildcat 4210 3D 图形加速卡支持同步锁定、多视图、帧锁定、帧率锁定和帧使用等功能。
如果你察看Wildcat III 6210, Wildcat II 5110-G(带同步锁定/多视图的Wildcat II 5110卡), 或 Wildcat 4210 ,你会看到一些如图2,3a,3b和4所示的连接器
- Figure 2. The Wildcat III 6210's external connectors.
- Figure 3a. The Wildcat II 5110's external connectors.
- Figure 3b. The Wildcat II 5110 multiview/genlock adapter's external connectors.
- Figure 4. The Wildcat 4210's external connectors.
同步锁定输入口
同步锁定输入连接器,使用同轴电缆,允许通过外部定时器同步视频, (见下面的同步锁定、多视图等等)。 这个同轴电缆连接器是一个75欧姆的针式连接头,用于和一端为孔式接头的75欧姆同轴电缆相连接。这个连接通过为显示系统提供周期信号来锁定垂直刷新率.
立体同步输出口
立体同步输出口(孔式,三脚,迷你型连接口)提供到三维眼镜发射器或其他立体输出设备的连接
多视图输入输出口
这个多视图输入和输出口为多个Wildcat III 6210, Wildcat II 5110-G, or Wildcat 4210 (见下述的同步锁定和多视图等)显卡之间的帧锁定和帧率锁定提供支持。
请注意:Wildcat III 6210不能与任何其它型号的野猫系列显卡相连接。
为了完全认识诸如同步锁定和多视图的特性,有必要先了解一些核心概念,比如基于阴极射线管(CRT)的计算机显示器是如何工作的。首先,图像是由横向扫描屏幕的电子束逐行累积起来的。举个例子,考虑我们怎样画一个简单的三角形(图5)
图5. 电子束在计算机屏幕上画一个三角形
当然,实际计算机屏幕有很多这样的线,而且每条线烤得非常近。电子束遵循的路径称为光栅扫描(图6)。图左是阴极射线管的横截面,图右展示了电子束扫描路径(光栅扫描技术)。
图6. 光栅扫描技术
使用光栅扫描技术,电子束从屏幕左上角开始,从左到右扫过屏幕。当电子束到达右边界的时候他经历一个被称为“水平回扫”的过程,在这个过程中,它的强度降为零(水平消隐)并跨过屏幕回到左边(同时在屏幕上往下移了一点)。这个水平回扫过程被一个称为“水平同步”的同步信号触发,然后电子束开始第二条扫描线,然后第三条,直至到达屏幕的底部。当电子束达到屏幕底部的右端的时候,它经历一个被称为“垂直回扫”的过程,在这个过程中,其强度降为零(垂直消隐)并跨过屏幕回到左上角。垂直回扫过程由被称为“垂直同步”的同步信号触发。(在彩色显示器中有三条电子束,分别用于在屏幕内部衬里组成荧光层的红色、绿色、蓝色的荧光物质。)
图7. 水平和垂直回扫的另一种表示方式
当然,电子束的水平或垂直回扫都需要时间。另一种表达的方法可认为可见的屏幕只占据了图像区的一部分(图7)。在所谓的“单显像管显示”模式下,对屏幕一次完全刷新被认为是以“帧”。在这种情况下,每一次刷新/每一帧对它自己来说都是完整的,而且与后续的刷新/帧无关。然而,想象我们想要使用三维立体技术,涉及到专用于左眼或右眼的交替的图像(利用特殊的眼睛/护目镜)。在这种“帧连续立体”模式下,每一帧包含两个域(图8)。在这种情况下,如果我们希望同步两个显示器,我们会要求同步它们的每一帧,否则可能一个显示器正在刷新左眼图像的时候二零一个显示器正在刷新右眼图像。(这样非但图像质量极差,而且肯定让人头痛欲裂!)实际上可选的显示模式有很多。在“彩色连续单视点”模式,每一帧包含三个域,分别针对图像的红色、绿色和蓝色部分。与之类似,在“彩色连续立体”模式下,每一帧包含六个域(左眼的红、绿、蓝域,紧接着是右眼的红、绿、蓝域)。
图8. 在连续帧立体模式下,每一帧包含两个域
同步锁定功能指的是一个或多个显卡被外部同步信号源锁定的能力,比如说演播室的同步(板卡可能装在单个工作站中,也可能分布在多个工作站里)。举个例子,设想在单工作站单野猫显卡使用同步锁定功能。(图9)
图9. 在单工作站中使用同步锁定。
你可以指定野猫在外部同步信号的上升沿、下降沿或两个沿触发。举个例子,设想在一个简单的60Hz外部同步信号的上升沿触发(图10a)。你也可以指定野猫在同步脉冲到达以后多少时间后出发(图10b)。另一个选项是每若干个脉冲触发,如果你想从120Hz的外部信号源获得60Hz的帧率,这将非常有用(以图10c为例)。作为最后一个例子,图8d展示了野猫如何以1:1的占空比在60Hz外部信号源的两个沿触发——这可以用于控制立体感显示设备的左眼和右眼。
图10.野猫显卡的不同触发方式
注意 同步锁定要求使用特殊的显示器定时存储器(MTFs)。每种支持的显示器都有其特定的一套MTFs——每个支持的分辨率都有一个。创建MTFs不是很简单的,所以如果你希望支持一种新的显示器,你需要联系3Dlabs。
也可以用外部同步信号来驱动多个工作站。然而,如果你在多个工作站上运行同一个软件,而且你想把它们的显示器当作一块“虚拟的布”来看待,让它们如同一个来刷新,你必须使用多视图(图11)。
图11. 使用多视图技术同步三个工作站
在这种情况下,左边的的工作站自动认为它自己是“主机”(因为它没有连接到多视图输入口的电缆(参考前面关于外部连接头部分的讨论可以获得多视图输入输出口的详细资料)。类似的,其它两台工作站自动认为它们是“从机”(因为它们能检测到驱动多视图输入口的电缆)。
三维视觉计算软件通常使用一种被称为“双缓冲”的技术来获得流畅的画面。在这种情况下,系统显示其中一个缓冲的内容同时在第二个缓冲(不可见)中绘制下一帧。当新的一帧绘制结束后,两个缓冲能够交换(可以立即交换,也可以在收到某个触发信号的时候再交换),这时系统显示第二个缓冲中的内容,同时在原来的缓冲中绘制下一帧。如果多个显示器被当作“一块虚拟的布”在使用,那么所有系统的缓冲交换必须同时进行,否则在不同屏幕之间将出现令人痛苦的效果。当然,每个工作站可能正在绘制不同的复杂度级别的图像。举个例子,在飞行模拟中,其中一个工作站可能主要表现蓝天,而另一个正在描绘一幅复杂的地形图。因此,系统要求有一个反馈机制,使得“从机”能够通知“主机”它们已经做好缓冲交换的准备(图12)。
图12 : 多视图如何实现帧锁定
每一条多视图电缆包含两个额外的信号称为“完成”(或“准备好”)和“释放”。在上面的例子中,当右边的工作站准备好缓冲交换时,它立刻向中间的工作站激发一个“完成”信号(因为它能检测到没有电缆连接到它的多视图输出口,所以它不需要等其他的工作站)。当中间的工作站准备好缓冲交换的时候,它首先检测右边的工作站的“完成”信号是否激活;如果未激活则等待。当来自右边工作站的“完成”信号激活了,中间的工作站就把它自己的“完成”信号激活(连接到左边工作站的那个)。类似的,当左边工作站准备好交换缓冲的时候,它会检测中间工作站的“完成”信号是否激活。当中间工作站指示说它已经准备好了,左边工作站执行缓冲交换并把它的“释放”信号激活。这个“释放”信号引起中间工作站交换缓冲并激活“释放”信号,如此传递下去。
假定我们正在一个飞行模拟软件上工作,而我们所能看到的只是天空,因为天空只包含很少的多边形,所以能很快绘制出来。现在假设我们压低飞机头,开始向地面俯冲,这将是一个包含了大量多边形的复杂得多的三维物体,因此要耗费更多的时间去绘制。如果我们在经过复杂场景地时候系统显著地变慢,这显然是令人不安的。所以多视图支持速率锁的概念,在这里软件指示硬件(显卡)它能忍受的最小刷新周期。如果硬件检测到它无法在要求地时间内完成一帧地绘制,它会丢弃该帧转到下一帧。当然我们理想地希望不丢失任何帧,所以多视图还支持称为“帧使用”的更高级的概念。在这种情况下,软件可以查询显卡以多久的时间去绘制一帧。举个例子,想象一下同一个视觉计算软件运行在三台工作站上(图13)。
图13. “帧使用”如何工作
让我们假定左边的工作站正在绘制天空和地面的组合,而且占去了交换帧缓冲之前66%的可用时间(在下一次触发到达之前)去绘制下一帧。在这种情况下,如果软件向显卡查询“帧使用”的值,它会得到一个值0.66。类似的,我们假定右边的工作站正在绘制一个主要由天空构成的简单场景,而且画下一帧只需要33%的可用时间。作为对比,我们假定中间工作站正在绘制一个包含复杂地形的场景。这个场景过于复杂以至于需要超出可用时间18%时间来绘制,这会导致错过下一个同步/触发脉冲。在这种情况下显卡返回的“帧使用”值将会是1.18(相当于118%)。综合上述情况的结果会是所有三台工作站都丢弃了一帧,因为中间工作站不会激发它的“完成/准备好”信号(见先前关于帧锁定的讨论)。可是,如果每一个软件拷贝(在每一台工作站上的)都实时监视它们相关的帧使用参数,中间工作站上的软件就会检测到它遇到了问题,然后软件可以执行某些场景管理操作来处理,比如去除一些不重要的数据。类似的,在左边和右边工作站上的软件也可以开始显示更多的细节。