本技术实施例涉及图像处理领域,并且更具体地,涉及一种光线追踪的方法、用于光线追踪的装置和设备。
背景技术:
1、光线追踪(raytracing)是一种常见的渲染技术,通过投射光线以使其与测试对象相交,并根据投射结果对测试对象进行着色,从而生成逼真的图像。射光线追踪的基本几何操作是通过测试场景中的所有图元来计算射线与场景的交点,图元通常是三角形,且排列成空间的数据结构以加速相交效率,因此也将该过程称为射线和三角形的相交检测。相交检测的结果直接影响图像的质量,因此,如何提高相交检测的性能,成为亟待解决的问题。
技术实现思路
1、本技术实施例提供一种光线追踪的方法、用于光线追踪的装置和设备,能够提高射线和三角形的相交检测的性能。
2、第一方面,提供一种光线追踪的方法,所述方法包括:将射线和三角形投影至平面坐标系;根据射线与所述平面坐标系的交点对应的重心坐标,确定所述交点与所述三角形在所述平面坐标系上的投影三角形之间的位置关系;若所述交点位于所述投影三角形与投影至所述平面坐标系的其他三角形共用的公共边或者公共顶点,根据所述投影三角形的至少两个顶点在所述平面坐标系中的坐标,确定所述三角形是否被所述射线击中。
3、基于该技术方案,在射线和三角形的相交检测过程中,将射线和三角形投影至平面坐标系,并根据射线与平面坐标系的交点对应的重心坐标,确定该交点与该三角形在平面坐标系中的投影三角形之间的位置关系,且在该交点位于投影三角形的公共边或者公共顶点时,根据该三角形的至少两个顶点在平面坐标系中的坐标,准确地判定射线是否击中该三角形,从而保证了相交检测的结果的稳定性。
4、在一种实现方式中,所述若所述交点位于所述投影三角形与其他三角形共用的公共边或者公共顶点,根据所述投影三角形的至少两个顶点在所述平面坐标系中的坐标,确定所述三角形是否被所述射线击中,包括:若所述交点位于所述公共边,根据所述公共边的两个顶点在所述平面坐标系中的坐标,确定所述公共边是否满足预定条件,且在所述公共边满足所述预定条件时,确定所述三角形被所述射线击中;和/或,若所述交点位于所述公共顶点,确定所述公共顶点对应的两条边是否满足所述预定条件,且在所述公共顶点对应的两条边均满足所述预定条件时,确定所述三角形被所述射线击中。
5、在一种实现方式中,所述预定条件包括:所述公共边的两个顶点或者所述公共顶点对应的每条边的两个顶点,在所述平面坐标系中的y轴坐标之间的预定关系;和/或,所述公共边的两个顶点或者所述公共顶点对应的每条边的两个顶点,在所述平面坐标系中的x轴坐标之间的预定关系。
6、在一种实现方式中,所述投影三角形的顶点的卷绕方向为顺时针cw方向,且沿所述cw方向,所述公共边的两个顶点或者所述公共顶点对应的边的两个顶点,依次为所述投影三角形的第一顶点和第二顶点,所述预定条件包括:所述第二顶点的y轴坐标大于所述第一顶点的y轴坐标;或者,所述第二顶点的y轴坐标等于所述第一顶点的y轴坐标,且所述第二顶点的x轴坐标大于所述第一顶点的x轴坐标。
7、在一种实现方式中,所述投影三角形的顶点的卷绕方向为逆时针ccw方向,且沿所述ccw方向,所述公共边的两个顶点或者所述公共顶点对应的边的两个顶点,依次为所述投影三角形的第一顶点和第二顶点,所述预定条件包括:所述第一顶点的y轴坐标大于所述第二顶点的y轴坐标;或者,所述第一顶点的y轴坐标等于所述第二顶点的y轴坐标,且所述第一顶点的x轴坐标大于所述第二顶点的x轴坐标。
8、在一种实现方式中,所述方法还包括:若所述交点位于所述投影三角形的内部,确定所述三角形被所述射线击中。
9、在一种实现方式中,所述平面坐标系垂直于所述射线,且所述交点为所述平面坐标系的原点。
10、在一种实现方式中,所述重心坐标用于表示所述交点与所述投影三角形的三个顶点连线所形成的三个三角形各自的面积。
11、在一种实现方式中,所述重心坐标用于表示所述交点与所述投影三角形的三个顶点连线所形成的三个三角形各自占所述投影三角形的面积的比例。
12、在一种实现方式中,所述重心坐标为:u=cx’·by’-cy’·bx’;v=ax’·cy’-ay’·cx’;w=bx’·ay’-by’·ax’;其中,u、v和w为所述重心坐标,ax’和ay’分别为所述投影三角形的第一顶点的x轴坐标和y轴坐标,bx’和by’分别为所述投影三角形的第二顶点的x轴坐标和y轴坐标,cx’和cy’分别为所述投影三角形的第三顶点的x轴坐标和y轴坐标。
13、在一种实现方式中,所述根据射线与所述平面坐标系的交点对应的重心坐标,确定所述交点与所述投影三角形的位置关系,包括:若u、v和w中的一个为0,确定所述交点位于所述投影三角形的边;若u、v和w中的两个为0,确定所述交点位于所述投影三角形的顶点;若u、v和w均为正,或者u、v和w均为负,确定所述交点位于所述投影三角形的内部。
14、在一种实现方式中,在所述确定所述交点与所述投影三角形的位置关系之前,所述方法还包括:基于融合乘加fma运算,确定所述重心坐标,其中,所述fma运算包括乘法运算和加法运算,所述乘法运算用于对所述fma运算的输入值相乘,所述fma运算的输入值为单精度浮点数,所述加法用于对所述乘法运算的结果相加,所述加法运算的位数大于所述乘法运算的位数。
15、在一种实现方式中,所述加法运算的位数大于或等于49位。
16、在一种实现方式中,在所述加法运算之前对齐的指数位数大于或等于9。
17、在一种实现方式中,所述fma运算具体包括针对两组输入值的两次乘法运算、以及针对所述两次乘法运算的结果的加法运算,其中,在所述加法运算之前,所述fma运算还包括对其中一次乘法运算的结果的符号的取反运算。
18、在一种实现方式中,所述fma运算还包括针对所述加法运算的结果的舍入操作,以使所述fma运算的输出值为所述单精度浮点数。
19、在一种实现方式中,在所述确定所述交点与所述投影三角形的位置关系之前,所述方法还包括:确定所述射线的主维度,并将所述主维度作为三维坐标系的z轴,所述主维度为绝对值最大的维度;对所述射线和所述三角形进行移动,以使所述射线的原点位于所述三维坐标系的原点;根据变换矩阵,对所述射线和所述三角形进变换,以使所述射线的方向沿所述z轴;将所述三角形沿所述射线的方向投影至x轴和y轴形成的所述平面坐标系。
20、在一种实现方式中,所述变换矩阵包括两个缩放矩阵与一个剪切矩阵的乘积。
21、在一种实现方式中,若所述三角形被所述射线击中,所述方法还包括:根据所述重心坐标,确定所述射线在所述三维坐标系中的命中距离为:t=(u·az’+v·bz’+w·cz’)/det,其中,t为所述命中距离,u、v和w为所述重心坐标,az’、bz’和cz’分别为所述三角形投影至所述平面坐标系之前其第一顶点、第二顶点和第三顶点在三维坐标系中的z轴坐标。
22、第二方面,提供一种光线追踪的方法,所述方法包括:将射线和三角形投影至平面坐标系;根据fma运算,确定射线与所述平面坐标系的交点对应的重心坐标,其中,所述fma运算包括乘法运算和加法运算,所述乘法运算用于对所述fma运算的输入值相乘,所述fma运算的输入值为单精度浮点数,所述加法用于对所述乘法运算的结果相加,所述加法运算的位数大于所述乘法运算的位数;根据所述重心坐标,确定所述三角形是否被所述射线击中。
23、基于该技术方案,在射线和三角形的相交检测过程中,将射线和三角形投影至平面坐标系,并利用fma运算,确定射线与平面坐标系的交点对应的重心坐标,并基于该重心坐标确定该三角形是否被射线击中。由于计算重心坐标采用了fma运算,fma运算包括乘法运算和加法运算,其中加法运算采用的位数,大于乘法运算时输入的单精度浮点数的位数,因此消除了重心坐标的计算过程中的内部精度损失,能够准确地获取重心坐标,从而保证了相交检测的结果的水密性。
24、在一种实现方式中,所述加法运算的位数大于或等于49位。
25、在一种实现方式中,在所述加法运算之前对齐的指数位数大于或等于9。
26、在一种实现方式中,所述fma运算具体包括针对两组输入值的两次乘法运算、以及针对所述两次乘法运算的结果的加法运算,其中,在所述加法运算之前,所述fma运算还包括对其中一次乘法运算的结果的符号的取反运算。
27、在一种实现方式中,所述fma运算还包括针对所述加法运算的结果的舍入操作,以使所述fma运算的输出值为所述单精度浮点数。
28、在一种实现方式中,在所述确定射线与所述平面坐标系的交点对应的重心坐标之前,所述方法还包括:确定所述射线的主维度,并将所述主维度作为三维坐标系的z轴,所述主维度为绝对值最大的维度;对所述射线和所述三角形进行移动,以使所述射线的原点位于所述三维坐标系的原点;根据变换矩阵,对所述射线和所述三角形进变换,以使所述射线的方向沿所述z轴;将所述三角形沿所述射线的方向投影至x轴和y轴形成的所述平面坐标系。
29、在一种实现方式中,所述变换矩阵包括两个缩放矩阵与一个剪切矩阵的乘积。
30、在一种实现方式中,在所述确定所述三角形被所述射线击中之后,所述方法还包括:根据所述重心坐标,确定所述射线在所述三维坐标系中的命中距离为:t=(u·az’+v·bz’+w·cz’)/det,其中,t为所述命中距离,u、v和w为所述重心坐标,az’、bz’和cz’分别为所述三角形投影至所述平面坐标系之前其第一顶点、第二顶点和第三顶点在三维坐标系中的z轴坐标。
31、第三方面,提供了一种用于光线追踪的装置,所述装置包括:第一处理单元,用于将射线和三角形投影至平面坐标系,并根据射线与所述平面坐标系的交点对应的重心坐标,确定所述交点与所述三角形的投影三角形之间的位置关系;第二处理单元,用于在所述交点位于所述投影三角形与投影至所述平面坐标系的其他三角形共用的公共边或者公共顶点时,根据所述投影三角形的至少两个顶点在所述平面坐标系中的坐标,确定所述三角形是否被所述射线击中。
32、在一种实现方式中,所述第二处理单元具体用于:若所述交点位于所述公共边,根据所述公共边的两个顶点在所述平面坐标系中的坐标,确定所述公共边是否满足预定条件,且在所述公共边满足所述预定条件时,确定所述三角形被所述射线击中;和/或,若所述交点位于所述公共顶点,确定所述公共顶点对应的两条边是否满足所述预定条件,且在所述公共顶点对应的两条边均满足所述预定条件时,确定所述三角形被所述射线击中。
33、在一种实现方式中,所述预定条件包括:所述公共边的两个顶点或者所述公共顶点对应的每条边的两个顶点,在所述平面坐标系中的y轴坐标之间的预定关系;和/或,所述公共边的两个顶点或者所述公共顶点对应的每条边的两个顶点,在所述平面坐标系中的x轴坐标之间的预定关系。
34、在一种实现方式中,所述投影三角形的顶点的卷绕方向为顺时针cw方向,且沿所述cw方向,所述公共边的两个顶点或者所述公共顶点对应的边的两个顶点,依次为所述投影三角形的第一顶点和第二顶点,所述预定条件包括:所述第二顶点的y轴坐标大于所述第一顶点的y轴坐标;或者,所述第二顶点的y轴坐标等于所述第一顶点的y轴坐标,且所述第二顶点的x轴坐标大于所述第一顶点的x轴坐标。
35、在一种实现方式中,所述投影三角形的顶点的卷绕方向为逆时针ccw方向,且沿所述ccw方向,所述公共边的两个顶点或者所述公共顶点对应的边的两个顶点,依次为所述投影三角形的第一顶点和第二顶点,所述预定条件包括:所述第一顶点的y轴坐标大于所述第二顶点的y轴坐标;或者,所述第一顶点的y轴坐标等于所述第二顶点的y轴坐标,且所述第一顶点的x轴坐标大于所述第二顶点的x轴坐标。
36、在一种实现方式中,所述第二处理单元还用于:若所述交点位于所述投影三角形的内部,确定所述三角形被所述射线击中。
37、在一种实现方式中,所述平面坐标系垂直于所述射线,且所述交点为所述平面坐标系的原点。
38、在一种实现方式中,所述重心坐标用于表示所述交点与所述投影三角形的三个顶点连线所形成的三个三角形各自的面积。
39、在一种实现方式中,所述重心坐标用于表示所述交点与所述投影三角形的三个顶点连线所形成的三个三角形各自占所述投影三角形的面积的比例。
40、在一种实现方式中,所述重心坐标为:u=cx’·by’-cy’·bx’;v=ax’·cy’-ay’·cx’;w=bx’·ay’-by’·ax’;其中,u、v和w为所述重心坐标,ax’和ay’分别为所述投影三角形的第一顶点的x轴坐标和y轴坐标,bx’和by’分别为所述投影三角形的第二顶点的x轴坐标和y轴坐标,cx’和cy’分别为所述投影三角形的第三顶点的x轴坐标和y轴坐标。
41、在一种实现方式中,所述第一处理单元具体用于:若u、v和w中的一个为0,确定所述交点位于所述投影三角形的边;若u、v和w中的两个为0,确定所述交点位于所述投影三角形的顶点;若u、v和w均为正,或者u、v和w均为负,确定所述交点位于所述投影三角形的内部。
42、在一种实现方式中,所述第一处理单元还用于:基于融合乘加fma运算,确定所述重心坐标,其中,所述fma运算包括乘法运算和加法运算,所述乘法运算用于对所述fma运算的输入值相乘,所述fma运算的输入值为单精度浮点数,所述加法用于对所述乘法运算的结果相加,所述加法运算的位数大于所述乘法运算的位数。
43、在一种实现方式中,所述加法运算的位数大于或等于49位。
44、在一种实现方式中,在所述加法运算之前对齐的指数位数大于或等于9。
45、在一种实现方式中,所述fma运算具体包括针对两组输入值的两次乘法运算、以及针对所述两次乘法运算的结果的加法运算,其中,在所述加法运算之前,所述fma运算还包括对其中一次乘法运算的结果的符号的取反运算。
46、在一种实现方式中,所述fma运算还包括针对所述加法运算的结果的舍入操作,以使所述fma运算的输出值为所述单精度浮点数。
47、在一种实现方式中,所述第一处理单元还用于:确定所述射线的主维度,并将所述主维度作为三维坐标系的z轴,所述主维度为绝对值最大的维度;对所述射线和所述三角形进行移动,以使所述射线的原点位于所述三维坐标系的原点;根据变换矩阵,对所述射线和所述三角形进变换,以使所述射线的方向沿所述z轴;将所述三角形沿所述射线的方向投影至x轴和y轴形成的所述平面坐标系。
48、在一种实现方式中,所述变换矩阵包括两个缩放矩阵与一个剪切矩阵的乘积。
49、在一种实现方式中,所述第一处理单元还用于:根据所述重心坐标,确定所述射线在所述三维坐标系中的命中距离为:t=(u·az’+v·bz’+w·cz’)/det,其中,t为所述命中距离,u、v和w为所述重心坐标,az’、bz’和cz’分别为所述三角形投影至所述平面坐标系之前其第一顶点、第二顶点和第三顶点在三维坐标系中的z轴坐标。
50、第四方面,提供了一种用于光线追踪的装置,所述装置包括:第一处理单元,用于将射线和三角形投影至平面坐标系,并根据fma运算,确定射线与所述平面坐标系的交点对应的重心坐标,其中,所述fma运算包括乘法运算和加法运算,所述乘法运算用于对所述fma运算的输入值相乘,所述fma运算的输入值为单精度浮点数,所述加法用于对所述乘法运算的结果相加,所述加法运算的位数大于所述乘法运算的位数;第二处理单元,用于根据所述重心坐标,确定所述三角形是否被所述射线击中。
51、在一种实现方式中,所述加法运算的位数大于或等于49位。
52、在一种实现方式中,在所述加法运算之前对齐的指数位数大于或等于9。
53、在一种实现方式中,所述fma运算具体包括针对两组输入值的两次乘法运算、以及针对所述两次乘法运算的结果的加法运算,其中,在所述加法运算之前,所述fma运算还包括对其中一次乘法运算的结果的符号的取反运算。
54、在一种实现方式中,所述fma运算还包括针对所述加法运算的结果的舍入操作,以使所述fma运算的输出值为所述单精度浮点数。
55、在一种实现方式中,所述第一处理单元还用于:确定所述射线的主维度,并将所述主维度作为三维坐标系的z轴,所述主维度为绝对值最大的维度;对所述射线和所述三角形进行移动,以使所述射线的原点位于所述三维坐标系的原点;根据变换矩阵,对所述射线和所述三角形进变换,以使所述射线的方向沿所述z轴;将所述三角形沿所述射线的方向投影至x轴和y轴形成的所述平面坐标系。
56、在一种实现方式中,所述变换矩阵包括两个缩放矩阵与一个剪切矩阵的乘积。
57、在一种实现方式中,若所述三角形被所述射线击中,所述第一处理单元还用于:根据所述重心坐标,确定所述射线在所述三维坐标系中的命中距离。
58、第五方面,提供了一种用于光线追踪的设备,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运用所述存储器中存储的计算机程序以执行上述第一方面或第一方面的任一实现方式中所述的方法,和/或,上述第二方面或第二方面的任一实现方式中所述的方法。
59、第六方面,提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序使得计算机执行上述第一方面或第一方面的任一实现方式中所述的方法,和/或,上述第二方面或第二方面的任一实现方式中所述的方法。
60、第七方面,提供了一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行上述第一方面或第一方面的任一实现方式中所述的方法,和/或,上述第二方面或第二方面的任一实现方式中所述的方法。
61、第八方面,提供了一种芯片,包括处理器,所述处理器用于从存储器中调用并运用计算机程序,使得安装有所述芯片的设备执行上述第一方面或第一方面的任一实现方式中所述的方法,和/或,上述第二方面或第二方面的任一实现方式中所述的方法。
1.一种光线追踪的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述若所述交点位于所述投影三角形与其他三角形共用的公共边或者公共顶点,根据所述投影三角形的至少两个顶点在所述平面坐标系中的坐标,确定所述三角形是否被所述射线击中,包括:
3.根据权利要求2所述的方法,其特征在于,所述预定条件包括:
4.根据权利要求3所述的方法,其特征在于,所述投影三角形的顶点的卷绕方向为顺时针cw方向,且沿所述cw方向,所述公共边的两个顶点或者所述公共顶点对应的边的两个顶点,依次为所述投影三角形的第一顶点和第二顶点,所述预定条件包括:
5.根据权利要求3所述的方法,其特征在于,所述投影三角形的顶点的卷绕方向为逆时针ccw方向,且沿所述ccw方向,所述公共边的两个顶点或者所述公共顶点对应的边的两个顶点,依次为所述投影三角形的第一顶点和第二顶点,所述预定条件包括:
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述平面坐标系垂直于所述射线,且所述交点为所述平面坐标系的原点。
8.根据权利要求1至5中任一项所述的方法,其特征在于,所述重心坐标用于表示所述交点与所述投影三角形的三个顶点连线所形成的三个三角形各自的面积。
9.根据权利要求1至5中任一项所述的方法,其特征在于,所述重心坐标用于表示所述交点与所述投影三角形的三个顶点连线所形成的三个三角形各自占所述投影三角形的面积的比例。
10.根据权利要求1至5中任一项所述的方法,其特征在于,所述重心坐标为:
11.根据权利要求10所述的方法,其特征在于,所述根据射线与所述平面坐标系的交点对应的重心坐标,确定所述交点与所述投影三角形的位置关系,包括:
12.根据权利要求1至5中任一项所述的方法,其特征在于,在所述确定所述交点与所述投影三角形的位置关系之前,所述方法还包括:
13.根据权利要求12所述的方法,其特征在于,所述加法运算的位数大于或等于49位。
14.根据权利要求12所述的方法,其特征在于,在所述加法运算之前对齐的指数位数大于或等于9。
15.根据权利要求12所述的方法,其特征在于,所述fma运算具体包括针对两组输入值的两次乘法运算、以及针对所述两次乘法运算的结果的加法运算,其中,在所述加法运算之前,所述fma运算还包括对其中一次乘法运算的结果的符号的取反运算。
16.根据权利要求12所述的方法,其特征在于,所述fma运算还包括针对所述加法运算的结果的舍入操作,以使所述fma运算的输出值为所述单精度浮点数。
17.根据权利要求1至5中任一项所述的方法,其特征在于,在所述确定所述交点与所述投影三角形的位置关系之前,所述方法还包括:
18.根据权利要求17所述的方法,其特征在于,所述变换矩阵包括两个缩放矩阵与一个剪切矩阵的乘积。
19.根据权利要求17所述的方法,其特征在于,若所述三角形被所述射线击中,所述方法还包括:
20.一种用于光线追踪的装置,其特征在于,所述装置包括:
21.一种用于光线追踪的设备,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运用所述存储器中存储的计算机程序以执行根据权利要求1至19中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行根据权利要求1至19中任一项所述的方法。
23.一种芯片,其特征在于,包括处理器,所述处理器用于从存储器中调用并运用计算机程序,使得安装有所述芯片的设备执行根据权利要求1至19中任一项所述的方法。