用于光线追踪的合并函数调用的方法和装置与流程

文档序号:34989538发布日期:2023-08-03 20:33阅读:18来源:国知局
用于光线追踪的合并函数调用的方法和装置与流程

本发明涉及用于使用光线追踪来渲染图像的方法和装置,具体地涉及用于在光线追踪中合并函数调用的方法和装置。


背景技术:

1、光线追踪是一种渲染二维(two-dimensional,2d)图像的技术,它会模拟来自虚拟相机(对应于2d图像的视点)的虚拟光线穿过2d视图平面的像素并进入三维(three-dimensional,3d)虚拟场景所经过的路径。该技术会追踪每条虚拟光线以确定光线是否与3d虚拟场景中对象的一个或多个表面相交。根据光线是否命中对象,从而渲染视觉效果。每条虚拟光线都被模拟为表现得像一条真实的光线,能够反射、折射并产生阴影。

2、光线追踪可以创建看起来更逼真的渲染图像,但相应的计算成本也可能很高。使用光线追踪渲染图像所需的计算资源(例如,计算时间、内存资源等),特别是对于具有许多对象的场景,可能会限制光线追踪的实际应用。

3、因此,本发明旨在提供有助于降低光线追踪计算成本的技术。


技术实现思路

1、本发明描述了通过重新排序和合并对着色器的调用来帮助减少计算时间的示例方法和装置。这有助于降低光线追踪的计算成本,并使光线追踪在更多实际应用中发挥作用。

2、本发明的示例可以使用传统图形处理单元中常见的内存访问合并硬件单元,以及本发明公开的归并合并访问硬件单元和函数调用合并内存缓冲区来实现。

3、在一些示例中,本发明的光线追踪技术可以使用编码到硬件中的指令来实现,从而进一步改进性能和降低功耗。

4、在一些示例中,可以通过为合并函数调用预取指令来进一步提升效率。

5、本文中公开的示例是在光线追踪的上下文中描述的;然而,本发明可在其它上下文中执行线程,并且合并的函数调用不限于着色器调用。

6、在一些示例方面,本发明描述了一种用于线程执行的方法,该方法包括:处理属于线程组的一组线程,以在相应数量的调用实例上为每个线程收集相应的一组函数调用指示符;跨所述一组线程中的所有线程和所述一组线程对应的所有调用实例重新排序所述函数调用指示符,以将相同的函数调用指示符合并到共同的调用实例,并将不相同的函数调用指示符重新排序到不同的调用实例;以及根据重新排序和合并后的函数调用指示符,跨所述线程组中的线程执行函数调用。

7、在任何示例中,执行函数调用可以包括:预取用于由对应于后续调用实例的函数调用指示符指示的函数调用的指令,同时执行由对应于当前调用实例的函数调用指示符指示的函数调用。

8、在任何示例中,对函数调用指示符重新排序可以包括:将指示彼此靠近的内存地址的不相同函数调用指示符重新排序,以分配给连续的调用实例。

9、在任何示例中,对函数调用指示符重新排序可以包括:将相同的函数调用指示符写入缓冲区中相同的行,将不相同的函数调用指示符写入缓冲区中的不同行;执行函数调用可以包括:执行由从缓冲区中逐行检索的函数调用指示符指示的函数调用。

10、在任何示例中,函数调用指示符可以是函数调用指针。

11、在任何示例中,对函数调用指示符重新排序可以包括:对于每个给定的调用实例,跨线程组中的线程合并相同的函数调用指示符,以获得给定调用实例的一组合并的函数调用指示符;对所有调用实例中的合并函数调用指示符重新排序,以将相同的合并函数调用指示符放置在共同的调用实例中。

12、在任何示例中,线程可以表示光线追踪过程中的光线,线程中的每个调用实例可以对应于光线的光线命中,并且每个函数调用可以对应于着色器调用。

13、在任何示例中,为每条光线收集的相应的一组函数调用指示符可以包括以下中的至少一个:对应任意命中着色器的函数调用指示符、对应相交着色器的函数调用指示符或对应组合的任意命中着色器和相交着色器的函数调用指示符。

