计算机工程
Computer Engineering
1999年　第25卷　第9期　Vol.25 No.9  1999



并行光线跟踪中的数据划分策略
刘　敏　董玉宇　张延国　胡正国
　　摘　要：提出了一种新的场景数据分割方法，以待计算的象素点来决定场景数据的有效分割，克服了以往盲目分割数据所带来的光线在处理机间的频繁交换，从而减小了通信开销．
　　关键词：并行光线跟踪；并行效率；数据分割
Data Partition Strategy for Parallel Ray Tracing
Liu Min Dong Yuyu Zhang Yanyuan Hu Zhengguo
(Software Engineering Center, Northwestern Polytechnical University, Xi＇an 710072)
　　Abstract　For the purpose of improving the efficiency of parallel ray tracing, the authors proposed a new strategy for scene data distribution according to the traced pixel. This method lowered the frequency of data exchanges between processors, and then reducced communication overhead.
　　Key words　Parallel ray tracing; Parallel efficiency; Data partition
　　光线跟踪作为一种真实感图形的绘制技术，能够生成传统图形学算法难以模拟的整体光照明效果，而且算法简单，易于实现。然而，传统的算法需面临几百万次的光线与景物的求交运算，而且随着绘制质量的提高，这种庞大的计算耗费也随之增大。80年代中期，随着并行处理技术的飞速发展，无论从软件还是从硬件上都为图形生成的并行处理技术提供了强有力的支持。光线跟踪算法的并行化就是并行处理与真实感图形生成这两项技术相结合的产物。
　　由于对视点到象素点的各条光线的跟踪都相对独立，光线跟踪的并行化处理是很显然的。因此其研究重点在于如何优化象素点、场景数据在并行机各节点上的分配策略，以大幅度提高并行效率。纵观近10年来，国际上较成熟的光线跟踪并行算法,主要归结为两类：一是面向数据的并行化，其特点是光线流在处理机节点之间流动，而每个处理机分配的象素点（数据量）是一定的；二是面向控制的并行化，它是在处理机间动态地分配象素点数，处理机间流动的不仅有象素点，而且还有部分场景数据。
　　Didier与Kadi等人于1994年提出的面向控制的并行光线跟踪算法中，描述场景空间的数据仅被均衡地分配给所有的处理机，而无其它特殊约束条件。这样，当某处理机所要访问的数据不在本机的局存上时，就必须远程访问存于其它处理机上的数据。Didier虽然引入了Cache机制以减少远程访问的代价，但还是存在着一个明显的缺陷，即数据分割的盲目性。如果分割得不好，在极端条件下，可能会造成严重的抖动现象：处理机之间频繁地交换数据，长时间得不到稳定。这就增大了系统的通信开销。
　　本文通过研究待计算的象素点与所需场景数据之间的内在关系，采用一种新的数据划分策略，它确保一处理机处理的光线要么一定落在本处理机局存中的场景数据所覆盖的子空间中，要么射出场景空间。
1　新的数据划分策略
　　图1展示了待计算的象素点与场景数据之间的空间关系。

图1　待计算象素点与场景数据的空间关系

