CN118262026A - 基于光线追踪的相交判断方法、处理器、系统及电子设备 - Google Patents
基于光线追踪的相交判断方法、处理器、系统及电子设备 Download PDFInfo
- Publication number
- CN118262026A CN118262026A CN202211680381.3A CN202211680381A CN118262026A CN 118262026 A CN118262026 A CN 118262026A CN 202211680381 A CN202211680381 A CN 202211680381A CN 118262026 A CN118262026 A CN 118262026A
- Authority
- CN
- China
- Prior art keywords
- vertex
- axial
- ray
- target
- coordinates
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims abstract description 164
- 238000012545 processing Methods 0.000 claims description 23
- 239000013598 vector Substances 0.000 claims description 6
- 239000002699 waste material Substances 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 13
- 238000009877 rendering Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000004075 alteration Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000004040 coloring Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Abstract
本公开提供一种基于光线追踪的相交判断方法、处理器、系统及电子设备。该方法包括获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。该方案避免了带宽资源和运算资源的浪费。
Description
技术领域
本公开涉及图形处理器技术领域,尤其涉及一种基于光线追踪的相交判断方法、处理器、系统及电子设备。
背景技术
光线追踪是图形处理器(Graphics Processing Unit,GPU)图像渲染过程中的步骤之一,可以实现更接近真实视觉场景的实时渲染效果。光线追踪的基本原理是从图像的每个像素点发出一定数量的光线,根据每条光线与空间中几何物体相交的情况计算反射和折射的结果,最终得到像素接近真实的阴影和倒影等光线效果。
在GPU实际计算中,空间的几何物体都被拆分为多个(如三角形)图元。光线追踪的步骤之一为:计算每条光线与空间中哪些图元相交。但是如果每条光线和每个图元都对应做相交计算,计算量很大,需要较长的运算时间和较大的运算资源,所以通常需要针对每条光线,先通过简单方式预先筛选出部分不与其相交的图元,来降低运算量。而现有技术中常用的方法是:将空间分为多个大包围盒(Bounding Box),在大包围盒中再根据其中图元的位置生成包围图元的小包围盒;每条光线先判断是否与大包围盒相交,在相交的大包围盒中再判断是否与小包围盒相交;最终再通过相交计算来验证是否与相交的小包围盒中包围的图元真正相交。但是包围盒的数据会占据一定的存储资源,通常在包围盒的数据生成之后需要先写回显存,在判断光线是否与包围盒相交时再将包围盒的数据从显存中读回,包围盒的数据写回显存以及从显存中读回的过程中,造成了硬件带宽资源的浪费,且需要一定的读写时间,也会造成运算资源的浪费。
发明内容
本公开的目的是提供一种基于光线追踪的相交判断方法、处理器、系统及电子设备,解决了现有技术中光线追踪的相交测试过程中包围盒引起的带宽资源浪费和运算资源浪费的技术问题。
根据本公开的一个方面,提供一种基于光线追踪的相交判断方法,包括:
获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;
根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;
将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
在一些实施例中,上述基于光线追踪的相交判断方法中,目标光线在第一轴向和第二轴向上的光线方程分别为:
R1=O1+t×d1;
R2=O2+t×d2;
其中,O1和O2分别为目标光线的起点的第一轴向坐标和第二轴向坐标,d1和d2为目标光线分别在第一轴向和第二轴向上的方向向量,t为光线距离,R1和R2分别为目标光线上光线距离为t的点的第一轴向坐标和第二轴向坐标;
每个顶点对应的映射点的第一轴向坐标的计算式为:
R1j=O1+d1*(P2j–O2)/d2;
其中,R1j为第j个顶点对应的映射点的第一轴向坐标,P2j为第j个顶点的第二轴向坐标。
在一些实施例中,上述基于光线追踪的相交判断方法中,当第一轴向为X轴方向时,第二轴向为Y轴方向或Z轴方向;
当第一轴向为Y轴方向时,第二轴向为X轴方向或Z轴方向;
当第一轴向为Z轴方向时,第二轴向为X轴方向或Y轴方向。
在一些实施例中,上述基于光线追踪的相交判断方法中,将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交,包括以下步骤:
当各个顶点中不存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点时,分别计算各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值;
根据各个顶点对应的差值的正负属性,赋予各个顶点对应的符号位;其中,在差值的为正值或负值,对应的符号位分别为0或1,或,对应的符号位分别为1或0;
将各个顶点对应的符号位进行相与运算,各个顶点对应的符号位进行相或运算,且将相与运算的结果和相或运算的结果进行异或运算,当异或运算的结果为0时,判断目标图元和目标光线不相交。
在一些实施例中,上述基于光线追踪的相交判断方法中,还包括:
当各个顶点中存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点,或,各个顶点中同时存在第一顶点和第二顶点时,将目标图元和目标光线进行相交计算,以验证目标图元与目标光线之间的相交关系;
其中,第一顶点为第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,第二顶点为第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
根据本公开的另一方面,提供一种光线追踪处理器,包括:
信息获取模块,被配置为获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;
计算模块,被配置为根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;
判断模块,被配置为将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
在一些实施例中,上述光线追踪处理器中,目标光线在第一轴向和第二轴向上的光线方程分别为:
R1=O1+t×d1;
R2=O2+t×d2;
其中,O1和O2分别为目标光线的起点的第一轴向坐标和第二轴向坐标,d1和d2为目标光线分别在第一轴向和第二轴向上的方向向量,t为光线距离,R1和R2分别为目标光线上光线距离为t的点的第一轴向坐标和第二轴向坐标;
每个顶点对应的映射点的第一轴向坐标的计算式为:
R1j=O1+d1*(P2j–O2)/d2;
其中,R1j为第j个顶点对应的映射点的第一轴向坐标,P2j为第j个顶点的第二轴向坐标。
在一些实施例中,上述光线追踪处理器中,当第一轴向为X轴方向时,第二轴向为Y轴方向或Z轴方向;
当第一轴向为Y轴方向时,第二轴向为X轴方向或Z轴方向;
当第一轴向为Z轴方向时,第二轴向为X轴方向或Y轴方向。
在一些实施例中,上述光线追踪处理器中,判断模块,包括:
差值计算单元,被配置为当各个顶点中不存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点时,分别计算各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值;
符号位赋予单元,被配置为根据各个顶点对应的差值的正负属性,赋予各个顶点对应的符号位;其中,在差值的为正值或负值,对应的符号位分别为0或1,或,对应的符号位分别为1或0;
与运算单元,被配置为将各个顶点对应的符号位进行相与运算;
或运算单元,被配置为将各个顶点对应的符号位进行相或运算;
异或运算单元,被配置为将相与运算的结果和相或运算的结果进行异或运算,当异或运算结果为0时,判断目标图元和目标光线不相交。
在一些实施例中,上述光线追踪处理器中,还包括:
相交计算模块,被配置为当各个顶点中存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点,或,各个顶点中同时存在第一顶点和第二顶点时,将目标图元和目标光线进行相交计算,以验证目标图元与目标光线之间的相交关系;
其中,第一顶点为第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,第二顶点为第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
根据本公开的另一方面,提供一种图形处理器,包括上述任一实施例的光线追踪处理器。
根据本公开的另一方面,提供一种图形处理系统,包括上述任一实施例的图形处理器。
根据本公开的另一方面,提供一种电子组件,包括上述任一实施例的图形处理系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子组件。
附图说明
图1为本公开一个实施例提供的基于光线追踪的相交判断方法的流程示意图;
图2为本公开一个实施例提供的基于光线追踪的相交判断方法的测试原理图;
图3为本公开一个实施例提供的光线追踪处理器的结构示意图;
图4为本公开一个实施例提供的光线追踪处理器中判断模块的结构示意图;
图5为本公开一个实施例提供的图形处理系统结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种基于光线追踪的相交判断方法、处理器、系统及电子设备,该方法包括:获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
也就是说,针对待渲染图像中的各个图元,可以通过该方案预先筛除部分不与目标光线相交的图元,这种方案可以实现与包围盒(Bounding Box)相同的目的。且通过图元的各个顶点的坐标和光线的光线方程计算得到映射点的坐标,就可以初步判断图元与目标光线的相交关系,映射点的坐标的数据量很小且可实时计算实时使用,该过程中无需从显存中读取除顶点坐标之外的数据,也无需向显存中写入数据,避免了带宽资源的浪费,且大大节约了运算过程中的读写时间,所以还可以避免运算资源的浪费。
本公开的一个实施例提供一种基于光线追踪的相交判断方法,如图1所示,包括:
步骤S110:获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;
步骤S120:根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的各个映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;
步骤S130:将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
其中,GPU的图形渲染过程中,通常在顶点着色阶段(vertex shading)会把空间中待渲染图像中所有图形都划分为多个图元,如三角形图元,同时也就得到了图元的各个顶点的二维坐标,即X轴坐标和Y轴坐标,然后计算每个三角形图元的三个顶点的深度信息(也即Z轴坐标),存放在显存中。然后,在片元着色阶段(Fragment Shading)会从显存中读取三角形图元的顶点的二维坐标(X轴坐标和Y轴坐标)和深度信息(Z轴坐标)做光栅化,把3D图形映射到2D平面,即得到2D光栅图(渲染结果)。而片元着色阶段也可以同时进行光线追踪,上述相交判断方案中,从显存中读取顶点坐标的步骤可以与光栅化过程中读取顶点坐标的步骤复用,还进一步避免了带宽资源的浪费,也进一步节约了运算过程中的读写时间,从而进一步避免了运算资源的浪费。
上述方案中,一顶点对应的映射点可以理解为是目标光线上第二轴向坐标与该顶点的第二轴向坐标相同的点。当目标图元和目标光线相交时,有如下两种情况:
(1)各个顶点中至少一个顶点与其对应的映射点重合,重合的顶点和映射点之间不仅第二轴向坐标相同,而且第一轴向坐标也相同;
(2)在第一轴方向上,各个顶点中存在高于其对应的映射点的顶点,同时也存在低于其对应的映射点的顶点,如图2所示(图2中第一轴方向为Z轴方向),也即各个顶点中同时存在第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,同时也存在第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
所以,排除以上两种情况后,剩下的情况也就是不相交的情况,也即:
(1)各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标;
(2)各个顶点的第一轴向坐标分别小于其对应的映射点的第一轴向坐标。
以上两种情况满足其一,目标图元和目标光线之间不相交。
其中,目标图元可以为点、线或多边形图元.
当目标图元为点时,目标图元的顶点数量为1,当该顶点的第一轴向坐标大于其对应的映射点的第一轴向坐标,或小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
当目标图元为线时,目标图元的顶点数量为2,当这2个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
当目标图元为多边形时,目标图元的顶点数量等于多边形图元的边的数量,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
另外,由于点、线图元也可以扩展为多边形图元,所以目标图元可以优先选择多边形图元。
而,多边形图元可以优先选择三角形图元。这是由于三条边以上的多边形图元都可以再划分为多个三角形图元,也即三角形图元可看作为最基本的多边形图元,以三角形图元和光线的相交测试来实现光线追踪,可以实现更优的光线追踪效果。
在一些实施例中,当第一轴向为X轴方向时,第二轴向为Y轴方向或Z轴方向;
当第一轴向为Y轴方向时,第二轴向为X轴向或Z轴方向;
当第一轴向为Z轴方向时,第二轴向为X轴向或Y轴方向。
其中,当第一轴向为X轴方向,第二轴向为Y轴方向或Z轴方向时,步骤S120具体为:根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的X轴坐标;其中,每个顶点的Y轴坐标等于其对应的映射点的Y轴坐标,或每个顶点的Z轴坐标等于其对应的映射点的Z轴坐标。对应的,一顶点对应的映射点可以理解为是目标光线上Y轴坐标与该顶点的Y轴坐标相同的点,或者为目标光线上Z轴坐标与该顶点的Z轴坐标相同的点。
当第一轴向为Y轴方向,第二轴向为X轴方向或Z轴方向时,步骤S120具体为:根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的Y轴坐标;其中,每个顶点的X轴坐标等于其对应的映射点的X轴坐标,或每个顶点的Z轴坐标等于其对应的映射点的Z轴坐标。对应的,一顶点对应的映射点可以理解为是目标光线上X轴坐标与该顶点的X轴坐标相同的点,或者为目标光线上Z轴坐标与该顶点的Z轴坐标相同的点。
当第一轴向为Z轴方向,第二轴向为X轴方向或Y轴方向时,步骤S120具体为:根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的Z轴坐标;其中,每个顶点的X轴坐标等于其对应的映射点的X轴坐标,或每个顶点的Y轴坐标等于其对应的映射点的Y轴坐标。对应的,一顶点对应的映射点可以理解为是目标光线上X轴坐标与该顶点的X轴坐标相同的点,或者为目标光线上Y轴坐标与该顶点的Y轴坐标相同的点。
需要说明的是,由于图像渲染过程中,Z轴坐标为深度信息,相对于X轴坐标和Y轴坐标上的差异,深度差异更为直观,所以可以优先选择第一轴向为Z轴方向,第二轴向为X轴方向或Y轴方向的方式来进行相交判断。
在一些实施例中,目标光线在第一轴向和第二轴向上的光线方程分别为:
R1=O1+t×d1;
R2=O2+t×d2;
其中,O1和O2分别为目标光线的起点的第一轴向坐标和第二轴向坐标,d1和d2为目标光线分别在第一轴向和第二轴向上的方向向量,t为光线距离,R1和R2分别为目标光线上光线距离为t的点的第一轴向坐标和第二轴向坐标。
上述光线方程中,O1、O2、d1和d2是已知的,代入不同的光线距离t就可以得到目标光线上各个点的第一轴向坐标和第二轴向坐标。
与上述光线方程对应的,每个顶点对应的映射点的第一轴向坐标的计算式为:
R1j=O1+d1*(P2j–O2)/d2;
其中,R1j为第j个顶点对应的映射点的第一轴向坐标,P2j为第j个顶点的第二轴向坐标。
上述计算式的推导原理为:每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标,且各个顶点的三维坐标是已知的,也就相当于每个映射点的第二轴向坐标是已知的,将该坐标代入第二轴向上的光线方程R2=O2+t×d2中,得到P2j=O2+t×d2,其中,P2j为第j个顶点的第二轴向坐标(也是第j个顶点对应的映射点的第二轴向坐标),进而可以推导出第j个顶点对应的映射点处的光线距离t=(P2j–O2)/d2,将第j个顶点对应的映射点处的光线距离t代入第一轴向上的光线方程R1=O1+t×d1中,得到第j个顶点对应的映射点的第一轴向坐标R1j=O1+d1*(P2j–O2)/d2。
在一些实施例中,当目标图元为三角形图元时,目标图元的三个顶点分别为顶点1、顶点2和顶点3(也即分别对应第一个顶点、第二个顶点和第三个顶点),如图2所示,通过上述第j个顶点对应的映射点的第一轴向坐标的计算式R1j=O1+d1*(P2j–O2)/d2,得到顶点1对应的映射点的第一轴向坐标R11=O1+d1*(P21–O2)/d2,其中,P21为顶点1的第二轴向坐标(也是顶点1对应的映射点的第二轴向坐标),以及顶点2对应的映射点的第一轴向坐标R12=O1+d1*(P22–O2)/d2,其中,P22为顶点2的第二轴向坐标(也是顶点2对应的映射点的第二轴向坐标),以及顶点3对应的映射点的第一轴向坐标R13=O1+d1*(P23–O2)/d2,其中,P23为顶点3的第二轴向坐标(也是顶点3对应的映射点的第二轴向坐标)。
由此,在步骤S130中,就可以将顶点1的第一轴向坐标P11、顶点2的第一轴向坐标P12和顶点3的第一轴向坐标P13分别与顶点1对应的映射点的第一轴向坐标R11、顶点2对应的映射点的第一轴向坐标R12和顶点3对应的映射点的第一轴向坐标R13进行比较,当顶点1的第一轴向坐标P11大于顶点1对应的映射点的第一轴向坐标R11(即P11>R11),顶点2的第一轴向坐标P12大于顶点2对应的映射点的第一轴向坐标R12(即P12>R12),顶点3的第一轴向坐标P13大于顶点3对应的映射点的第一轴向坐标R13(即P13>R13),或,顶点1的第一轴向坐标P11小于顶点1对应的映射点的第一轴向坐标R11(即P11<R11),顶点2的第一轴向坐标P12小于顶点2对应的映射点的第一轴向坐标R12(即P12<R12),顶点3的第一轴向坐标P13小于顶点3对应的映射点的第一轴向坐标R13(即P13<R13)时,判断目标图元和目标光线不相交。
除此之外,也可以分别计算顶点1的第一轴向坐标P11与顶点1对应的映射点的第一轴向坐标R11的差值(即P11-R11),顶点2的第一轴向坐标P12与顶点2对应的映射点的第一轴向坐标R12的差值(即P12-R12),顶点3的第一轴向坐标P13与顶点3对应的映射点的第一轴向坐标R13的差值(即P13-R13),当顶点1对应的差值(P11-R11)、顶点2对应的差值(P12-R12)和顶点3对应的差值(P13-R13)均小于0或均大于0时,也可以判断目标图元和目标光线不相交。
在一些实施例中,步骤S130包括以下步骤:
步骤S132:当各个顶点中不存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点时,分别计算各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值;
步骤S134:根据各个顶点对应的差值的正负属性,赋予各个顶点对应的符号位;其中,在差值的为正值或负值,对应的符号位分别为0或1,或,对应的符号位分别为1或0;
步骤S136:将各个顶点对应的符号位进行相与运算,各个顶点对应的符号位进行相或运算,且将相与运算的结果和相或运算的结果进行异或运算,当异或运算的结果为0时,判断目标图元和目标光线不相交。
上述判断过程的原理为,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值均大于0或均小于0,当对各个顶点对应的差值赋予对应的正负号符号位(正数为一个符号位,负数为另一符号位)时,各个顶点对应的差值的符号位是相同的,都为0或都为1,当都为1时,相与运算的结果为1,相或运算的结果也为1,当都为0时,相与运算的结果为0,相或运算的结果也为0,可见此时相与运算的结果和相或运算的结果是相同的,即相与运算的结果和相或运算的结果的异或结果为0,所以当相与运算的结果和相或运算的结果的异或结果为0时,就能反推出各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标,即属于目标图元和目标光线不相交的情形。
而,当相与运算的结果和相或运算的结果的异或结果为1时,说明相与运算的结果和相或运算的结果不相同,且由于不会出现相与运算的结果为1且相或运算的结果为0的情形,所以当相与运算的结果和相或运算的结果的异或结果为1时,可以反推出相与运算的结果为0且相或运算的结果为1,也即各个顶点对应的差值的符号位中有0也有1,也即相当于各个顶点中同时存在第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,以及第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点,即属于目标图元和目标光线可能相交的情形。
例如,当在差值的为正值或负值,对应的符号位分别为1或0时,各情形下的相与运算的结果、相或运算的结果、异或运算的结果如表1所示。
表1各情形下的运算结果
在一些实施例中,上述方法还包括:
步骤S140:当各个顶点中存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点,或,各个顶点中同时存在第一顶点和第二顶点时,将目标图元和目标光线进行相交计算,以验证目标图元与目标光线之间的相交关系;
其中,第一顶点为第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,第二顶点为第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
也就是说,当目标图元和目标光线属于可能相交的情形时,则将目标图元和目标光线进行真正的相交计算,以进一步验证目标图元与目标光线之间的相交关系。
其中,相交计算可以采用蒙特卡洛等光线追踪算法,在计算过程中,通常先计算目标光线与目标图元(如三角形图元)平面的交点,再判断该交点是否在三角形图元内,如果在三角形图元内的话,说明确实相交,具体相交计算过程此处不再赘述。
基于相同的发明构思,本公开实施例还提供一种光线追踪处理器200,如图3所示,包括:
信息获取模块210,被配置为获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;
计算模块220,被配置为根据每个顶点的三维坐标和目标光线的光线方程,分别计算每个顶点映射到目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;
判断模块230,被配置为将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断目标图元和目标光线不相交。
在一些实施例中,目标光线在第一轴向和第二轴向上的光线方程分别为:
R1=O1+t×d1;
R2=O2+t×d2;
其中,O1和O2分别为目标光线的起点的第一轴向坐标和第二轴向坐标,d1和d2为目标光线分别在第一轴向和第二轴向上的方向向量,t为光线距离,R1和R2分别为目标光线上光线距离为t的点的第一轴向坐标和第二轴向坐标;
每个顶点对应的映射点的第一轴向坐标的计算式为:
R1j=O1+d1*(P2j–O2)/d2;
其中,R1j为第j个顶点对应的映射点的第一轴向坐标,P2j为第j个顶点的第二轴向坐标。
其中,上述各个顶点对应的映射点的第一轴向坐标的计算原理与前述的相交判断方法实施例中相同,此处不再赘述。
在一些实施例中,当第一轴向为X轴方向时,第二轴向为Y轴方向或Z轴方向;
当第一轴向为Y轴方向时,第二轴向为X轴方向或Z轴方向;
当第一轴向为Z轴方向时,第二轴向为X轴方向或Y轴方向。
在一些实施例中,判断模块230,如图4所示,包括:
差值计算单元,被配置为当各个顶点中不存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点时,分别计算各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值;
符号位赋予单元,被配置为根据各个顶点对应的差值的正负属性,赋予各个顶点对应的符号位;其中,在差值的为正值或负值,对应的符号位分别为0或1,或,对应的符号位分别为1或0;
与运算单元,被配置为将各个顶点对应的符号位进行相与运算;
或运算单元,被配置为将各个顶点对应的符号位进行相或运算;
异或运算单元,被配置为将相与运算的结果和相或运算的结果进行异或运算,当异或运算结果为0时,判断目标图元和目标光线不相交。
在一些实施例中,差值计算单元可以为减法器,与运算单元可以为多输入的与门逻辑电路,或运算单元可以为多输入的或门逻辑电路,异或运算单元为两输入的异或门逻辑电路。
差值计算单元的数量、符号位赋予单元的数量可以与目标图元的顶点的数量一致,即差值计算单元、符号位赋予单元与顶点都是一对一的,如图4所示,当目标图元为三角形图元时,差值计算单元的数量为3,判断模块230可以将顶点1的第一轴向坐标P11和计算模块220计算得到的顶点1对应的映射点的第一轴向坐标R11输入第一个差值计算单元中,将顶点2的第一轴向坐标P12和计算模块220计算得到的顶点2对应的映射点的第一轴向坐标R12输入第二个差值计算单元中,将顶点3的第一轴向坐标P13和计算模块220计算得到的顶点3对应的映射点的第一轴向坐标R13输入第三个差值计算单元中,三个差值计算单元得到的三个差值分别输入对应的符号位赋予单元,根据差值的正负属性,赋予对应的符号位,三个符号位输入与运算单元(可以为三输入的与门逻辑电路),并输入或运算单元(可以为三输入的或门逻辑电路),与运算单元、或运算单元的输出端分别连接异或运算单元的两个输入端。
符号位赋予单元可以为符号位寄存器,其可以通过组合逻辑实现符号位的置位(即赋予)操作,该组合逻辑以差值计算单元(可以为减法器)的输出值的正负属性为判断条件,当满足置位0的条件时,该组合逻辑将符号位寄存器中的符号位置为0,当满足置位1的条件时,该组合逻辑将符号位寄存器中的符号位置为1。
在一些实施例中,还包括:
相交计算模块,被配置为
当各个顶点中存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点,或,各个顶点中同时存在第一顶点和第二顶点时,将目标图元和目标光线进行相交计算,以验证目标图元与目标光线之间的相交关系;
其中,第一顶点为第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,第二顶点为第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
其中,判断模块230基于与运算单元、或运算单元和异或运算单元进行相交判断的原理与对应的方法实施例中相同,此处不再赘述。
基于相同的发明构思,本公开实施例还提供一种图形处理器,包括上述任一实施例的光线追踪处理器。
基于相同的发明构思,本公开实施例还提供一种图形处理系统,包括上述任一实施例的图形处理器。
该图形处理系统可以是一个die(管芯),也可以是多die互联的一个SOC(Systemon Chip,片上系统),或者其他的组织形式。
下面以一个die为例,对本公开提供的图形处理系统的架构及工作原理进行说明。
在图5所示的一个实施例中,单die的图形处理系统包括多个GPU核(GPU core,即上述任一实施例的图形处理器)。
每个GPU核用来处理画图的命令,根据画图命令,执行图像渲染的Pipeline,还可以用来执行其他运算命令;多个GPU核作为一个整体完成执行画图或其他计算任务。每个GPU核中进一步包括:计算单元,用于执行着色器编译后的指令,属于可编程模块,由大量的ALU组成;缓存(Cache),用于GPU核数据的缓存,以减少对内存的访问;光栅化模块(即光栅化处理器),3D渲染管线的一个固定的阶段;划片(Tilling)模块,TBR和TBDR GPU架构中对一帧进行划片处理;裁剪模块,3D渲染管线的一个固定的阶段,裁剪掉观察范围外,或者背面不显示的图元;后处理模块,用于对画完的图进行缩放,裁剪,旋转等操作;微核(Microcore),用于GPU核上各个管线硬件模块之间的调度,或者用于多GPU核的任务调度。
如图5所示,图形处理系统还可以包括:
系统总线(片上网络)用于图形处理系统上各个IP核之间的数据交换;
通用DMA(Direct Memory Access,直接存储器访问),用于执行主机端到图形处理系统内存(例如显存)之间的数据搬移,例如,通过DMA将3D图形的顶点(vertex)数据从主机端搬到图形处理系统内存(显存);
PCIe控制器,用于和主机通信的接口,实现PCIe协议,使图形处理系统通过PCIe接口连接到主机上,主机上运行了图形API以及显卡的驱动等程序;
应用处理器,用于图形处理系统上各个模块任务的调度,例如GPU渲染完一帧图后通知应用处理器,应用处理器再启动显示控制器将GPU画完的图显示到屏幕上;
内存控制器,连接系统内存(显存),用于将SOC上的数据保存至系统内存(显存),也用于将系统内存(显存)中的数据,如3D图形的顶点(vertex)数据(可以包括顶点的二维坐标和深度信息,即X轴坐标、Y轴坐标和Z轴坐标)读回GPU核上;
显示控制器,控制将系统内存里的frame buffer以显示接口(HDMI,DP等)输出到显示器上;
视频解码,可以将主机硬盘上的编码的视频解码成能显示的画面;
视频编码,可以将主机硬盘上原始的视频码流编码成指定的格式返回给主机。
基于图5所示的图形处理系统,在一个实施例中,在光栅化阶段,通过DMA将3D图形的顶点(vertex)数据从主机端搬到图形处理系统内存(显存),GPU核中的光栅化模块(即光栅化处理器)通过内存控制器读取图形处理系统内存(显存)中的顶点的二维坐标和深度信息,即X轴坐标、Y轴坐标和Z轴坐标(也即三维坐标),然后做光栅化,把3D图形映射到2D平面,即得到2D光栅图(渲染结果)。同时,计算单元还执行光线追踪步骤,从图像的每个像素点发出一定数量的光线,根据每条光线与空间中几何物体相交的情况计算反射和折射的结果,最终得到像素接近真实的阴影和倒影等光线效果。其中,在根据每条光线与空间中几何物体相交的情况计算反射和折射的结果的过程中,针对每条光线,通过上述任一实施例的基于光线追踪的相交判断方法预先筛除部分不与该光线相交的图元,以降低相交计算量。
应当指出的是,以上仅以图5所示的具体结构为例,对本公开实施例提供的图形处理系统的实现方式做示例性说明。实际应用中,图形处理系统可以包括的图形处理器的具体实现方式可参照上述任一实施例,此处不再赘述。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中的图形处理系统。
在一些使用场景下,该电子组件的产品形式体现为显卡或CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (14)
1.一种基于光线追踪的相交判断方法,包括:
获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;
根据每个顶点的三维坐标和所述目标光线的光线方程,分别计算每个顶点映射到所述目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;
将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断所述目标图元和所述目标光线不相交。
2.根据权利要求1所述的基于光线追踪的相交判断方法,所述目标光线在第一轴向和第二轴向上的光线方程分别为:
R1=O1+t×d1;
R2=O2+t×d2;
其中,O1和O2分别为所述目标光线的起点的第一轴向坐标和第二轴向坐标,d1和d2为所述目标光线分别在第一轴向和第二轴向上的方向向量,t为光线距离,R1和R2分别为所述目标光线上光线距离为t的点的第一轴向坐标和第二轴向坐标;
每个顶点对应的映射点的第一轴向坐标的计算式为:
R1j=O1+d1*(P2j–O2)/d2;
其中,R1j为第j个顶点对应的映射点的第一轴向坐标,P2j为第j个顶点的第二轴向坐标。
3.根据权利要求1所述的基于光线追踪的相交判断方法,当第一轴向为X轴方向时,第二轴向为Y轴方向或Z轴方向;
当第一轴向为Y轴方向时,第二轴向为X轴方向或Z轴方向;
当第一轴向为Z轴方向时,第二轴向为X轴方向或Y轴方向。
4.根据权利要求1所述的基于光线追踪的相交判断方法,将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断所述目标图元和所述目标光线不相交,包括以下步骤:
当各个顶点中不存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点时,分别计算各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值;
根据各个顶点对应的差值的正负属性,赋予各个顶点对应的符号位;其中,在所述差值的为正值或负值,对应的符号位分别为0或1,或,对应的符号位分别为1或0;
将各个顶点对应的符号位进行相与运算,各个顶点对应的符号位进行相或运算,且将相与运算的结果和相或运算的结果进行异或运算,当异或运算的结果为0时,判断所述目标图元和所述目标光线不相交。
5.根据权利要求1所述的基于光线追踪的相交判断方法,还包括:
当各个顶点中存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点,或,各个顶点中同时存在第一顶点和第二顶点时,将所述目标图元和所述目标光线进行相交计算,以验证所述目标图元与所述目标光线之间的相交关系;
其中,所述第一顶点为第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,所述第二顶点为第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
6.一种光线追踪处理器,包括:
信息获取模块,被配置为获取待渲染图像中目标图元的各个顶点的三维坐标,以及目标光线的光线方程;
计算模块,被配置为根据每个顶点的三维坐标和所述目标光线的光线方程,分别计算每个顶点映射到所述目标光线上得到的映射点的第一轴向坐标;其中,每个顶点的第二轴向坐标等于其对应的映射点的第二轴向坐标;
判断模块,被配置为将各个顶点的第一轴向坐标分别与其对应的映射点的第一轴向坐标进行比较,当各个顶点的第一轴向坐标分别大于其对应的映射点的第一轴向坐标,或分别小于其对应的映射点的第一轴向坐标时,判断所述目标图元和所述目标光线不相交。
7.根据权利要求6所述的光线追踪处理器,所述目标光线在第一轴向和第二轴向上的光线方程分别为:
R1=O1+t×d1;
R2=O2+t×d2;
其中,O1和O2分别为所述目标光线的起点的第一轴向坐标和第二轴向坐标,d1和d2为所述目标光线分别在第一轴向和第二轴向上的方向向量,t为光线距离,R1和R2分别为所述目标光线上光线距离为t的点的第一轴向坐标和第二轴向坐标;
每个顶点对应的映射点的第一轴向坐标的计算式为:
R1j=O1+d1*(P2j–O2)/d2;
其中,R1j为第j个顶点对应的映射点的第一轴向坐标,P2j为第j个顶点的第二轴向坐标。
8.根据权利要求6所述的光线追踪处理器,当第一轴向为X轴方向时,第二轴向为Y轴方向或Z轴方向;
当第一轴向为Y轴方向时,第二轴向为X轴方向或Z轴方向;
当第一轴向为Z轴方向时,第二轴向为X轴方向或Y轴方向。
9.根据权利要求6所述的光线追踪处理器,所述判断模块,包括:
差值计算单元,被配置为当各个顶点中不存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点时,分别计算各个顶点的第一轴向坐标与其对应的映射点的第一轴向坐标的差值;
符号位赋予单元,被配置为根据各个顶点对应的差值的正负属性,赋予各个顶点对应的符号位;其中,在所述差值的为正值或负值,对应的符号位分别为0或1,或,对应的符号位分别为1或0;
与运算单元,被配置为将各个顶点对应的符号位进行相与运算;
或运算单元,被配置为将各个顶点对应的符号位进行相或运算;
异或运算单元,被配置为将相与运算的结果和相或运算的结果进行异或运算,当异或运算结果为0时,判断所述目标图元和所述目标光线不相交。
10.根据权利要求6所述的光线追踪处理器,还包括:
相交计算模块,被配置为当各个顶点中存在第一轴向坐标等于其对应的映射点的第一轴向坐标的顶点,或,各个顶点中同时存在第一顶点和第二顶点时,将所述目标图元和所述目标光线进行相交计算,以验证所述目标图元与所述目标光线之间的相交关系;
其中,所述第一顶点为第一轴向坐标大于其对应的映射点的第一轴向坐标的顶点,所述第二顶点为第一轴向坐标小于其对应的映射点的第一轴向坐标的顶点。
11.一种图形处理器,其中,包括权利要求6至10中任一项所述的光线追踪处理器。
12.一种图形处理系统,其中,包括权利要求11所述的图形处理器。
13.一种电子组件,其中,包括权利要求12所述的图形处理系统。
14.一种电子设备,其中,包括权利要求13所述的电子组件。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118262026A true CN118262026A (zh) | 2024-06-28 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10229529B2 (en) | System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table | |
US10957082B2 (en) | Method of and apparatus for processing graphics | |
US9092906B2 (en) | Graphic processor and method of early testing visibility of pixels | |
US20170249401A1 (en) | Modeling point cloud data using hierarchies of gaussian mixture models | |
US9245363B2 (en) | System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model | |
US7307628B1 (en) | Diamond culling of small primitives | |
US11348308B2 (en) | Hybrid frustum traced shadows systems and methods | |
US20160203635A1 (en) | Frustum tests for sub-pixel shadows | |
US11257181B2 (en) | Tiling a primitive in a graphics processing system by edge-specific testing of a subset of tiles in a rendering space | |
US20150179142A1 (en) | System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values | |
US10242482B2 (en) | Tiling a primitive in a graphics processing system | |
US9905037B2 (en) | System, method, and computer program product for rejecting small primitives | |
JP2017062789A (ja) | グラフィックス処理装置、及びテクスチャリングのためのlodを決定する方法 | |
US20150084952A1 (en) | System, method, and computer program product for rendering a screen-aligned rectangle primitive | |
US8860722B2 (en) | Early Z scoreboard tracking system and method | |
US6831642B2 (en) | Method and system for forming an object proxy | |
US7724254B1 (en) | ISO-surface tesselation of a volumetric description | |
WO2015200076A1 (en) | Accelerated single plane clipping of polygons in graphics processing | |
CN118262026A (zh) | 基于光线追踪的相交判断方法、处理器、系统及电子设备 | |
CN116263981B (zh) | 图形处理器、系统、装置、设备及方法 | |
US11468633B1 (en) | Methods and systems for tile-based graphics processing | |
US20230401667A1 (en) | Graphics processing systems | |
US20240203030A1 (en) | 3d model rendering method and apparatus, electronic device, and storage medium | |
US20240193718A1 (en) | Graphics processor | |
CN116957899A (zh) | 图形处理器、系统、装置、设备及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |