用于渲染系统中的子图元存在指示的压缩和解压缩技术方案

技术编号:39638924 阅读:10 留言:0更新日期:2023-12-09 11:00
本申请涉及用于渲染系统中的子图元存在指示的压缩和解压缩。提供了一种方法和压缩单元,用于将子图元存在指示块压缩成压缩数据块。对子图元存在指示执行空间去相关,以确定存在指示。空间去相关包括对于第一维度中的每一行:对于存在指示:基于行中的一个或多个其他存在指示来确定存在指示的预测值,用存在指示和存在指示的所确定的预测值之间的差值来替换存在指示。空间去相关还包括对于第二维度中的每一行:对于存在指示:基于行中的一个或多个其他存在指示来确定存在指示的预测值,用存在指示和存在指示的所确定的预测值之间的差值来替换存在指示。对空间去相关的存在指示执行熵编码,以确定熵编码的数据。熵编码的数据存储在压缩数据块中。据存储在压缩数据块中。据存储在压缩数据块中。

【技术实现步骤摘要】
用于渲染系统中的子图元存在指示的压缩和解压缩
[0001]相关申请的相交引用
[0002]本申请要求于2022年5月30日提交的英国专利申请2207939.6和2207936.2的优先权,这些专利申请以引用方式全文并入本文中。


[0003]本公开涉及压缩和/或解压缩用于诸如光线跟踪系统之类的渲染系统中的子图元存在指示的技术。

技术介绍

