用于提高光线跟踪性能的技术的制作方法

文档序号:6576915阅读:160来源:国知局
专利名称:用于提高光线跟踪性能的技术的制作方法
技术领域
本发明的各实施例通常涉及计算机图形学领域。更具体地,本发明的 各实施例涉及用于在计算机系统内执行光线跟踪的技术。
背景技术
光线跟踪是一种涉及找到给定光线与场景中的几何对象的相交部分的 技术。与传统的栅格化方法相比,光线跟踪可被用于创建更加令人满意和
丰富的3D体验,因为其更精确地模拟了自然光的传播。
因为光线跟踪可能会涉及到许多光线-多边形相交测试,所以可能会使 用一些被称为"加速结构"的附加结构,以便将光线/多边形相交测试的数 量减到最小。加速结构可以包括多个链接的数据数组,该数组包含有与3D 场景中的几何细节有关的信息(例如包围盒的坐标),使得与测试照射在场 景内或场景中对象内的每个多边形的每道光线所必需花费的时间量相比, 能够使用以对ff减少的时间量在场景中跟踪光线轨迹。有很多类型的加速 结构,包括"kd-树"加速结构,其包含有"节点",该节点代表了由分割 平面划分为两个子空间的3D空间。在kd-树中,树的叶节点包含有与叶节 点的包围盒相交的多边形。典型地,在诸如kd-树的加速结构中,较大的 包围盒出现在层级结构的最高级,逐级变小的包围盒则位于该结构的底部。 创建诸如kd-树这样的加速结构在计算上是昂贵的。较小的加速结构 创建起来更快,但它们能消除的光线-多边形相交测试也会更少。加速结构 的最佳尺寸取决于与所使用的光线-三角形相交测试的平均速度相比,遍历 该加速结构的速度能有多快。


