用于混合光线跟踪系统的片段着色器及操作方法

文档序号:6580709阅读:161来源:国知局
专利名称:用于混合光线跟踪系统的片段着色器及操作方法
技术领域
本发明涉及混合光线跟踪操作,且更具体地涉及用于混合光线跟踪系 统的片段着色器及其操作方法。
背景技术
在现有技术中已知的是混合光线跟踪作为光栅化和光线跟踪的结合 过程。首先,对不包括任何反射或者折射表面的片段(例如像素)进行光 栅化。随后,对于包括反射或者折射表面的像素执行光线跟踪操作。在光 线跟踪操作期间,通常略过初级光线,并且从用于计算对渲染图像的反射 或者折射的相交表面点产生次级光线。将光栅化的以及进行光线跟踪的图 像进行混合或者合并以便形成合成图像。
在最初的光栅化过程中,执行两个光栅化才乘作。在第一个操作中,对 没有被光线跟踪的像素进行光栅化。在第二个操作中,对针对像素的图元 标识符进行光栅化。这两步光栅化过程延迟了光栅化图像的产生和全部合 成图像的渲染。
因此,所需要的是在混合光线跟踪系统中用于减少光栅化延迟的系统 和方法。

发明内容
提供了 一种用于混合光线跟踪系统的片段着色器和操作方法。该方法 包括确定是否对片段进行光栅化或者光线跟踪。如果确定了要对片段进行 光栅化,则将针对该片段的预定值存储在光栅化目标中,该预定值表示从 光线跟踪操作中排除该片段。如果确定了要对片段进行光线跟踪,则将该
片^a的图元标识符存储在光栅化目标中。
才艮据以下的附图和示例性实施例的详细描述,将更好地理解这些和其 它的特征。


