首页 / 专利库 / 显示技术 / 分辨率 / 用于光线跟踪应用中的树遍历的开始节点确定

用于光线跟踪应用中的树遍历的开始节点确定

阅读:2发布:2020-12-01

专利汇可以提供用于光线跟踪应用中的树遍历的开始节点确定专利检索,专利查询,专利分析的服务。并且至少一个处理器可在分级数据结构中组织多个图元。所述至少一个处理器可将与所述分级数据结构的非根 节点 相关的多个 包围体 光栅 化成 离屏呈现目标。所述至少一个处理器可确定所述多个包围体中的与光线相交的包围体。所述至少一个处理器可确定与所述包围体相关的所述分级数据结构的非根节点作为所述分级数据结构中开始所述分级数据结构的遍历的开始节点。所述至少一个处理器可从所述开始节点开始遍历所述分级数据结构以确定与所述光线相交的所述图元。,下面是用于光线跟踪应用中的树遍历的开始节点确定专利的具体信息内容。

1.一种方法,其包括:
通过至少一个处理器,在分级数据结构中组织多个包围体
通过所述至少一个处理器,将作为像素的与所述分级数据结构的非根节点相关联的所述多个包围体的表示光栅化成离屏呈现目标;
通过所述至少一个处理器并至少部分地基于对光栅化成映射到光线的所述离屏呈现目标的所述像素中的一者的色值进行采样,确定所述分级数据结构的非根节点作为所述分级数据结构中开始所述分级数据结构的遍历的开始节点;以及
通过所述至少一个处理器,从所述开始节点开始遍历所述分级数据结构以确定所述光线是否与由所述多个包围体中的一者所包围的图元相交。
2.根据权利要求1所述的方法,其进一步包括:
通过所述至少一个处理器,确定与所述像素中的所述一者相关联的所述分级数据结构的节点作为所述开始节点。
3.根据权利要求1所述的方法,其进一步包括:
通过所述至少一个处理器,确定所述多个包围体的所述表示中的两个或更多个表示重叠;
通过所述至少一个处理器,以最低共同原始表示的色值填充所述多个包围体的所述表示中的所述两个或更多个表示的重叠区;以及
通过所述至少一个处理器,确定与所述最低共同原始表示的所述色值相关联的所述分级数据结构的节点作为所述开始节点。
4.根据权利要求1所述的方法,其进一步包括:
通过所述至少一个处理器,以相比于所述多个包围体相对较低的分辨率,将所述多个包围体的所述表示光栅化成所述离屏呈现目标。
5.根据权利要求1所述的方法,其中:
所述多个包围体与少于所述分级数据结构的全部所述非根节点的节点相关联。
6.一种经配置以处理图形数据的设备,其包括:
存储器,其经配置以存储在分级数据结构中组织的多个包围体;
至少一个处理器,其经配置以:
将作为像素的与所述分级数据结构的非根节点相关联的所述多个包围体的表示光栅化成离屏呈现目标;
至少部分地基于对光栅化成映射到光线的所述离屏呈现目标的所述像素中的一者的色值进行采样,确定所述分级数据结构的非根节点作为所述分级数据结构中开始所述分级数据结构的遍历的开始节点;以及
从所述开始节点开始遍历所述分级数据结构以确定所述光线是否与由所述多个包围体中的一者所包围的图元相交。
7.根据权利要求6所述的设备,其中所述至少一个处理器进一步经配置以:
确定与所述像素中的所述一者相关联的所述分级数据结构的节点作为所述开始节点。
8.根据权利要求6所述的设备,其中所述至少一个处理器进一步经配置以:
确定所述多个包围体的所述表示中的两个或更多个表示重叠;
以最低共同原始表示的所述色值填充所述多个包围体的所述表示中的所述两个或更多个表示的重叠区;以及
确定与所述最低共同原始表示的所述色值相关联的所述分级数据结构的节点作为所述开始节点。
9.根据权利要求6所述的设备,其中所述至少一个处理器进一步经配置以:
以相比于所述多个包围体相对较低的分辨率,将所述多个包围体的所述表示光栅化成所述离屏呈现目标。
10.根据权利要求6所述的设备,其中所述多个包围体与少于所述分级数据结构的全部所述非根节点的节点相关联。
11.一种设备,其包括:
用于在分级数据结构中组织多个包围体的装置;
用于将作为像素的与所述分级数据结构的非根节点相关联的所述多个包围体的表示光栅化成离屏呈现目标的装置;
用于至少部分地基于对光栅化成映射到光线的所述离屏呈现目标的所述像素中的一者的色值进行采样,确定所述分级数据结构的非根节点作为所述分级数据结构中开始所述分级数据结构的遍历的开始节点的装置;以及
用于从所述开始节点开始遍历所述分级数据结构以确定所述光线是否与由所述多个包围体中的一者所包围的图元相交的装置。
12.根据权利要求11所述的设备,其进一步包括:
用于确定与所述像素中的所述一者相关联的所述分级数据结构的节点作为所述开始节点的装置。
13.根据权利要求11所述的设备,其进一步包括:
用于确定所述多个包围体的所述表示中的两个或更多个表示重叠的装置;
用于以最低共同原始表示的色值填充所述多个包围体的所述表示中的所述两个或更多个表示的重叠区的装置;以及
用于确定与所述最低共同原始表示的所述色值相关联的所述分级数据结构的节点作为所述开始节点的装置。
14.根据权利要求11所述的设备,其进一步包括:
用于以相比于所述多个包围体相对较低的分辨率,将所述多个包围体的所述表示光栅化成所述离屏呈现目标的装置。
15.根据权利要求11所述的设备,其中所述多个包围体与少于所述分级数据结构的全部所述非根节点的节点相关联。
16.一种存储指令的非易失性计算机可读存储介质,当执行时,所述指令使一或多个可编程处理器进行以下操作:
通过至少一个处理器,在分级数据结构中组织多个包围体;
通过所述至少一个处理器,将作为像素的与所述分级数据结构的非根节点相关联的所述多个包围体的表示光栅化成离屏呈现目标;
通过所述至少一个处理器并至少部分地基于对光栅化成映射到光线的所述离屏呈现目标的所述像素中的一者的色值进行采样,确定所述分级数据结构的非根节点作为所述分级数据结构中开始所述分级数据结构的遍历的开始节点;以及
通过所述至少一个处理器,从所述开始节点开始遍历所述分级数据结构以确定所述光线是否与由所述多个包围体中的一者所包围的图元相交。
17.根据权利要求16所述的非易失性计算机可读存储介质,其进一步包括指令,当执行时,所述指令使一或多个可编程处理器进行以下操作:
确定与所述像素中的所述一者相关联的所述分级数据结构的节点为所述开始节点。
18.根据权利要求16所述的非易失性计算机可读存储介质,其进一步包括指令,当执行时,所述指令使一或多个可编程处理器进行以下操作:
确定所述多个包围体的所述表示中的两个或更多个表示重叠;
以最低共同原始表示的所述色值填充所述多个包围体的所述表示中的所述两个或更多个表示的重叠区;以及
确定与所述最低共同原始表示的所述色值相关联的所述分级数据结构的节点作为所述开始节点。
19.根据权利要求16所述的非易失性计算机可读存储介质,其进一步包括指令,当执行时,所述指令使一或多个可编程处理器进行以下操作:
以相比于所述多个包围体相对较低的分辨率,将所述多个包围体的所述表示光栅化成所述离屏呈现目标。
20.根据权利要求16所述的非易失性计算机可读存储介质,其中所述多个包围体与少于所述分级数据结构的全部所述非根节点的节点相关联。