[0004]渲染系统可以用来生成场景的图像。两种常见的渲染技术是光线跟踪和光栅化。特别地,光线跟踪是一种计算渲染技术,其用于通过跟踪通常来自相机的视角的光(“光线”)穿过场景的路径来生成场景(例如,3D场景)的图像。每条光线被建模为源自相机,并通过像素进入场景。当光线横越场景时,其可能与场景内的物体相交。可对光线和其相交的物体之间的相交建模以创建逼真的视觉效果。例如,响应于确定光线与物体相交,可以针对相交执行着色器程序(即,计算机代码的一部分)。程序员可以编写着色器程序以定义系统如何对相交(所述相交例如可能导致向场景中发射一个或多个二次光线)作出反应,例如,以表示光线从相交物体的反射或光线通过物体的折射(例如,如果物体是透明或半透明的)。作为另一个示例,着色器程序可以使一条或多条光线发射到场景中,以用于确定物体是否处于交点处的阴影中。执行着色器程序(和处理相关的二次光线)的结果可以是计算光线穿过的像素的颜色值。
[0005]使用光线跟踪渲染场景的图像可以涉及执行许多相交测试,例如执行数十亿个相交测试以渲染场景的图像。为了减少需要执行的相交测试的数量,光线跟踪系统可以生成加速结构,其中加速结构的每个节点表示场景内的区域。加速结构通常是分层的(例如,具有树结构),使得其包含多个级别的节点,其中靠近加速结构的顶部的节点表示场景中相对大的区域(例如,根节点可以表示整个场景),靠近加速结构的底部的节点表示场景中相对小的区域。加速结构的叶节点表示场景中包围至少一个图元或图元的一部分的区域,并且具有指向包围的图元的指针。
[0006]可以使用加速结构,通过首先测试光线与加速结构的根节点的相交(例如,以递归方式)对光线执行相交测试。如果发现光线与父节点(例如,根节点)相交,则测试可以进行到所述父节点的子节点。相比之下,如果发现光线不与父节点相交,则可以避免对该父节点的子节点的相交测试,从而节省计算工作量。如果发现光线与叶节点相交,则可针对由叶节点表示的区域内的物体对光线进行测试,从而确定光线与哪个(些)物体相交。可以使用“图元”来表示对象。图元表示系统中的几何单位,并且例如可以是凸多边形。图元通常是三角形,但是它们也可以是其他形状,例如矩形(术语“矩形”在本文中用于包括“正方形”)、五边形、六边形或非平面形状,诸如球形或双立方曲面片,或者具有弯曲边缘等。
[0007]图元通常是简单的几何形状,以便于相交测试来确定光线是否与图元相交。然而,
图元可以用来表示更复杂的形状。例如,可以将纹理(例如2D图像或3D体积)应用于图元,其中纹理可以具有确定图元上不同位置处的不透明度的α值,例如,最大采样α值(例如,对于8位α值,值为255)意味着图元在采样位置处完全不透明,而最小采样α值(例如,值为0)意味着图元在采样位置处完全透明。最小α值和最大α值之间的值可以表示部分不透明度。出于光线跟踪系统中相交测试的目的,如果光线在图元完全透明的位置处(即,在α值为零的位置处)与图元相交,则该相交不被接受,即光线直接穿过图元。以这种方式,将α值设置为零可以用于表示图元中的孔,即考虑到图元上就相交测试过程而言“不存在”的位置。对于中间α值,系统可以选择对图元后面的对象和阴影表面本身进行加权求和,或者可能使用阈值,在本领域中通常称为α测试。包括不存在区域的纹理可以被称为“穿通纹理”、“α测试纹理”或“掩蔽纹理”,并且这些纹理所应用到的图元可以被称为“穿通图元”、“α测试透明图元”或“掩蔽图元”。穿通图元可用于表示其中具有复杂周边或大量孔的几何形状,诸如具有少量图元的叶和链节围栏。
[0008]需注意,“纹理”不一定是实际的图像—它可能是“在飞行中”计算的。这种计算可以通过执行“着色器”程序来执行。因此,“检查纹理”也可以理解为包括这些计算方法。
[0009]图1示出共享边缘以形成四边形的两个三角形图元1021和1022的示例。表示叶子的纹理被应用于这两个图元。该纹理具有一些完全透明的区域(例如,104),使得它们出于相交测试的目的而不存在。纹理还具有一些不透明的区域(例如,106)(例如,它们是不透明的),使得它们出于相交测试的目的而存在。最后,可能有少量区域(例如,沿着区域104和106之间的边界)是部分透明的,这可以用例如前面提到的用于“中间α”值的两种方法来处理。不同的光线跟踪系统对于寻找光线与部分透明区域的交点可能不同地反应,例如,该相交可以被视为命中、未命中或部分命中。作为部分命中的结果,可以产生一条或多条附加光线。
[0010]当相交测试过程发现光线与穿通图元相交时,则可以停止光线的相交测试过程,同时在可编程执行单元上执行着色器程序,以确定图元是否出现在光线与图元相交的交点处。图元在交点处的存在通常由映射到图元上的纹理的α通道来确定。相交测试过程(其可以在固定功能硬件中实现)和着色器程序(其在可编程执行单元上执行)之间的传递将等待时间引入到光线跟踪系统中。例如,当着色器程序在可编程执行单元上执行以确定交点处图元的存在时,实现相交测试过程的固定功能硬件可能会停止数千个时钟周期。因此,减少着色器程序需要被执行以确定在交点处穿通图元的存在的次数将显著提高光线跟踪系统的性能。在不增加用于表示几何形状的图元的数量的情况下,减少需要执行着色器程序来确定交点处存在穿通图元的次数将是特别有益的,因为增加图元的数量将增加光线跟踪系统中的处理成本,例如对加速结构的渲染、模拟和更新的处理成本。
[0011]由Holger Gruen、Carsten Benthin和Sven Woop撰写的名为“Sub