图1示出根据本发明的一个实施例的示例性片段着色过程。
图2示出结合了根据本发明一个实施例的图1的片段着色过程的示例
性片段着色过程。
图3示出结合了根据本发明一个实施例的图1和图2的片段着色过程 的示例性混合光线跟踪方法。
图4示出图1-3的方法实现根据本发明的应用的示例性系统。
具体实施例方式
图1示出根据本发明的一个实施例的示例性片段着色过程100。本方 法过程包括确定是否对片段(例如像素)进行光栅化或者通过一条或者多 条初级光线相交(此处称为"光线跟踪,,的处理),以及由此才艮据该确定结 果将后续的处理应用于该片段。如此处使用的,术语光栅化是指用于将颜 色值或者矢量转换成光栅格式的任何」技术。另外此处,作为混合光线跟踪 领域内已知的,术语"光线跟踪操作"是指涉及通过一条或者多条初级光 线的片段相交的光线跟踪操作。
在102,片段处理开始,并且在104确定出是否要将片段进行光栅化 或者光线跟踪。如果确定了将该片段包括在光栅化操作中,则在106产生 预定值并且将该预定值存储在光栅化目标中,该预定值表示不对该片段进 行光线跟踪。在一个实施例中,通过操作106产生的该预定值为-1,然而, 也可以用任意值或者标记来指示从根据本发明的光线跟踪操作中排除该片 段。在具体实施例操作106中,分配给该片段具有真状态或者假状态的"光 线跟踪属性",通过预定值(例如-1 )指示的假状态标示出对该片段不进行 光线跟踪片段。
如果在104确定了对该片段进行光线跟踪,则在108将片段的图元标 识符存储在针对该片段的光栅化目标中。例如,如果该片段包括三角形图 元,则过程108包括将三角形ID存储在针对该片段的光栅化目标(例如, 三角形ID缓沖区)中。本领域的普通技术人员应该理解,在片段中可以包 括不同的几何图元,例如多边形、球形、线、点等,并且可以将这种图元
术中^知的J还应该理解可以结^二个或者^意数量的片段以形成像素。
在104所作的确定可以使用在光姻h化和光线跟踪操作之间进行区分的 任意技术来实现。例如,如果确定该片段在反射或者折射表面内,则可以 确定将该片段包括在光线跟踪操作内。本领域的普通技术人员应该理解,可以应用用来确定片段是否包括在光栅化还是光线跟踪操作中的其它方 法。
图2示出结合了根据本发明一个实 例的图1的片段着色过程的示例 性片段着色器过程。操作202-208与图1的操作102-108相似。在202,片 段处理开始,并且在204确定出是否将选择出的片段进行光栅化或者光线 跟踪。如果确定了将该片段包括在光栅化操作中,则在206产生预定值并 且将该预定值存储在第一光栅化目标中,该预定值表示不对该片段进行光 线跟踪。如果在204确定了对该片段进行光线跟踪,则在208将该片段的 图元标识符存储在针对该片段的第一光栅化目标中。在实践中,还存在第 三种可能性,即对选择的片段既不进行光栅化也不进行光线跟踪。例如在 光栅化期间,着色器可以决定丟弃该片段。如果当前图元没有被标记为进 行光线跟踪并且被针对光栅化的着色器所丢弃,则颜色值保持不变。图元 标识符可以实现为顶点属性。在该示例中,针对每个图元的片段着色器, 可以指定图元为一致的。或者,针对几何着色器,指定一系列图元的第一 图元标识符为一致的。几何着色器可以产生每个图元的后续图元标识符。
在对片段进行光栅化的进一 步示例性条件下,方法200还包括针对选 择的片段产生着色操作的操作210,由此计算针对该片段的光栅化颜色值 并且将该光栅化颜色值存储在针对该片段的第二光栅化目标(例如颜色緩 冲区)中。根据该操作可以实现任何着色操作。
在对片段光线跟踪的进一步示例性条件下,方法200还包括才喿作212, 其中将零颜色空间值存储在针对该片段的第二光栅化目标(例如颜色緩沖 区)中。在具体的实施例中,零颜色空间值是RGBA (0, 0, 0, 0)的颜 色值,即完全透明黑色。这种颜色空间值的选择有助于进行了光栅化及光 线跟踪的片段的合成以便产生最终帧,这是由于非光栅化片段和非光线跟 踪片段将作为黑色背景而渲染。然而,本领域的普通技术人员应该理解, 根据不同的合成方案可以实现不同的零颜色空间值(和/或不同的颜色空间 格式)。在具体的实施例中,对于包括在该片段内的每个图元调用一次片段 着色器200。例如,针对被分配了片段着色器200的像素内包括的N个三 角形中的每一个,可以执行操作202-212。又一个示例,如果N个三角形 覆盖该片段,则针对每个片段可以执行操作202-212多达N次。
应该理解,在混合光线跟踪才喿作中会选择一些 段用于光栅化,并且 会选择一些片段用于光线跟踪。因此, 一连串操作202、 204、 206和210 (其中将第一片段准备用于光栅化)可以在一连串操作202、 204、 208和212 (其中将第二片段准备用于光线跟踪)之前(或者之后)执行。在该方 式中,如此处进一步描述地,针对在混合光线跟踪操作中的光栅化或者光 线跟踪来处理多个片段(例如在帧内的全部片段)。
图3示出结合了根据本发明一个实施例的图1和2的片段着色过程的 示例性混合光线跟踪方法(或者"光线跟踪器")。根据该方法,使用图元 的光栅化以便定位可查看的(即最近的近平面)片段,并且执行着色以便 计算针对该片段的颜色值。如以下进一步解释的,由于对于通常包括在光 线跟踪算法中的初级光线的遍历才喿作(traversal operation)被光栅化步骤所 替代,因此光线跟踪器300省略第一光线跟踪步骤。所有进一步的遍历步 骤都像往常一样由光线跟踪器来完成。
方法300表示方法200的延续,其中要么才艮据其颜色值(操作210), 要么根据该片段的图元标识符(才喿作208),已经对特定片段进行了光栅化。 在302,查询该片段以便确定是否要对该片段进行光线跟踪。在具体的实 施例中,查询其中一个或者全部两个光栅化目标以便确定光栅化目标中是 否存储了如以上记载的不进行光线跟踪的值。在另一个实施例中,对于图 元标识符的存在而搜索光栅化目标,这样将指示要对该片段进行光线跟踪。 在该过程的一个示例性实施例中,该片段的三角形ID緩冲区被提供用于处 理的光线跟踪发动引擎,要么用于检测不进行光线跟踪值的存在/不存在, 要么用于检测图元标识符的存在/不存在。
如果在302确定了不对该片4殳进行光线跟踪(例如,发现针对该片段 的非光线跟踪值),则在304该方法结束。如果在302确定了要对该片段进 行光线跟踪(例如,发现了图元标识符,或者不存在针对该片段的非光线 跟踪值),则在306该方法继续,其中光线跟踪器执行相交和着色操作。更 具体地,由于操作208提供了该数据,即图元标识符指定了通过针对该主 题片段的光线相交的图元,因此省略了通常作为光线跟踪操作的一部分而 执行的遍历操作。通过光线跟踪器300使用由才喿作208提供的数据,以便 计算具有几何形状的光线的相交,并且计算针对该片段的光线跟踪颜色空 间值。由于和在光线跟踪遍历操作中使用的对数搜索(例如在包含IO, 000 个三角形的场景中)相比,过程208的运行速度通常明显会更快以识别最
近的近平面片段,因此本发明的方法在渲染中提供了相比传统方法提高的 速率和计算的效率。
在具体的实施例中,对于图像的每个可见片段调用 一次混合光线跟踪 器300。在这样的示例中,在逐个片段基础上执行操作302-308,并且针对每个片段计算一次光线跟踪的颜色值(如有的话,对于每个有条件的操作
304)。又一个示例,可以调用操作204、 206和210以提供具有如上定义的 光栅化颜色空间值的第一片段,并且可以重复操作204、 208、 212、 302 和306以便提供第二片段,每个第二片段具有如以上定义的光线跟踪颜色 值。通过组合(例如混合、合并或者增加)这些片段可以获得两个片段的 合成图^f象。既没有进行光栅化又没有进行光线跟踪的片段保留在背景颜色 中,该背景颜色例如是在一个示例性实施例中的完全透明黑色RGBA (0, 0, 0, 0)。
如可以从图3看到的,混合光线跟踪器可操作用于在操作210中调用 和执行用户的片段着色器程序,同时也可操作用于为将要进行光线跟踪的 片段提供图元标识符(操作208)。因此用户能够对所需要的场景进行光栅 化,并且然后可以针对随后的光线跟踪才乘作U乘作306)查询三角形ID緩 冲区U乘作304)。在该方式中,混合光线跟踪器300为用户提供全部两种 片段类型的透明处理。而且,每种片段类型的光栅化仅发生一次,要么通 过针对光栅化的颜色空间值片段的操作206和210,要么通过针对光线跟 踪的颜色空间值片段的操作208和212,。在方法100、 200和300中的操 作均可以以任何合适的编程语言实现为可执行的指令,这些语言中的一些 例子如OpenGL着色语言(GLSL )、 Cg着色语言、高级着色器语言(HLSL ) 或者计算统一i殳备架构(CUDATM) GPU编程语言,并且和这些语言各自 的编译器一起使用。另外,借助硬件或者固件,例如借助专用集成电路 (ASIC)、可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)或者其 它的这类装置,可以执行所示的操作。
图4示出才艮才居图1-3的方法应用本发明的示例性系统400。系统400 包括图形处理子系统420和输出设备440 (诸如监视器或者打印机)。图形 处理子系统420包括处理器422、存储器接口 424、帧缓沖器425以及扫描 输出处理器426。处理器422包括可操作用于执行如图1-3中示出的任一 或者全部操作的着色器模块423。帧緩冲器426可搡作地耦合到处理器422, 用于接收针对每帧的光栅化和光线跟踪片段值,以及用于通过存储器接口 424和链接430 (例如DVI链接)将每帧的合成图像读出到输出设备440。
在特定的实施例中,着色器模块423可操作用于存储指令代码以用于 分别执行图1和图2的片段着色器程序100和200。在一个实施例中,片 段着色^f莫块423包括用于执行#:作104-108和204-208的装置,其中确定 片段要进行光栅化或者光线跟踪,用于如果对片段进行光栅化则将针对该片段的预定值存储在光栅化目标中的装置,该预定值表示从光线跟踪操作 中排除该片段,以及用于如果对该片段进行光线跟踪则将该片段的图元标
识符存储在光栅化目标中的装置。片段着色模块423还包括用于执行操作 206和210的装置,其中执行针对该片段的着色操作以便计算该片段的光 栅化颜色值,并且将该片段的光栅化颜色值存储在第二光栅化目标中。片 段着色模块423还包括用于将零颜色值存储在第二光栅化目标中的装置。 该片段着色模块还可以包括用于执行在图3中示出并且在此处描述的执行 混合光线跟踪操作302-306的装置。
本领域的普通技术人员容易理解的是,以硬件、软件、固件或者这些 实现方式的适当组合可以实现所描述的过程和才喿作。此外,当计算机可读 指令代码驻留在计算机可读介质上时,也可以实现所描述的过程和才乘作中 的一些或者全部,指令代码可操作用于控制其它这样的可编程i殳备的计算 机以便执行预期的功能。其中驻留了指令代码的计算机可读介质可以采用 各种形式,例如移动硬盘、易失或者非易失存储器等,或者已经加上调制 信号的载波信号,该调制信号对应于用于执行所描述操作的指令。
在本发明的具体实施例中,存储器可操作用于存储用于执行在图1、 2 和3中示出的任何操作的指令。存储器可以采用各种形式,例如,易失或 者非易失形式的移动硬盘、嵌入式存储器等,并且可以将存储器包括在多 种不同系统内,例如计算机系统、嵌入式处理器、图形处理器或者诸如图 形加速卡的图形处理子系统。
术语"一"或者"一个,,用于表示一个或者多于一个由此描述的特征。 此外,术语"耦合的"或者"连接的"涉及直接地或通过一个或者多个插 入结构或者物质相互通信的特征。在方法流程图中涉及的梯:作和动作次序 是示例性的,且可以以不同的次序进行才喿作和动作,并且同时进行两个或 者多个操作和动作。在权利要求中包括的附图标记(若有的话)用于指出 所要求保护的特征的一个示例性实施例,并且所要求保护的特征不限于通 过附图标记指出的具体实施例。所要求保护的特征的范围应该由权利要求 的文字所限定,就如同此处没有参考标记一样。这里引用的全部公开出版 物、专利和其它文献通过援引的方式将其全部合并于此。关于在任何这些 合并的文献和本专利文本之间有任何不一致的^吏用这一点来说,应该参照 在本专利文文中的使用。
本发明的前述示例性实施例已经足够详细地进行了描述,以便能够使
本领域的普通技术人员实施该发明,并且应该理解的是也可以对实施例进行组合。所选择的进行描述的实施例是为了最好地解释本发明的原理及其 实践应用,由此能够使本领域的其它技术人员最好地使用各种实施例和各 种变型形式下的发明,以适合于所设想的特定应用。应当说明的是,通过 此处附属的权利要求单独地来限定本发明的范围。
权利要求
1.一种用于片段着色的方法,包括确定是否对片段进行光栅化或者光线跟踪;如果对所述片段进行光栅化,则将针对所述片段的预定值存储在光栅化目标中,所述预定值表示从光线跟踪操作中排除所述片段;以及如果对所述片段进行光线跟踪,则将所述片段的图元标识符存储在光栅化目标中。
2. 根据权利要求1所述的方法,其中对所述片段进行光栅化,由此所述光栅化目标包括存储所述预定值的第一光栅化目标,所述方法还包括对于所述片段执行着色操作以便计算所述片段的光栅化颜色值;以及将所述片段的所述光栅化颜色值存储到第二光栅化目标中。
3. 根据权利要求1所述的方法,其中对所述片段进行光线跟踪,由此所述光栅化目标包括存储所述片段的所述图元标识符的第一光栅化目标,所述方法还包括将零颜色值存储到第二光栅化目标中。
4. 根据权利要求2所述的方法,还包括查询所述第一光栅化目标;以及基于存储在所述第 一光栅化目标中的所述预定值,从光线跟踪操作中排除所述片段。
5. 根据权利要求3所述的方法,还包括查询所述第一光栅化目标;以及计算针对所述片段的光线跟踪颜色值。
6. 根据权利要求5所述的方法,其中计算针对所述片段的光线跟踪颜色值包括,使用存储在所述第二光栅化目标中的所述片段的所述图元标识符作为用于光线跟踪操作的初级光线数据。
7. 根据权利要求2所述的方法,还包括对于要进行光线跟踪的第二片段,执行下列操作将所述第二片段的图元标识符存储在第三光栅化目标中;将零颜色值存储在第四光栅化目标中;以及计算针对所述第二片段的光线跟踪颜色值;以及组合所述第 一 片段和所述第二片段以获得合成图像。
8. —种驻留在计算机可读介质上的计算机程序产品,所述计算机程序产品可操作用于执行用来执行片段着色的指令,所述计算机程序产品包括指令代码用于确定是否对片段进行光栅化或者光线跟踪;如果对该片段进行光栅化,则将针对所述片段的预定值存储在第 一光栅化目标中,所述预定值表示从光线跟踪操作中排除所述片段;以及如果对该片段进行光线跟踪,则将所述片段的图元标识符存储在第一光栅化目标中。
9. 根据权利要求8所述的计算才A4呈序产品,其中对该片段进行光栅化,由此所述光栅化目标包括存储所述预定值的第一光栅化目标,所述计算机程序产品还包括指令代码用于执行针对所述片段的着色操作以计算所述片段的光栅化颜色值;以及将所述片段的所述光栅化颜色值存储到第二光栅化目标中。
10. 根据权利要求8所述的计算机程序产品,其中对该片段进行光线跟踪,由此所述光^H匕目标包括存储所述片^:的所述图元标识符的第一光栅化目标,所述计算机程序产品还包括用于将零颜色值存储到第二光栅化目标的指令代码。
11. 根据权利要求9所述的计算机程序产品,还包括指令代码用于查询所述第一光栅化目标;以及根据存储在所述第一光栅化目标中的所述预定值,从光线跟踪才喿作中排除所述片段。
12. 根据权利要求IO所述的计算机程序产品,还包括指令代码用于查询所述第一光栅化目标;以及计算针对所述片段的光线跟踪颜色值。
13. 根据权利要求12所述的计算机程序产品,其中用于计算所述片段的光线跟踪颜色值的所述指令代码包括,使用存储在所述第二光栅化目标中的所述片段的所述图元标识符作为针对光线跟踪操作的初级光线数据的指令代码。
14. 根据权利要求9所述的计算机程序产品,还包括对于要进行光线跟踪的第二片段执行以下操作的指令代码将所述第二片段的图元标识符存储在第三光栅化目标中;将零颜色值存储在第四光栅化目标中;以及计算针对所述第二片段的光线跟踪颜色值;以及组合所述第 一 片段和所述第二片段以获得合成图像的指令代码。
15. —种片段着色模块,包括用于确定是否对片段进行光栅化或者光线跟踪的装置;如果对所述片段进行光栅化,用于将针对所述片段的预定值存储在光栅化目标中的装置,所述预定值表示从光线跟踪操作中排除所述片段;以及如果对所述片段进行光线跟踪,用于将所述片段的图元标识符存储在光栅化目标中的装置。
16. 根据权利要求15所述的片段着色模块,其中对所述片段进行光栅化,由此所述光栅化目标包括存储所述预定值的第一光栅化目标,所述片段着色模块还包括用于执行针对所述片段的着色操作以计算所述片段的光栅化颜色值的装置;以及用于将所述片段的所述光栅化颜色值存储在第二光栅化目标中的装置。
17. 根据权利要求15所述的片段着色模块,其中对所述片段进行光线跟踪,由此所述光栅化目标包括存储所述片段的所述图元标识符的第一光栅化目标,所述片段着色模块还包括用于将零颜色值存储在第二光栅化目标中的装置。
18. 根据权利要求16所述的片段着色模块,还包括用于查询所述第一光栅化目标的装置;以及用于根据存储在所述第 一光栅化目标中的所述预定值从光线跟踪操作中排除所述片段的装置。
19. 根据权利要求17所述的片段着色模块,还包括-.用于查询所述第一光栅化目标的装置;以及用于计算针对所述片段的光线跟踪颜色值的装置。
20. 根据权利要求19所述的片段着色器模块,其中用于计算针对所述片段的光线跟踪颜色值的装置包括,用于使用存储在所述第二光栅化目标中的所述片段的所述图元标识符作为针对光线跟踪操作的初级光线数据的装置。
21. 根据权利要求16所述的片段着色器模块,还包括对于要进行光线跟踪的第二片段,用于将所述第二片段的图元标识符存储在第三光栅化目标中的装用于将零颜色值存储在第四光栅化目标中的装置;以及 用于计算针对所述第二片段的光线跟踪颜色值的装置;以及用于组合所述第 一片段和所述第二片段以获得合成图像的装置。
全文摘要
本发明提供了一种用于混合光线跟踪系统的片段着色器及操作方法。该方法包括确定是否对片段进行光栅化或者光线跟踪。如果确定了对片段进行光栅化,则将针对该片段的预定值存储在光栅化目标中,该预定值表示从光线跟踪操作中排除该片段。如果确定了对该片段进行光线跟踪片段,则将该片段的图元标识符存储在光栅化目标中。
文档编号G06T15/00GK101685548SQ200910176688
公开日2010年3月31日 申请日期2009年9月25日 优先权日2008年9月26日
发明者马库斯·特沃拉斯 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1