14、在任何示例中,每个函数调用可以与对象实例和着色器相关联,并且执行函数调用可以包括:确定与对任意命中着色器的函数调用相关联的给定对象实例被标记为不透明;以及省略对给定对象实例的任意命中着色器的函数调用的执行。

15、在任何示例中,每个函数调用可以与对象实例和着色器相关联,并且执行函数调用可以包括:针对给定的对象实例执行对任意命中着色器的函数调用;并且在确定函数调用返回忽略给定对象实例的命中的决定之后,省略与给定对象实例相关联的后续函数调用的执行。

16、在一些示例方面,本发明描述了一种用于线程执行的装置,该装置包括一个图形处理单元(graphics processing unit,gpu)用于:处理属于线程组的一组线程,以在相应数量的调用实例上为每个线程收集相应的一组函数调用指示符;跨所述一组线程中的所有线程和所述一组线程对应的所有调用实例重新排序所述函数调用指示符,以将相同的函数调用指示符合并到共同的调用实例,并将不相同的函数调用指示符重新排序到不同的调用实例;以及根据重新排序和合并后的函数调用指示符,跨所述线程组中的线程执行函数调用。

17、在任何示例中,gpu还可以用于通过以下方式执行函数调用:预取用于由对应于后续调用实例的函数调用指示符指示的函数调用的指令,同时执行由对应于当前调用实例的函数调用指示符指示的函数调用。

18、在任何示例中,gpu还可以用于通过以下方式对函数调用指示符进行重新排序:将指示彼此靠近的内存地址的不相同函数调用指示符重新排序,以分配给连续的调用实例。

19、在任何示例中,gpu还可以用于通过以下方式对函数调用指示符进行重新排序:将相同的函数调用指示符写入函数调用合并缓冲区中相同的行,将不相同的函数调用指示符写入函数调用合并缓冲区中的不同行;gpu还可以用于通过以下方式执行函数调用:执行由从函数调用合并缓冲区逐行检索的函数调用指示符指示的函数调用。

20、在任何示例中,gpu可以包括:内存合并单元;和归并合并访问单元。内存合并单元和归并合并访问单元可以用于通过以下方式对函数调用指示符进行重新排序:在内存合并单元:对于每个给定的调用实例,跨线程组中的线程合并相同的函数调用指示符,以获得给定调用实例的一组合并的函数调用指示符;以及在归并合并访问单元:对所有调用实例中的合并函数调用指示符重新排序,以将相同的合并函数调用指示符放置在共同的调用实例中。

21、在任何示例中,线程可以表示光线追踪过程中的光线,线程中的每个调用实例可以对应于光线的光线命中,并且每个函数调用可以对应于着色器调用。

22、在任何示例中,为每条光线收集的相应的一组函数调用指示符可以包括以下中的至少一个:对应任意命中着色器的函数调用指示符、对应相交着色器的函数调用指示符或对应组合的任意命中着色器和相交着色器的函数调用指示符。

23、在任何示例中,每个函数调用可以与对象实例和着色器相关联,并且gpu还可以用于通过以下方式执行函数调用:确定与对任意命中着色器的函数调用相关联的给定对象实例被标记为不透明;以及省略对给定对象实例的任意命中着色器的函数调用的执行。

24、在任何示例中,每个函数调用可以与对象实例和着色器相关联,并且gpu还可以用于通过以下方式执行函数调用:针对给定的对象实例执行对任意命中着色器的函数调用;并且在确定函数调用返回忽略给定对象实例的命中的决定之后,省略与给定对象实例相关联的后续函数调用的执行。

25、在一些示例方面,本发明描述了一种其上存储有指令的计算机可读介质。当由图形处理单元(graphics processing unit,gpu)执行时,这些指令使gpu:处理属于线程组的一组线程,以在相应数量的调用实例上为每个线程收集相应的一组函数调用指示符;跨所述一组线程中的所有线程和所述一组线程对应的所有调用实例重新排序所述函数调用指示符,以将相同的函数调用指示符合并到共同的调用实例,并将不相同的函数调用指示符重新排序到不同的调用实例;以及根据重新排序和合并后的函数调用指示符,跨所述线程组中的线程执行函数调用。

26、在一些示例中,计算机可读介质可以包括使gpu执行本文描述的任何方法的指令。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1