triangle opacity masks for faster ray tracing of transparent objects”的论文(Proceedings of the ACM on Computer Graphics and Interactive Techniques,第3卷,第2期,文章编号:18)提出了使用子三角形不透明掩模用于α测试的透明图元的光线跟踪。每个三角形图元被细分成一组一致大小的子图元。例如,图2示出三角形图元202,其被细分成64个一致大小的子图元,标记为0至63。三角形图元202的三个顶点的重心坐标被标记为b=0,0,1,b=0,1,0和b=1,0,0。三角形图元202内的任何位置可以用重心坐标唯一地
标识,从而指示该位置在子图元(0至63)中的哪一者内。对于每个子图元(0至63),在预处理步骤中进行评估,以确定子图元存在指示,其指示每个子图元是:(i)完全存在,(ii)完全不存在,还是(iii)部分存在。如果子图元部分存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将用于渲染系统中的子图元存在指示的块压缩成压缩数据块的方法,所述方法包括:对所述子图元存在指示块中的所述子图元存在指示执行空间去相关以确定空间去相关的存在指示,所述执行空间去相关包括:(a)对于所述存在指示块内第一维度中的多行存在指示中的每一行:对于所述行中的所述存在指示中的一个或多个存在指示:(i)基于所述行中的一个或多个其他存在指示来确定所述存在指示的预测值,以及(ii)用所述存在指示和所述存在指示的所确定的预测值之间的差值来替换所述存在指示;以及(b)对于所述存在指示块内第二维度中的多行存在指示中的每一行:对于所述行中的所述存在指示中的一个或多个存在指示:(i)基于所述行中的一个或多个其他存在指示来确定所述存在指示的预测值,以及(ii)用所述存在指示和所述存在指示的所确定的预测值之间的差值来替换所述存在指示;对所述空间去相关的存在指示执行熵编码,以确定熵编码的数据;以及将所述熵编码的数据存储在所述压缩数据块中。2.如权利要求1所述的方法,其中所述第一维度中的行中的被确定预测值的所述一个或多个存在指示是所述第一维度中所述行中的备选存在指示,并且其中所述第二维度中的行中的被确定预测值的所述一个或多个存在指示是所述第二维度中所述行中的备选存在指示。3.如权利要求1或2所述的方法,其中预测值的所述确定所基于的所述行中的所述一个或多个其他存在指示与被确定所述预测值的所述存在指示相邻。4.如任一项前述权利要求所述的方法,其中第一维度中的所述多行存在指示包括所述存在指示块内的所述第一维度中的所有所述存在指示行,并且其中第二维度中的所述多行存在指示包括所述存在指示块内的所述第二维度中的所有所述存在指示行。5.如任一项前述权利要求所述的方法,其中所述存在指示中的每个存在指示指示存在状态,所述存在状态是以下之一:(i)完全存在,(ii)完全不存在,以及(iii)部分存在。6.如权利要求5所述的方法,其中部分存在的存在状态由所述子图元存在指示块中的零值来表示。7.如权利要求5或6所述的方法,其中存在以下情况中的任一情况:在所述子图元存在指示块中,完全存在的存在状态由值一表示,并且完全不存在的存在状态由值二表示;或者在所述子图元存在指示块中,完全存在的存在状态由值二表示,并且完全不存在的存在状态由值一表示。8.如任一项前述权利要求所述的方法,其中所述用所述存在指示和所述存在指示的所确定的预测值之间的差值替换所述存在指示包括使用模3运算执行差值计算,以确定所述存在指示和所述存在指示的所确定的预测值之间的所述差值。9.如任一项前述权利要求所述的方法,其中所述基于所述行中的一个或多个其他存在指示来确定所述存在指示的预测值使用Predict函数来执行,所述函数根据下式进行运算:
并且其中所述用所述存在指示和所述存在指示的所确定的预测值之间的差值替换所述存在指示根据下式来执行:其中p
2i
是所述行中第(2i)个存在指示,p
2i+1
是所述行中第(2i+1)个存在指示,并且p
2i+2
是所述行中第(2i+2)个存在指示。10.如权利要求9所述的方法,其中如果p
2i+1
是所述行中最后的存在指示,使得p
2i+2
不存在于所述存在指示块中,则p
2i
的值用来代替所述Predict函数中的p
2i+2
。11.如任一项前述权利要求所述的方法,其中所述存在指示块内的所述第一维度的所述存在指示行是所述存在指示块内的存在指示排,并且所述存在指示块内的所述第二维度的所述存在指示行是所述存在指示块内的存在指示列。12.如权利要求1至10中...

【专利技术属性】
技术研发人员:S
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1