说明书全文

用于光线跟踪应用中的树遍历的开始节点确定

技术领域

[0001] 本发明涉及图形处理,包含遍历分级数据结构以确定用于光线跟踪的光线-图元的相交。

背景技术

[0002] 在计算机图形学中,光线跟踪是跟踪穿过三维(3D)场景的3D光线和发现光线-图元相交的方法。为了加速发现光线-图元相交的过程,场景几何以加速数据结构(ADS)形式布置,所述加速数据结构以分级方式将场景图元(例如,三形)归类。ADS可通过在场景图元的分级结构上执行光线相交测试以递归方式遍历,从而确定与光线相交的场景图元。

发明内容

[0003] 并没有从根节点遍历ADS,图形处理单元(GPU)可替代地从内部节点开始ADS的遍历,由此减少GPU可在分级结构上执行的光线相交测试的次数。GPU可确定ADS的内部节点,通过将与分级数据结构的内部节点相关的包围体的子集光栅化成离屏呈现目标,从所述内部节点开始遍历。GPU可根据从离屏呈现目标取样的色值确定与光线相交的内部节点的节点索引,并且可从那一节点开始ADS的遍历,由此减少GPU可执行以遍历ADS的光线相交测试的次数。
[0004] 在本发明的一个实例中,方法可包含通过至少一个处理器,在分级数据结构中组织多个图元。方法可进一步包含通过至少一个处理器,将与分级数据结构的非根节点相关的多个包围体光栅化成离屏呈现目标。方法可进一步包含通过至少一个处理器并基于将多个包围体光栅化成离屏呈现目标,确定分级数据结构的非根节点为开始分级数据结构的遍历的分级数据结构中的开始节点。方法可进一步包含通过至少一个处理器,从开始节点开始遍历分级数据结构以确定与光线相交的图元。
[0005] 在本发明的另一实例中,用于图形处理的设备可包含存储器和至少一个处理器,所述处理器经配置以:在分级数据结构中组织多个图元;将与分级数据结构的非根节点相关的多个包围体光栅化成离屏呈现目标;基于将多个包围体光栅化成离屏呈现目标,确定分级数据结构的非根节点为开始分级数据结构的遍历的分级数据结构中的开始节点;以及从开始节点开始遍历分级数据结构以确定与光线相交的图元。
[0006] 在本发明的另一实例中,用于图形处理的设备可包含用于在分级数据结构中组织多个图元的装置。设备可进一步包含用于将与分级数据结构的节点相关的多个包围体光栅化成离屏呈现目标的装置。设备可进一步包含装置,所述装置用于基于将多个包围体光栅化成离屏呈现目标,确定分级数据结构的非根节点为开始分级数据结构的遍历的分级数据结构中的开始节点。设备可进一步包含用于从开始节点开始遍历分级数据结构以确定与光线相交的图元的装置。
[0007] 在本发明的另一实例中,计算机可读存储媒体可存储指令,当执行时,所述指令使一或多个可编程处理器进行以下操作:通过至少一个处理器,在分级数据结构中组织多个图元;通过至少一个处理器,将与分级数据结构的非根节点相关的多个包围体光栅化成离屏呈现目标;通过至少一个处理器并基于将多个包围体光栅化成离屏呈现目标,确定分级数据结构的非根节点为开始分级数据结构的遍历的分级数据结构中的开始节点;以及通过至少一个处理器,从开始节点开始遍历分级数据结构以确定与光线相交的图元。
[0008] 附图和以下描述中阐述一或多个实例的细节。其它特征、目标和优点将从描述和图式,以及从权利要求书中变得显而易见。