图2　场景空间的层状分割
　　显而易见，由视点发出的第一级光线经过屏幕阴影区中任意一象素点投射入世界坐标系空间中，只有两种可能，要么落在场景空间中的阴影带上，要么射出场景空间。这里可以有两个结论：
　　(1)是光线连续的特性：从视点射出的两根光线，当穿过屏幕上两个相邻的象素点时，将很可能与场景中同一物体相交。
　　(2)如某处理机具有屏幕中阴影带象素点的计算量，在其局存中，就必须拥有场景空间中阴影带所属的那层场景数据空间来支持象素点的光线跟踪计算。
由此，可得到这一数据划分策略：将屏幕象素点与场景空间依第二个结论所述的对应关系进行层状分割，然后把各个层顺序分配给各处理机。
　　在实际应用中，视点、屏幕及场景空间三者的相对位置关系并不象图1所示的那样有规律。视点可以位于世界坐标系中的任意一点，屏幕位置和方位也是任意的。一般为了具有实际价值，屏幕位于视点的正前方。因此，同一场景仅因视点位置的不同而在屏幕上呈现不同的画面。按传统方法求得的场景包围壳是图2中虚线所示的长方体。本文为了便于场景空间的层状分割，场景空间的外壳方位将随视点位置的不同而不同。如图2所示，当视点位置由用户确定好以后，场景空间的外壳是实线所示的正方体（它与长方体的几何关系是体对角线相等，拥有同一个外壳球，故可由长方体经简单几何变换求得），且屏幕面与正方体的一个平面（称α平面）平行。这时，视点、屏幕及场景空间2的相对位置关系就与图1相同，可以方便地对场景空间进行层状分割。
　　这时，可具体地实现前述的数据划分策略∶先对屏幕象素点以行为单位进行条形划分，视参与并行处理的处理机数n把屏幕划分成n份，自上而下依次把象素点集分配给顺序编号的处理机。视点与屏幕上各条划分边界线构成的平面与α面交出了一系列交线，沿这些交线，以垂直于α面的方向可以将场景空间2分割成若干层，每一层都有相应的屏幕象素条与之对应。同样把前n层场景空间数据顺序分配给n个处理机。这样处理场景数据分割与分配，使得本机上分配的象素点射出的一级光线在进行计算时所需访问的数据一定存于本机的局存中，可以进行局部访问，而非远程访问。
　　但场景数据空间被分割成若干块，每个处理机只拥有了整个场景空间的一部分，一级光线虽然可以确保射入本机的场景子空间，而它与物体相交、求出交点后，将派生出新一级光线：沿透射方向的光线和沿反射方向的光线，要对它们分别进行光线跟踪，这些派生出来的二、三级或后代光线就有可能射出本机的场景子空间，而需进入存储在别的处理机上的另一场景子空间。这就需要决定将这一被跟踪的光线传递给哪一处理机，以便继续跟踪。
　　由于顺序分配的场景子空间与各处理机之间存在着对应关系，可以简单地描述为：第i号处理机上存储了第i层场景子空间。如果抛开处理机的其他硬、软件，只考虑其上存储的场景子空间的话，将这些处理机按其编号顺序层叠起来，就构成了整个场景空间。因此：
　　(1)当光线射出第i号处理机数据空间的上表面时，该光线要么射出整个场景空间（对于第1号处理机而言），要么进入第i-1号处理机中所存储的那部分场景数据空间；
　　(2)当光线射出第i号处理机数据空间的下表面时，则要么射出整个场景空间（对于第n号处理机而言），要么进入第i+1号处理机中所存储的那部分场景数据空间；
　　(3)当光线射出本处理机上场景数据空间的其他表面时（如前、后、左、右表面），则一定是射出场景空间了。
根据以上3点，当派生光线射出场景数据空间时，将此光线传递给哪个处理机继续跟踪这一问题便迎刃而解了。
2　结束语
　　本文提出的场景数据划分策略是在研究了待计算的象素点与所需场景数据之间的内在关系的基础上提出来的，它克服了以往盲目分割场景数据所带来的光线在处理机之间的频繁交换，减小了并行光线跟踪算法中的通信开销。这一策略应用在一些简单的并行图形处理系统中，效果很好。但由于系统还不成熟，还可以进一步改进它对不同拓扑结构的并行计算机的适应能力，这样，它的通用性将会得到提高。
作者简介：刘　敏(1970～)，女，讲师，主要研究方向：并行处理、软件工程
作者单位：西北工业大学软件工程中心，西安　710072
参考文献
1 Didier B. Distributing Data and Control for Ray Racing in Parallel. IEEE CG&A, 1994, (7):69-77
2 Chuang Junghong. A New Space Subdivision for Ray Tracing CSG Solids. IEEE CG&A , 1995, (11):56-62
3 Scott W. Recent Developments in Parallel Rendering. IEEE CG& A, 1994,(7):21-22
收稿日期：1998-12-15
