在光线跟踪系统中遍历加速结构的设备和方法_3

文档序号:9524812阅读:来源:国知局
320可同时确定第一子节点的边界框和第二子节点的边界框是否与光线相交。
[0095]即使在目标节点中包括三个或更多个子节点时,相交测试器320可同时确定所述三个或更多个子节点是否与光线相交。然而,这是示例性的,根据另一示例性实施例,所述多个子节点中的一些子节点可以以预定的顺序被分组,并且可以确定被分组的子节点的边界框是否与光线相交。
[0096]控制器330确定与光线相交的至少一个子节点中的下一个目标节点。控制器330可从相交测试器320获取关于与光线相交的所述至少一个子节点的信息。
[0097]当两个或更多个子节点与光线相交时,控制器330可基于相交距离确定下一个目标节点。例如,当在第一子节点与所述光线之间的相交距离小于第二子节点与光线之间的相交距离时,控制器330可将第一子节点确定为下一个目标节点。
[0098]另外,控制器330可将与光线相交的子节点中的没有被确定为下一个目标节点的子节点存储在堆栈中。例如,控制器330可将作为第一子节点和第二子节点中没有被确定为下一个目标节点的第二子节点存储在堆栈中。
[0099]控制器330执行与所确定的下一个目标节点的类型对应的操作。根据示例性实施例的控制器330可确定被确定的下一个目标节点的类型。目标节点的类型的示例可包括内节点和叶节点。当下一个目标节点是内节点时,控制器330可将与下一个目标节点的类型有关的信息发送到信息获取器310,并且可再次执行上述过程。
[0100]例如,当下一个目标节点是内节点A时,控制器330可将内节点A确定为目标节点并可将与内节点A有关的信息发送到信息获取器310。信息获取器310可将内节点A确定为目标节点并可获取与内节点A的子节点有关的信息。另外,相交测试器320可基于所获取的与内节点A的子节点有关的信息来对内节点A的每个子节点执行相交测试。控制器330可从内节点A的多个子节点中提取与光线相交的至少一个子节点并可从提取的至少一个子节点中确定下一个目标节点。
[0101]当下一个目标节点是叶节点B时,控制器330可将与叶节点B有关的信息发送到1ST单元130 (参见图2)。1ST单元130反复地执行相交测试,以确定在叶节点B中包括的至少一个图元中的每个图元是否与光线相交。可选择地,控制器330可控制外部存储器250将外部存储器250中包括的与叶节点B中包括的所述至少一个图元有关的信息发送到1ST单元130。
[0102]当不存在下一个目标节点时,控制器330结束一系列的遍历处理并将遍历处理的结果发送给着色单元140。着色单元140可基于光线与每个图元之间的击中点的信息以及击中点的材料的特性来确定与所述光线对应的像素的颜色值。另外,遮蔽单元140可通过考虑击中点的材料的基本的颜色、光源的影响等来确定像素的颜色值。
[0103]当多个子节点中不存在与光线相交的子节点时,控制器330可提取在堆栈中存储的另一节点,并可将所述另一节点确定为下一个目标节点。根据示例性实施例的另一个节点可以是不从属于AS中的目标节点的多个节点中的任一个节点。例如,控制器330可将具有与目标节点的父节点相同的父节点的节点确定为AS中的下一个目标节点。
[0104]图5是根据示例性实施例的在光线跟踪系统10中遍历AS的方法的流程图。
[0105]在操作510中,设备300获取与AS中包括的目标节点的多个子节点有关的信息。目标节点可以是内节点或根节点。设备300可获取与目标节点的多个子节点有关的信息,以确定下一个将要被遍历的节点(以下,称为下一个目标节点)。与子节点有关的信息可包括存储子节点的存储器地址、指示子节点的索引值、子节点的类型信息以及子节点的边界框信息。
[0106]在操作520中,设备300确定所述多个子节点中的各个子节点是否与光线相交。根据示例性实施例的设备300可同时确定子节点的边界框与光线是否相交。设备300可通过基于所获取的与所述多个子节点有关的信息使用一个遍历处理来同时确定所述多个子节点是否与光线相交,从而减少执行遍历所花费的时间。
[0107]在操作530中,设备300从与光线相交的至少一个子节点中确定下一个目标节点。当两个或更多个子节点与光线相交时,设备300可基于相交距离确定下一个目标节点。例如,设备300可将所述多个子节点中具有最短的到光线的相交距离的子节点确定为下一个目标节点。设备300可将与光线相交的多个子节点中的没有被确定为下一个目标节点的子节点存储在堆栈中。
[0108]在操作540中,设备300执行与所确定的下一个目标节点的类型对应的操作。设备300可确定所确定的下一个目标节点的类型。目标节点的类型的示例可包括内节点和叶节点。当下一个目标节点是内节点时,设备300可对下一个目标节点重复地执行操作510到操作540。
[0109]当下一个目标节点是叶节点时,设备300可将与下一个目标节点有关的信息发送到1ST单元130 (参见图2)。1ST单元130重复地执行相交测试,以确定下一个目标节点中包括的至少一个图元中的每个图元是否与光线相交。
[0110]另外,当不存在下一个目标节点时,设备300结束一系列遍历处理并将遍历处理的结果发送到着色单元140。
[0111]图6是根据示例性实施例的用于解释设备300如何执行下述操作的详细的流程图,所述操作对应于与光线相交的子节点的类型。
[0112]在操作610中,设备300获取与AS中包括的目标节点的多个子节点有关的信息。目标节点可以是内节点或根节点。操作610可对应于图5的操作510。
[0113]在操作615中,设备300确定所述多个子节点中的每个子节点与光线是否相交。设备300可基于所获取的与所述多个子节点有关的信息同时确定所述多个子节点是否与光线相交。
[0114]在操作620中,设备300确定两个或更多个子节点是否与光线相交。
[0115]在操作625中,设备300将与光线相交的两个或更多个子节点中具有最短的到光线的相交距离的子节点确定为下一个目标节点。设备300可将与光线相交的两个或更多个子节点中的没有被确定为下一个目标节点的子节点存储在堆桟中。
[0116]在操作630中,设备300将与光线相交的一个子节点确定为下一个目标节点。如果在操作620中确定一个子节点与光线相交,则设备300可将所述一个子节点确定为下一个目标节点。
[0117]在操作635中,设备300确定是否存在存储在堆栈中的节点。当不存在与光线相交的子节点时,设备300可确定另一节点是否在堆栈中存在。所述另一个节点可以是不从属于AS中的目标节点的任何节点。
[0118]在操作640中,设备300将从堆栈提取的节点确定为下一个目标节点。当在堆栈中存储的子节点存在时,设备300可从堆栈提取子节点。设备300可将所提取的子节点确定为下一个目标节点。
[0119]在操作645中,设备300确定所确定的下一个目标节点的类型是否是内节点。如果所确定的下一个目标节点的类型是内节点,则设备300可将下一个目标节点改变为目标节点,可返回到操作610,并可重复执行上面的处理。例如,如果所确定的下一个目标节点是内节点A,则设备300可将内节点A设置为目标节点并可获取与内节点A的子节点有关的信息。后续的处理与操作615到640相同。
[0120]在操作650中,设备300将与光线有关的信息发送到1ST单元130。当所确定的下一个目标节点的类型是叶节点(否)时,设备300可将与光线有关的信息发送到1ST单元130。1ST单元130可确定下一个目标节点中包括的多个图元中的每个图元是否与光线相交。
[0121]在操作655中,设备300将与光线有关的信息发送到着色单元140。当在AS中不存在将要被遍历的节点时,设备300可将在遍历之后获取的信息发送到着色单元140。在遍历之后获取的信息可包括光线与3D空间中包括的每个对象或每个对象中包括的每个图元之间的相交信息。着色单元140可基于与光线与每个图元之间的击中点有关的信息以及击中点的材料的特性来确定与光线对应的像素的颜色值。另外,着色单元140可通过考虑击中点的材料的基本颜色、光源的影响等来确定像素的颜色值。
[0122]图7是示出根据示例性实施例的光线跟踪系统10的状态的示图。
[0123]根据示例性实施例,可存在光线跟踪系统10的第一状态、第二状态和第三状态。第一状态是AS中包括的节点被遍历的状态。第二状态是对AS中包括的多个节点中的叶节点所包括的每个图元执行相交测试的状态。第三状态是这样的状态,在所述状态中,当AS中包括的所有节点被遍历时,基于在遍历处理期间获取的相交信息确定像素的颜色值并且节点的遍历处理结束。
[0124]由于根据示例性实施例的光线跟踪系统10对目标节点的多个子节点同时执行相交测试,所以光线跟踪系统10的状态可被简化为如上所述的三个状态。
[0125]现在将参照图7来解释根据示例性实施例的光线跟踪系统10中的状态改变。
[0126]在操作712中,设备300可获取与根节点的子节点有关的信息。
[0127]在操作714中,当基于获取的信息确定下一个目标节点是内节点时,设备300可获取与下一个目标节点的子节点有关的信息。当下一个目标节点是内节点时,操作712到714可被重复地执行。
[0128]在操作716中,当下一个目标节点是叶节点时,设备300将与叶节点有关的信息发送到1ST单元130。
[0129]在操作
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1