附图说明

[0009] 图1是绘示可经配置以实施本发明的一或多个方面的实例计算装置的框图
[0010] 图2是进一步详细地绘示图1的CPU、GPU和系统存储器的实例实施方案的框图。
[0011] 图3是绘示GPU可在其上执行光线跟踪的实例场景的框图。
[0012] 图4是绘示将实例场景分区成包围体的框图。
[0013] 图5绘示具有与图4中示出的包围体和图元相关的节点的实例分级数据结构。
[0014] 图6是绘示被光栅化成实例离屏呈现目标的包围体的实例表示的框图。
[0015] 图7是绘示用于确定用于遍历实例分级树状结构以发现光线-图元相交的开始节点的实例方法的流程图

具体实施方式

[0016] 一般来说,本发明描述用于出于光线跟踪目的,通过从分级数据结构的内部节点开始场景图元的分级数据结构的遍历,确定与光线相交的图元的技术。当在图形处理单元(GPU)上遍历分级数据结构(例如,加速数据结构(ADS))时,从根节点开始分级数据结构的遍历可产生次优性能,因为此类遍历可能需要GPU在分级数据结构中执行额外的对场景图元的光线相交测试。
[0017] 并没有从根节点遍历分级数据结构,GPU可替代地从根节点以外的节点开始分级数据结构的遍历,由此减少GPU可执行的光线相交测试的次数。通过利用来自其图形处理管线的着色器单元,将与分级数据结构的内部节点和叶节点相关的包围体的子集光栅化成离屏呈现目标,GPU可确定开始遍历的分级数据结构的非根节点。根据离屏呈现目标,GPU可确定开始遍历分级数据结构的内部非根节点,由此减少GPU可执行以遍历分级数据结构的光线相交测试的次数。因为与执行光线相交测试相比,光栅化成离屏呈现目标相对地更不计算昂贵,所以与从根节点遍历分级数据结构相比,GPU可实现光线跟踪性能的大大提高。
[0018] 根据本发明的各方面,GPU可经配置以在分级数据结构中组织多个图元。GPU可进一步经配置以将与分级数据结构的非根节点相关的多个包围体光栅化成离屏呈现目标。GPU可进一步经配置以确定多个包围体中与光线相交的包围体。GPU可进一步经配置以确定与包围体相关的分级数据结构的非根节点为开始分级数据结构的遍历的分级数据结构中的开始节点。GPU可进一步经配置以从开始节点开始遍历分级数据结构以确定与光线相交的图元。
[0019] 图1是绘示可经配置以实施本发明的一或多个方面的实例计算装置的框图。如图1中所示,装置2可为计算装置,包含(但不限于)视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话和所谓的智能电话)、个人数字助理(PDA)、台式计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置及类似者。在图1的实例中,装置2可包含中央处理单元(CPU)6、系统存储器10和GPU 12。装置2还可包含显示处理器14、收发器模3、用户接口4和显示器8。收发器模块3和显示处理器14两者可为与CPU 6和/或GPU 12相同的集成电路(IC)的部分,两者可在包含CPU 6和/或GPU 12的一或多个IC的外部,或可形成于在包含CPU 6和/或GPU 12的IC外部的IC中。
[0020] 出于清晰性的目的,装置2可包含图1中未展示的额外模块或单元。例如,装置2可包含扬声器和麦克(两者均未在图1中展示)以在其中装置2为移动无线电话或扬声器(其中装置2为媒体播放器)的实例中实现电话通信。装置2还可包含摄像机。此外,装置2中所展示的各种模块和单元可不必在装置2的每个实例中。例如,在装置2为台式计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和和显示器8可在装置2外部。
[0021] 用户接口4的实例包含(但不限于)轨迹球鼠标键盘和其它类型的输入装置。用户接口4还可为触摸屏,并且可作为显示器8的部分并入。收发器模块3可包含电路以允许计算装置2和另一装置或网络之间的无线或有线通信。收发器模块3可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
[0022] CPU 6可为经配置以处理用于执行的计算机程序的指令的微处理器,例如中央处理单元(CPU)。CPU 6可包括控制装置2的操作的通用或专用处理器。用户可提供输入到装置2,以使CPU 6执行一或多个软件应用程序。在CPU 6上执行的软件应用程序可包含(例如)操作系统、字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU 6可执行用于控制GPU 12的操作的GPU驱动程序22。用户可通过一或多个输入装置(未图示)提供输入到装置
2,所述输入装置例如键盘、鼠标、麦克风、触摸板或通过用户接口4耦合到装置2的另一输入装置。
[0023] 在CPU 6上执行的软件应用程序可包含指示CPU 6以向显示器8呈现图形数据的一或多个图形呈现指令。在一些实例中,软件指令可符合图形应用程序编程接口(API),例如开放图形库 API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形呈现指令,CPU 6可将一或多个图形呈现命令发布到GPU 12(例如,通过GPU驱动程序22),以使GPU 12执行呈现图形数据中的一些或全部。在一些实例中,待呈现的图形数据可包含例如点、线、三角形、四边形、三角形带等的图形图元的列表。
[0024] GPU 12可经配置以执行图形操作,从而向显示器8呈现一或多个图形图元。因此,当CPU 6上执行的软件应用程序中的一个需要图形处理时,CPU 6可提供图形命令和图形数据到GPU 12以向显示器8呈现。图形数据可包含(例如)绘制命令、状态信息、图元信息、纹理信息等。在一些情况下,GPU 12可内置有高度平行结构,所述高度平行结构提供比CPU 6更有效的复合图形相关操作的处理。例如,GPU 12可包含经配置以通过平行方式对多个顶点像素进行操作的多个处理元件,例如着色器单元。在一些情况下,相比于使用CPU 6直接将场景绘制到显示器8,GPU 12的高度平行性质允许GPU 12更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
[0025] 在一些情况下,可将GPU 12集成到装置2的母板中。在其它情况下,GPU 12可存在于安装在装置2的母板中的端口内的图形卡上,或可以另外的方式并入在经配置以与装置2交互操作的外围装置内。GPU 12可包含一或多个处理器,例如,一或多个微处理器、专用集成电路(ASIC)、现场可编程阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。GPU 12还可包含一或多个处理器核心,以使得GPU 12可被称作多核处理器
[0026] GPU 12可直接耦合到图形存储器40。因此,GPU 12可在不使用总线的情况下从图形存储器40读取数据并将数据写入到图形存储器40。换句话说,GPU 12可使用本地存储装置而不是片外存储器在本地处理数据。此类图形存储器40可被称作片上存储器。此允许GPU 12通过消除GPU 12经由总线读取及写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器40可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0027] 在一些实例中,GPU 12可将完全形成的图像存储在系统存储器10中。显示处理器14可从系统存储器10检索图像,并且输出使显示器8的像素照亮以显示图像的值。显示器8可为显示由GPU 12产生的图像内容的装置2的显示器。显示器8可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
[0028] 根据本发明的各方面,GPU 12可在分级数据结构中组织多个图元。GPU 12可将与分级数据结构的节点相关的一或多个包围体光栅化成离屏呈现目标。GPU 12可确定分级数据结构的内部非根节点为开始分级数据结构的遍历的分级数据结构中的开始节点。GPU 12可从开始节点开始遍历分级数据结构以确定与光线相交的图元。
[0029] 图2是进一步详细地绘示图1的CPU 6、GPU 12和系统存储器10的实例实施方案的框图。如图2中所示,CPU 6可包含至少一个软件应用程序18、图形API 20和GPU驱动程序22,其中的每一者可为CPU 6上执行的一或多个软件应用程序或服务。
[0030] 可用于CPU 6和GPU 12的存储器可包含系统存储器10和缓冲器16。帧缓冲器16可为系统存储器10的部分或可与系统存储器10分离。帧缓冲器16可存储所呈现的图像数据。
[0031] 软件应用程序18可为利用GPU 12的功能性的任何应用程序。例如,软件应用程序18可为GUI应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。
[0032] 软件应用程序18可包含指示GPU 12呈现图形用户接口(GUI)和/或图形场景的一或多个绘制指令。例如,绘制指令可包含定义将由GPU 12呈现的一或多个图形图元的集合的指令。在一些实例中,绘制指令可共同地定义用于GUI中的多个开视窗表面中的全部或部分。在额外实例中,绘制指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象
[0033] 软件应用程序18可经由图形API 20调用GPU驱动程序22以将一或多个命令发布到GPU 12,以将一或多个图形图元呈现为可显示的图形图像。例如,软件应用程序18可经由图形API 20调用GPU驱动程序22以提供图元定义到GPU 12。在一些情况下,将呈绘制图元(例如,三角形、矩形、三角扇、三角形带等)的列表形式的图元定义提供给GPU 12。图元定义可包含指定与待呈现的图元相关的一或多个顶点的顶点规格。顶点规格可包含每一顶点的位置坐标,且在一些情况下,包含与顶点相关的其它属性,例如色坐标、法向量和纹理坐标。图元定义还可包含图元类型信息(例如,三角形、矩形、三角扇、三角形带等)、缩放信息、旋转信息及类似者。基于由软件应用程序18发布到GPU驱动程序22的指令,GPU驱动程序22可调配指定供GPU 12执行的一或多个操作以便呈现图元的一或多个命令。当GPU 12从CPU 6接收命令时,图形处理管线24解码命令并配置图形处理管线24以执行命令中所指定的操作。例如,图形处理管线24中的输入汇编程序26可读取图元数据且将数据汇编成供图形处理管线24中的其它图形管线级使用的图元。在执行指定操作之后,图形处理管线24将所呈现的数据输出到与显示装置相关的帧缓冲器16。
[0034] 帧缓冲器16存储用于GPU 12的目的地像素。每一目的地像素可与唯一的屏幕像素位置相关。在一些实例中,帧缓冲器16可存储用于每一目的地像素的色分量和目的地阿尔法值。例如,帧缓冲器16可存储用于每一像素的红色、绿色、蓝色、阿尔法(RGBA)分量,其中“RGB”分量对应于色值且“A”分量对应于目的地阿尔法值。尽管将帧缓冲器16和系统存储器10绘示为单独的存储器单元,但在其它实例中,帧缓冲器16可为系统存储器10的一部分。
[0035] 在一些实例中,图形处理管线24可包含顶点着色器级、外壳着色器级、域着色器级、几何着色器级和像素着色器级中的一或多者。图形处理管线24的这些级可被视为着色器级。这些着色器级可实施为在GPU 12中的着色器单元46上执行的一或多个着色器程序。着色器单元46可配置成处理分量的可编程管线。在一些实例中,着色器单元46可被称作“着色器处理器”或“统一着色器”,并且可执行几何、顶点、像素或其它着色操作以呈现图形。着色器单元46可包含处理器核心48,所述处理器核心中的每一者可包含用于获取和解码操作的一或多个组件、用于执行算术计算的一或多个算术逻辑单元、一或多个存储器、高速缓冲存储器和寄存器。
[0036] 通过将执行图形处理管线24中的顶点着色器级、外壳着色器级、域着色器级、几何着色器级和像素着色器级中的一或多者的命令发送到着色器单元46,GPU 12可指定着色器单元46执行各种着色操作,例如顶点着色、外壳着色、域着色、几何着色、像素着色及类似者。在一些实例中,GPU驱动程序22可经配置以编译一或多个着色器程序,且经配置以将所编译的着色器程序下载到含于GPU 12内的一或多个可编程着色器单元上。可使用高级着色语言着编写色器程序,所述语言例如OpenGL着色语言(GLSL)、高级着色语言(HLSL)、C for Graphics(Cg)着色语言等。所编译的着色器程序可包含控制GPU 12内着色器单元46的操作的一或多个指令。例如,着色器程序可包含:顶点着色器程序,其可由着色器单元46执行以执行顶点着色器级的功能;外壳着色器程序,其可由着色器单元46执行以执行外壳着色器级的功能;域着色器程序,其可由着色器单元46执行以执行域着色器级的功能;几何着色器程序,其可由着色器单元46执行以执行几何着色器级的功能;和/或像素着色器程序,其可由着色器单元46执行以执行像素着色器的功能。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,并且包含指定一或多个每顶点操作的指令。
[0037] 图形存储器40为物理地集成到GPU 12的集成电路中的片上存储装置或存储器。因为图形存储器40为片上存储器,所以与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU 12可能能够更快速地从图形存储器40读取值或将值写入到图形存储器40。图形存储器40可存储ADS 41,所述ADS 41以分级方式将场景图元(例如,三角形)归类。在一些实例中,ADS 41可存储在系统存储器10中、存储在着色器单元46的着色器存储器(未图示)中,或存储在共享系统/图形存储器(未图示)中。
[0038] 根据本发明的各方面,GPU 12可在ADS 41中组织多个图元。GPU 12可将与ADS 41的节点相关的一或多个包围体光栅化成存储在图形存储器40中的离屏呈现目标。GPU 12可确定ADS 41的非根节点为开始ADS 41的遍历的广告ADS 41中的开始节点。GPU 12可从开始节点开始遍历ADS 41以确定与光线相交的图元。
[0039] 图3是绘示GPU 12可在其上执行光线跟踪的实例场景的框图。如图3中所示,场景50可为包含图元52A到52E(下文称为“图元52”)的2D或3D场景。作为光线跟踪过程的部分,针对可为2D或3D光线并从光源55发散的光线54,GPU 12可确定与光线54相交的场景50的图元52中的图元。
[0040] 通过划分场景50、以分级方式布置所划分的场景50的部分,以及以递归方式遍历所划分的场景50的部分的分级结构,GPU 12可系统地确定与光线54相交的图元52中的图元。图4是绘示将场景50分区成包围体的框图。如图4中所示,GPU 12可概念地将图元52分区成包围体56A到56E(“包围体56”)。包围体56可为轴对齐的包围盒(AABB),其可为具有最小区域的包围盒,封闭图元的全部点可处于所述最小区域内。包围盒可为轴对齐的,以使得盒的边缘可平行于坐标轴(例如,x、y和z轴)。
[0041] 包围体56A可为界定场景50的全部图元52的包围盒。包围体56B和56C可为包围体56A的子集,因为包围体56B和56C界定由包围体56A界定的场景50的部分的子集。包围体56B可界定图元52A和52B,并且包围体56C可界定图元52C、52D和52E。包围体56D和56E可为包围体56C的子集,并且可界定由包围体56B界定的场景50的部分的子集。包围体56D可界定图元
52C和52D,并且包围体56E可界定图元52E。
[0042] 在图4示出的实例中,GPU 12可将图元52分区成五个包围体56。GPU 12可使用多于或少于五个包围体56。例如,GPU 12可相应地产生额外的包围体作为包围体56B的子集,以分别界定图元52A和52B。在一些实例中,CPU 6还可经配置以将图元52分区成包围体56。
[0043] 图5绘示具有与图4中示出的包围体56和图元52相关的节点的实例分级数据结构。如上文所论述,可组织场景的场景图元到ADS 41中,并且可遍历ADS 41以确定光线-图元的相交。GPU 12可在图形存储器40中存储ADS 41。如图5中所示,包围体56和图元52可与ADS 
41(例如包围体分级结构(BVH)树60)的节点相关,所述ADS 41与场景50相关。GPU 12或CPU 
6可构建BVH树60,以使得它可包含与场景50中的包围体56和图元52相关的节点62A到62E(“节点62”)。更确切地说,根节点62A、内部节点62C以及叶节点62B、62D和62E可各自与包围体56的包围体相关。BVH树60的除根节点62A以外的节点可被称为BVH树60的非根节点。例如,内部节点62C以及叶节点62B、62D和62E可被称为BVH树60的非根节点。叶节点62B、62D和
62E可各自与图元52的至少一个图元连接。例如,叶节点62B可与图元52A和52B连接,叶节点
62D可与图元52C和52D连接,以及叶节点62E可与图元52E连接。BVH树60可被视为不平衡的二叉树,因为分级数据结构60的每一非叶节点具有最多两个子节点,也因为叶节点62B、62D和62E可能具有不相等的深度。
[0044] 因为包围体56A界定场景50的全部图元52,所以GPU 12可将根节点62A与包围体56A关联。GPU 12可分别将是根节点62A的子节点的节点62B和62C与包围体56B和56C关联,因为包围体56B和56C各自是包围体56A的子集。GPU 12可连接图元52A和52B与节点62B,因为与节点62B相关的包围体56B界定图元52A和52B,也因为不存在是包围体56B的子集的额外包围体。
[0045] GPU 12可将包围体56D和56E与是节点62C的子节点的节点62D和62E关联,因为包围体56D和56E各自是与节点62C相关的包围体56C的子集。GPU 12可连接图元52C和52D与节点62D,因为与节点62D相关的包围体56D界定图元52C和52D,也因为不存在是包围体56D的子集的额外包围体。GPU 12还可连接图元52E与节点62E,因为与节点62E相关的包围体56E界定图元52E,也因为不存在是包围体56E的子集的额外包围体。
[0046] 通过执行针对与BVH树60的节点62相关的包围体56的光线-盒相交测试,GPU 12可遍历BVH树60以确定与光线54相交的图元52的图元。通过执行针对与根节点62A相关的包围体56A的光线-盒相交测试,GPU 12可开始BVH树60的遍历。如果GPU 12确定光线54与包围体56A相交,那么GPU 12可继续遍历BVH树60到节点62B,并且GPU 12可执行针对与节点62B相关的包围体56B的光线-盒相交测试。如果GPU 12确定光线54并不与包围体56B相交,那么GPU 12可以递归方式遍历BVH树,上至节点62A以及下到节点62C,并且GPU 12可执行针对与节点62C相关的包围体56C的光线-盒相交测试。如果GPU 12确定光线54与包围体56C相交,那么GPU 12可继续遍历BVH树60到节点62D,并且GPU 12可执行针对与节点62D相关的包围体56D的光线-盒相交测试。如果GPU确定光线54与包围体56D相交,那么GPU 12可执行针对连接到节点62D的图元的光线-图元相交测试。因此,GPU 12可执行针对图元52C的光线-图元相交测试,并且还可执行针对图元52D的光线-图元相交测试。根据针对图元52D的光线-图元相交测试,GPU 12可确定光线54的确与图元52D相交。在GPU 12确定光线54并不与图元
52D相交之后,GPU 12可继续以递归方式遍历BVH树60,上至节点62C以及下到节点62E,并且GPU 12可执行针对与节点62E相关的包围体56E的光线-盒相交测试。基于光线-盒相交测试,GPU 12可确定光线54并不与包围体56E相交,由此结束用于光线54的BVH树60的遍历。
[0047] 如果可从非根节点(例如内部节点62C或叶节点62B、62D和62E中的一个)开始遍历BVH树60,那么相对于从根节点62A开始BVH树60的遍历,GPU 12可减少它执行的光线相交测试的次数,由此提高确定与光线相交的图元的效率。通过确定与BVH树60的非根节点相关的包围体与光线54相交,GPU 12可从BVH树60的非根节点开始BVH树60的遍历。GPU 12可在图形存储器40中将包围体56的至少一个子集光栅化成离屏呈现目标。基于将多个包围体56光栅化成离屏呈现目标,GPU 12可确定BVH树60的非根节点微开始BVH树60的遍历的BVH树60中的开始节点。GPU 12可从开始节点开始遍历BVH树60以确定与光线54相交的图元。
[0048] 图6是绘示被光栅化成实例离屏呈现目标的包围体的实例表示的框图。针对指定数目的顶部层级的BVH树,GPU 12可使用其图形管道的像素着色器和/或顶点着色器以在图形存储器40中将包围体的表示光栅化成离屏呈现目标,所述包围体的表示与BVH树的指定顶部层级中的节点相关。例如,给定16层级BVH树,GPU 12可将与BVH树的顶部5到6层级相关的包围体的表示光栅化。因此,GPU 12可选择将与少于BVH树的全部层级的层级相关的包围体的表示光栅化。
[0049] 如图6中所示,GPU 12可在呈现目标64中呈现与BVH树60的节点62B到62E相关的包围体56B到56E的表示66A到66D(“表示66”)。GPU 12可在图形存储器40中存储呈现目标64。GPU 12可投射包围体56B到56E,并且GPU 12的着色器单元46可将与BVH树60的非根节点62B到62E相关的包围体56B到56E的表示光栅化为二维或三维表示,例如多边形、立方体及类似者。例如,GPU 12的硬件光栅化器可将包围体56中的每一者扫描转换成呈现目标64中的像素。在一个实例中,GPU 12可将包围体56B到56E的表示66光栅化为平坦着色的立方体。GPU 
12还可以不同色将包围体56B到56E的表示66光栅化,以使得表示66中的每一者的输出色可表示指示BVH树60中的相关节点的节点索引。GPU 12可缩放和平移内部节点的表示中的每一者以匹配相关的包围体的形状。在一些实例中,与场景50中的包围体56B到56E比较,GPU 
12可以相对较低的分辨率将包围体56B到56E的表示66光栅化。以此方式,GPU 12可另外提高其确定光线-图元相交的性能。
[0050] 通过执行所投射的包围体56B到56E的标准深度测试,以及通过将不同的输出色分配给表示66的像素以表示所投射的包围体56B到56E的不同深度,GPU 12可确定表示66的输出色。GPU 12可将分配到表示66的像素的输出色与BVH树60的节点62关联。以此方式,通过对像素的输出色取样,GPU 12可确定与呈现目标64中的像素相关的BVH树60中的节点。作为将表示66光栅化成呈现目标64的部分,GPU 12可确定主光线到呈现目标64中的像素的映射,以使得针对呈现目标64中的像素,GPU 12可映射与像素相交的一或多个主光线,例如光线54。在一些实例中,呈现目标64可具有像素和主光线之间的一对一映射。在其它实例中如果以相对较低的分辨率(相较于对应的包围体56的分辨率)将表示66光栅化成呈现目标64,那么可映射像素到多个主光线。GPU 12可确定表示66C是最接近于光线54的光源并且包含映射到光线54的像素的表示。GPU 12可对映射到光线54的表示66C中的像素取样以确定像素色。GPU 12可确定所取样的表示66C中的像素色与用于节点62D的节点索引相关,并且可由此确定表示66C与节点62D相关。因此,GPU 12可将节点62D设定为用于遍历BVH树60的开始节点,并且可从节点62D开始BVH树60的遍历。
[0051] 当GPU 12从节点62D开始遍历BVH树60时,GPU 12可首先针对与节点62D相关的包围体56D执行光线-盒相交测试。如果GPU确定光线54与包围体56D相交,那么GPU 12可执行针对连接到节点62D的图元52C的光线-图元相交测试。如果GPU确定光线54并不与图元52C相交,那么GPU 12可以递归方式遍历BVH树60,上至节点62D,并且可针对连接到节点62D的图元52D执行光线-图元相交测试。根据针对图元52D的光线-图元相交测试,GPU 12可确定光线54的确与图元52D相交。GPU 12可以递归方式遍历BVH树60,上至节点62C,由此结束用于光线54的BVH树60的遍历。如可见,相对于在需要GPU 12从根节点开始遍历BVH树60的情况中,遍历BVH树60以发现与光线54相交的图元可包含执行相对较少的光线-盒相交测试。
[0052] 在一些实例中,取决于视角,当投射在屏幕上时,任何两个节点的包围体的表示可重叠。在此情况下,BVH树60的遍历可从两个重叠的包围体的最低共同原点(ancestor)开始。如果包围体的两个表示重叠,并且如果光线在两个包围体的重叠区中相交,那么GPU 12可确定与包围体相关的节点的最低共同原始节点,并且可从与包围体相关的节点的最低共同原始节点开始BVH树60的遍历,所述包围体由两个重叠的表示表示。例如,当将表示66光栅化成呈现目标64时,GPU 12可确定表示66C和表示66D在区域69中重叠。GPU 12可确定与节点62D和62E的最低共同原始节点相关的输出色,并且可将区域69(即,填充区域69)中的像素的输出色设定成与节点62D和62E的最低共同原始节点相关的相同的输出色。在这个实例中,GPU 12可确定节点62C是节点62D和62E的最低共同原始节点,并且可将区域69中的像素的输出色设定成与节点62C相关的表示66B的输出色。
[0053] 例如,如果从光源55发散的光线68与区域69相交,那么GPU 12可确定从节点62C开始遍历。因为节点62C与由呈现目标64中的表示66B表示的包围体56C相关,所以GPU 12可针对与节点62C相关的包围体56C执行光线-盒相交测试。如果GPU 12确定光线68与包围体56C相交,那么GPU 12可遍历BVH树60到节点62D。GPU 12可针对与节点62D相关的包围体56D执行光线-盒相交测试。如果GPU确定光线54与包围体56D相交,那么GPU 12可执行针对连接到节点62D的图元52C的光线-图元相交测试。如果GPU确定光线54并不与图元52C相交,那么GPU 12可以递归方式遍历BVH树60,上至节点62D,并且可针对连接到节点62D的图元52D执行光线-图元相交测试。根据针对图元52D的光线-图元相交测试,GPU 12可确定光线54的确与图元52D相交。然而,GPU 12可以递归方式继续遍历BVH树60,上至节点62C以及下到节点62E,并且可针对与节点62E相关的包围体56E执行光线-盒相交测试。GPU 12可确定光线54并不与包围体56E相交,由此结束用于光线54的BVH树60的遍历。
[0054] 图7是绘示用于确定用于遍历实例分级树状结构以发现光线-图元相交的开始节点的实例方法的流程图。如图7中所示,方法可包含通过至少一个处理器(例如CPU 6或GPU 12),在分级数据结构中组织多个图元(702)。方法可进一步包含通过CPU 6或GPU 12,将与分级数据结构的非根节点相关的多个包围体光栅化成离屏呈现目标(704)。方法可进一步包含通过CPU 6或GPU 12并基于将多个包围体光栅化成离屏呈现目标,确定分级数据结构的非根节点作为分级数据结构中开始分级数据结构的遍历的开始节点(706)。方法可进一步包含通过CPU 6或GPU 12,从开始节点开始遍历分级数据结构以确定与光线相交的图元(718)。
[0055] 在一些实例中,方法可进一步包含通过GPU 12,将多个包围体的多个表示光栅化成离屏呈现目标。方法可进一步包含通过CPU 6或GPU 12,至少部分地基于多个包围体的多个表示中的表示的输出色,确定与所述表示相关的节点。方法可进一步包含通过CPU 6或GPU 12,确定在多个表示中的一或多者中的一或多个像素映射到光线,并且通过CPU 6或GPU 12,确定与一或多个像素相关的分级数据结构的节点为开始节点。
[0056] 在一些实例中,方法可进一步包含通过CPU 6或GPU 12,确定多个表示中的两个或大于两个表示重叠;通过GPU 12,填充具有最低共同原始表示的输出色的两个或大于两个表示的重叠区;以及通过CPU 6或GPU 12,确定与最低共同原点的输出色相关的分级数据结构的节点为开始节点。在一些实例中,方法可进一步包含通过GPU 12,以相比于多个包围体而相对较低的分辨率,将多个包围体的多个表示光栅化成离屏呈现目标。
[0057] 在一或多个实例中,所描述的功能可在硬件、软件、固件或其任何组合中实施。如果在软件中实施,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。而且,任何连接可适当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波的无线技术从网站服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波的无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。上述各项的组合也应包含在计算机可读媒体的范畴内。
[0058] 代码可以由一或多个处理器执行,所述一或多个处理器例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”和“处理单元”可指代前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文所述的功能性可在经配置以用于编码和解码的专用硬件和/或软件模块内提供,或并入在组合式编解码器中。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
[0059] 本发明的技术可以在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述,各种单元可以结合合适的软件和/或固件而组合在编码解码器硬件单元中,或者通过可交互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
[0060] 已描述了各种实例。这些及其它实例在所附权利要求书的范畴内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