本发明的实施例是通过示例而非限制的方式示出的,在附图中,相似
的参考数字表示类似的元件,并且其中图l示出了处理器的方框图,可以在该处理器中使用本发明的至少一
个实施例;
图2示出了共享总线计算机系统的方框图,在该系统中可以使用本发 明的至少一个实施例;
图3示出了点对点互连计算机系统的方框图,在该系统中可以使用本 发明的至少一个实施例;
图4示出了根据至少一个实施例的将被渲染的三维(3D)图像; 图5示出了可以与一个实施例结合使用的加速结构; 图6示出了包围盒,该包围盒与平截头体和位于平截头体之外的多边 形相交,根据一个实施例可以剔除该多边形;
图7是示出了可以在一个实施例中所使用的操作的流程图。
具体实施例方式
可以在实现了图形渲染硬件的计算机系统中使用本发明的实施例。而 且,可以在实现了通用中央处理单元(CPU)的计算机系统或微处理器中使 用实施例。此外,可以在通过相同的或不同的硬件执行图形处理和通用 CPU处理的系统和处理器中使用一些实施例。在又一些实施例中,本文描
述的操作可以用软件、硬件或这两者的某些组合来实现。
在一些实施例中,本文描述的技术可以提高对光线跟踪算法之中所使 用的加速结构进行遍历的速度。在一个实施例中,本文描述的技术通过增 加将要被遍历的子节点(或"叶节点")的尺寸来縮小加速结构之内的搜索
树,从而减少了当使用光线跟踪技术对3D图形场景进行渲染时,计算包 含在该加速结构之内的适当信息所必需的计算量,并由此提高了 3D图形 应用的性能。
在一个实施例中,在加速结构(例如kd-树)之中表示3D场景,例如, 通过确定哪些多边形没有落在由光线组所形成的子空间(或"平截头体") 之内,可以减少待测试的多边形的个数。平截头体可被概括为在3D空间 中以三个或更多个(例如四个)平面相交所界定的3D形状。通过在遍历加速 结构的叶节点时,确定出哪些多边形与平截头体相交并且在光线-多边形测 试中使用相应的多边形,相当一部分的处理工作可被避免,因为,只有那些与平截头体相交的多边形才会被测试。
图1示出了一个处理器,可以在该处理器中使用本发明的至少一个实
施例。特别的是,图1示出了处理器100,处理器100具有一个或多个中 央处理单元(CPU)105和110以及至少一个非CPU功能单元107和113。图 1还示出了至少一个其它非CPU功能单元115,其可以执行其它不由功能 单元107和113来执行的操作。在一个实施例中,功能单元107、 113和 115可以包括诸如图形处理、存储器控制以及外设控制(例如音频、视频、 盘片控制、数字信号处理等)这样的功能。在一些实施例中,处理器100还 可以包括其它未在图1中示出的逻辑,例如i/o控制。在一个实施例中, 多处理器系统中的每个处理器或多核处理器中的每个处理器核可以包括或 关联到逻辑119,以根据至少一个实施例的技术来提高光线跟踪的加速结 构遍历的速度以及相应的多边形渲染的速度。在一个实施例中,处理器100 是图形处理器,并且逻辑119用于帮助确定哪些多边形位于由穿过给定包 围盒的光线所定义的平截头体之外。在另一些实施例中,逻辑119可以包 括用于帮助确定哪些多边形顶点在平截头体之内或之外的软件。在另一些 实施例中,逻辑119可以包括用于帮助确定与平截头体相交或被包含在平 截头体之内的多边形的硬件和软件。
在一些实施例中,处理器100可以是通用CPU。在另一些实施例中, 处理器可以是通用CPU,也可以是在系统内执行图形专用功能的硬件,该 系统可以既包括通用CPU集成电路,又包括图形专用硬件或其它并行计算 硬件。随着通用计算与并行计算硬件(例如图形引擎、纹理采样等)变得更 加一体化,逻辑119也变得更加多用途并且位置更加独立。结果是,逻辑 119可以包括硬件、软件或这两者的任意组合,并且可位于或被集成在处 理器100的任何部分之内或之外。
在一个实施例中,逻辑119包括用于执行图形栅格化裁剪功能的逻辑。 此外,在一个实施例中,该逻辑包括算术逻辑单元(ALU),其存在于单指 令多数据(SIMD)执行逻辑之内或与单指令多数据执行逻辑相关联。因为本 发明的实施例会在位于平截头体之内和之外的多个多边形之间执行比较分 析,所以与实施例有关的操作适合于由并行指令集架构(ISA)和微架构来执 行。但是传统的单指令单数据架构/微架构也同样适合于执行本发明的实施例。在一个实施例中,处理器100的逻辑单元可以通过环互连、共享总线 互连(例如前端总线)、点对点(P2P)互连或其它互连结构来相互连接。
图2示出了一个共享总线计算机系统,可以在该系统中使用本发明的 一个实施例。微处理器201-215可以包含有多种功能单元,例如一个或多 个CPU(223、 227、 233、 237、 243、 247、 253、 257)、图形设备(207、 217、 227、 237)、存储器控制器(225、 235、 245、 255)、 I/O控制或其它功能单 元(例如PCI或PCIe控制器(220、 230、 240、 250))。图2的系统可以还包 括I/O控制器265,以便为微处理器提供到外设控制设备260的接口
在一个实施例中,该系统包括3D图形逻辑,例如渲染引擎、纹理采 样器等,该3D图形逻辑可以包括用于执行本发明的至少一个实施例的逻 辑。此外,在其他实施例中,外设控制设备可以包括用于执行本发明的实 施例的图形设备。该系统中的任何CPU还可以包括用于执行与本发明的实 施例有关的操作的逻辑。在一个实施例中,图2的一个或多个微处理器可 以包括通用处理器、图形处理器或具有逻辑219的某个其它类型的处理器, 逻辑219用于确定出哪个多边形落在了平截头体之内和/或之外,该平截头 体是由加速结构(例如kd-树)内的给定节点的包围盒与给定光线相交所形 成的。
在一些实施例中,图2中所示出的一些或全部元素可以被包括在一个 微处理器中并且可以包括其它互连,例如直接存储器接口(DMI)、 PCI Express图形(PEG)互连等。不考虑配置,本发明的实施例可以被包括在图 2的系统的任何部分之内或与图2的系统的任何部分相关联。
图2的系统可以还包括主存储器(未被示出),其可以包括多种存储器 结构,例如动态随机存取存储器(DRAM)、硬盘驱动器(HDD)或经由网络接 口的包含有多种存储设备和技术的远离计算机系统的存储器源。图2的系 统内的高速缓冲存储器可以位于处理器内,也可以与处理器非常接近,例 如在处理器的本地总线上。
此外,高速缓冲存储器可以包含有相对快速的存储单元,例如六晶体 管(6T)单元、或其它具有大约相等或更快存取速度的存储单元。
除了图2中所示出的共享总线计算机系统之外,可以结合本发明的各 种实施例来使用其它系统配置,包括点对点(P2P)互连系统和环互连系统。例如,图3的P2P系统可以包括多个处理器,示例中仅示出了两个处理器 370、380。处理器370、380各自可以包括本地存储器控制器中心(MCH)372、 382,以便与存储器32、 34连接。处理器370、 380可以经由点对点(PtP) 接口 350、使用PtP接口电路378、 388来交换数据。处理器370、 380各 自可以经由单独的PtP接口 352、 354、使用点对点接口电路376、 394、 386、 398来与芯片组390交换数据。芯片组390可以经由高性能图形接口 339 与高性能图形电路338交换数据。本发明的实施例可以位于具有任意数量 处理核的任何处理器之内,或者位于图3的每个PtP总线代理之内。在一 个实施例中,逻辑319可以用于执行与本发明的至少一个实施例有关的操 作。
图4示出了一个图像,可以根据一个实施例、使用全局光照技术来对 该图像进行渲染。必须对每个像素上的多条光线进行跟踪以实现该图像的 品质。
图5示出了一个加速结构,可以将该加速结构与本发明的至少一个实 施例一起使用。图5的加速结构是kd-树501,它的顶层节点对应于场景的 最大包围盒(如图510中的那个包围盒)。kd-树的较低层节点与图520的逐 渐变小的包围盒相对应。图.501中的每个内部节点在树中的较低一层上都 有两个子节点。图5的加速结构可以非常大,这取决于场景中多边形的个 数。因此,构建加速结构所需的时间和计算资源可能是相当可观的。
在一个实施例中,为每个有光线包穿过的叶节点形成一个平截头体。 本发明的实施例通过首先确定出哪些多边形需要被测试(即那些与平截头 体相交的多边形)以及哪些不需要被测试(即在叶节点内的那些不与平截头 体相交的多边形)然后只去处理那些与平截头体相交的多边形,减少了遍历 该加速结构和对图像进行渲染所必需的处理量。
图6示出了一个与平截头体相交的包围盒,其中可以使用本发明的至 少一个实施例来确定出可被忽略的多边形以及哪些多边形必须被测试和有 可能被渲染。在图6中,包围盒600与平截头体605相交,该平截头体605 包含光线601、 602、 603和604。在其他实施例中,平截头体可以由更多 或更少的光线来定义。还示出了三角形610,其位于平截头体之外(即没有 与平截头体相交)。三角形610不需要被测试,因此被排除在对给定光线包的处理之外。在一个实施例中,通过在对容纳了该三角形的叶节点进行遍
历时执行剔除功能来排除对给定包的光线-三角形相交测试,三角形610被 勿l
在一个实施例中,通过找到平截头体与三角形630的平面620的相交 部分,还可在三角形630的平面620内执行该剔除操作。平截头体605与 平面620的相交部分由点621、 622、 623和624来定义。在一个实施例中, 通过将三角形630的顶点坐标与这四个点的坐标作比较,可能会检测出三 角形是否完全位于平截头体之外。
图7示出了一个操作流程图,其可以与本发明的至少一个实施例结合 使用,以发现光线包与叶节点内部的多边形(例如,三角形)的所有交点, 该操作流程与应用本实施例的处理器或系统配置无关。在操作701中,在 渲染一个场景期间选择一组光线。在操作705中,找到这些光线与被遍历 节点的包围盒的近平面和远平面(图6的平面x = x。。和x = x,o)的交点,并 且计算包含有每个平面的这些交点的轴对齐矩形。所得到的矩形界定了通 过包围盒的光线,形成了包含光线与节点边界的交点的平截头体。
在操作710,对于每个多边形,确定该多边形的顶点是否位于四个(左、 右、上、下)平截头体平面中的任何一个平面的外面。如果所有多边形顶点 都位于至少一个平面的外面,那么排餘这个多边形不对其进行进一步处理。 否则,在操作715,计算定义了平截头体的四条角光线与多边形平面的交 点。使用平截头体角光线和该平面之间的交点的坐标(例如重心坐标),可 以识别出以下情况平截头体与多边形被凸多边形边缘中的任何一个边缘 分隔开。可选地,在这一阶段对两个额外的平截头体平面(近平面或远平面) 进行检查,以消除那些位于视角点(近平面)之后的多边形、或者远于之前 找到的相交多边形(远平恥的多边形。在操作720,使用现有技术的光线-多边形相交测试来测试在前几个阶段中没有被排除的所有光线包-多边形 对。在另一些实施例中,可以使用其它方法来找到多边形与光线包或平截 头体的交点。
在一个实施例中,找到一条光线与一个三角形的交点相当于解一个包 含三个方程的线性系统,表示为
(1) o +1 d = po + u (pi — po) + v (p2 — po)附加条件
(2) 0《t《told
(3) 0《u, 0《v, u+v《1
该系统的左边定义了具有原点o和方向d的光线,该系统的右边定义
了以P。、 P,和P2为顶点的三角形内部的点。在以上系统中,变量t表示从 光线的原点O到光线/三角形交点的距离,以及三角形内部的点的重心坐标 U和V。上述系统的条件(1)是交点U,、 Vi与之前找到的交点Uo、 Vo相比
离光线原点更近(如(2)所示),并且在三角形的边界之内(如(3)所示)。
在一个实施例中,上述算法假设存在至少一个坐标, 一个光线包中所 有方向的光线在该坐标下都具有相同的符号,并且上述算法使用具有最大 绝对值的坐标。这个条件远远弱于其它加速结构遍历算法(例如,每个坐标
的所有方向都具有相同的符号)。如果一个包的光线没有主导(prevalent) 方向,则可以使用现有技术的分割技术,尽管这样的光线包很少出现(对于 初级光线来说永远不会出现)。在至少一个实施例中,对最主导的轴的选择 不会影响计算的精确度,而会给算法带来改进的性能。
在一个实施例中,确定所有多边形顶点是否位于至少一个平截头体平 面之外可以涉及对每个多边形顶点使用单指令多数据(SIMD)乘法和加法 运算。如图6所示,平截头体的底平面由三个点[Xo(),yo。,Zo0]、 [Xoo,y(M,zoo] 和[Xm, y,。, Zu)]定义,它的法线由以下叉乘积给出
nb = ([xio, yio, z10] - [x00,y00,z00]) x ([x00,y01,z00] — [x00,y00,z00]), 其可被简化为
nb = [(yo广yoo) (zoo-zio), 0, (x00-x10) (yoo-yoi)]
因为[x。。, y。Q, zo。]位于该平截头体平面中,所以对于任何给定的顶点v = - [X()(),yoo,ZcK)])为负,那么任何给 定的顶点V = [VX, Vy, Vz]必然位于该平截头体平面之外(并且因此位于平截 头体之外)。这个关系可以被扩展并简化为以下表达式(yo厂yoo) (vz (x10—x00)+x00 z10—x10 z00+vx (z00—z10》
在一个实施例中,因为这个表达式的绝对值不是必需的而只有它的符
号是必需的,所以第一个乘数(y(n-y。。)可以被忽略,因为它总是正的。上 述计算可以针对所有四个平截头体平面进行重复,并且由四元素向量来表 示(例如,便于SIMD处理)。在一个实施例中,这可以得出如下算法,用
于检测多边形的顶点与平截头体的分隔
(1) 对于每个光线包,每次该光线包遍历经过一个节点(包围盒)时根据
以下方程来计算两个SIMD向量qo和q1: dx = x10 - x00
q0= [Xoo z10画x10 z00, x10 y01 - x00 y", x10 z01 - x00 zu, x00 y10 - x10 y00] / dx qi = [z0o - z10, yu - y01, Zn - z01, y00 - y10] / dx
(2) 对于每个顶点v = [vx, vy, vz], SIMD变量的四个元素、距离d = [vz, -vy, -vz, vy] + [vx, vx, vx, vx] ql + q0将会与到四个平截头体平面的距离成正 比。
(3) 如果该距离中的至少一个元素对于所有多边形顶点都是负的,那么 可以认为多边形与平截头体被相应的平截头体平面分隔开,在一个实施例 中,这可以通过使用掩码提取操作(例如"MOVEMSK")来进行确定。
在一个实施例中,在上述方程中可以将qo和q,除以dx,以通过将存 储项的个数从三个减少到二个,获得更好的存储器组织和运行时间性能。 在一个实施例中,可以同时执行图7所描述的操作和光线包裁剪操作。在 一个实施例中,kd-树被用作加速结构,本文描述的技术可以涉及为所有非 空的叶节点来存储节点的包围盒的坐标,以及一起存储其它节点数据。在 另一些实施例中,可以动态地或"在运行中(onthefly)"确定包围盒坐标。
在一个实施例中,根据诸如图7中的操作710中的技术,可以将那些 其顶点与平截头体分开的三角形排除。在确定平截头体的同时,还可以确 定与平截头体的角相对应的4个光线所组成的包。如果在参照图7的操作710所讨论的三个条件中的任何一个对于所有四个光线都不成立,那么可 以确定平截头体不与三角形相交。在一个实施例中,如果所有角光线都与 三角形相交,那么针对该光线包中的所有光线的孔径检査可以省略。
除了考虑四个平截头体平面之外,实施例还可以通过考虑近平截头体 平面和远平截头体平面来消除不必要的测试。近平面与光线包的主导轴是 垂直的并且穿过光线的原点,在该原点处,沿主导轴的正方向的光线具有 最小主导坐标值,而对于负方向则具有最大坐标值。平截头体的四条角光 线与这个平面的交点可以被用来清除那些严格位于光线束后的三角形。同 样地,在一个实施例中,如果四条平截头体角光线全部都与一个三角形相 交,那么计算出的距离可以被用来清除在该三角形后面的所有三角形。在 一些实施例中,与远平面有关的裁剪的效果可以取决于场景中三角形的尺 寸。
可以由存储在机器可读介质上的代表数据来实现至少一个实施例的一 个或多个方面,该代表数据代表了处理器内的多种逻辑,当被机器读取时, 该代表数据会导致机器制造用于执行本文描述的技术的逻辑。这些被称为 "IP核"的代表数据可以被存储在有形的机器可读介质("带")上,并且 被提供给不同的客户或生产设施,以便加载到可真正制造逻辑或处理器的 制造机器内。
从而,以上描述了一种指导微结构存储器区域存取的方法和装置。可 以理解的是,以上的描述旨在示例,而不是限制。本领域的技术人员在阅 读和理解了以上的描述之后,可以很明显地想到其它许多实施例。因此, 本发明的保护范围应该由所附的权利要求以及这些权利要求所赋予的等效 特征的全部范围来决定。
权利要求
1、一种装置,包括逻辑,其确定在将要渲染的三维(3D)图形场景的包围盒之内的多边形是否与平截头体相交,所述平截头体由穿过所述包围盒的多条光线的多个进入点和离开点界定,其中,所述确定用于至少部分地控制被测试的光线-多边形组合的个数。
2、 根据权利要求1所述的装置,其中,如果所述逻辑确定所述多边形与所述平截头体不相交,将对于所述多条光线而言忽略所述多边形。
3、 根据权利要求1所述的装置,其中,加速结构包含由3D盒界定的 节点,将所述3D盒与多条光线一起使用以形成所述平截头体。
4、 根据权利要求2所述的装置,其中,所述逻辑用于实现裁剪功能, 以确定所述多边形是否与所述平截头体相交。
5、 根据权利要求4所述的装置,其中,所述裁剪功能包括对与所述多 条光线相对应的信息执行单指令多数据(SIMD)运算。
6、 根据权利要求5所述的装置,其中,所述SIMD运算包括一组SIMD 运算中的至少一个运算,所述一组SIMD运算包括打包的乘加指令、打 包的乘法指令和打包的加法指令。
7、 根据权利要求l所述的装置,其中,所述逻辑包括3D图形加速集 成电路。
8、 根据权利要求7所述的装置,其中,所述3D图形加速集成电路包 括用于对光线跟踪算法进行加速的逻辑。
9、 一种方法,包括选择用于对三维(3D)图形对象进行渲染的一组光线; 为所述对象构建包括多个包围盒的加速结构; 确定所述光线与加速结构的包围盒的近平面和远平面的交点; 形成平截头体,其包含包围盒与多条光线的相交部分; 确定多边形的任何顶点是否都位于平截头体的平面之外,其中所述平 截头体的边界由所述光线定义;排除与所述平截头体不相交的多边形,不对其进行进一步的处理。
10、 根据权利要求9所述的方法,其中,确定多边形的任何顶点是否 位于四个平截头体平面中的任何平面之外包括:计算4-宽度SIMD表达式,所述表达式与到所述四个平截头体平面的距离成正比。
11、 根据权利要求IO所述的方法,其中,针对所有多边形顶点的所计 算的SIMD表达式的符号用于确定是否所有顶点都在至少一个平截头体平 面之外。
12、 根据权利要求9所述的方法,其中,与包内光线的主导方向相垂 直的近平面和远平面形成了两个额外的平截头体平面。
13、 根据权利要求9所述的方法,其中,在多边形平面内执行进一步 的测试,以确定所述平截头体与所述多边形是否被至少一个多边形边缘分 隔开。
14、 根据权利要求10所述的方法,还包括执行单指令多数据(SIMD) 运算,以确定所述平截头体与所述多边形的分隔。
15、 根据权利要求13的方法,其中,所述SIMD运算包括一组SIMD 运算中的至少一个运算,所述一组SIMD运算包括打包的乘加指令、打包的乘法指令和打包的加法指令。
16、 根据权利要求9所述的方法,还包括执行光线跟踪算法,其中, 从进一步处理中排除掉多个光线-三角形相交测试。
17、 根据权利要求16所述的方法,还包括对3D对象进行渲染。
18、 一种系统,包括存储器,其用于存储三维(3D)图形对象的纹理;图形设备,其用于将所述纹理应用到所述3D图形对象上,所述图形 设备包括剔除逻辑,在将所述纹理应用到与平截头体相交的多个三角形上 之前,所述剔除逻辑从包围盒中剔除与所述包围盒内的平截头体不相交的 多个三角形;显示控制器,其用于将所述对象投影到显示设备上。
19、 根据权利要求18所述的系统,其中,所述存储器用于存储加速结 构,所述加速结构包括与所述包围盒相对应的至少一个节点。
20、 根据权利要求18所述的系统,其中,所述加速结构包括与多个包 围盒相对应的多个节点,所述多个包围盒与所述3D图形对象相对应。
21、 根据权利要求18所述的系统,其中,至少部分地使用所述剔除逻 辑来控制在对所述加速结构进行遍历时的计算量。
22、 根据权利要求21所述的系统,还包括能够执行剔除指令的至少一 个处理器核。
全文摘要
一种用于提高光线跟踪性能的技术。在一个实施例中,不对那些与特别创建的平截头体不相交的多边形进行进一步的光线-三角形测试,从而实现与给定场景相对应的加速结构的更有效率的遍历。
文档编号G06T15/06GK101527052SQ200910118299
公开日2009年9月9日 申请日期2009年3月3日 优先权日2008年3月3日
发明者A·列舍托夫 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1