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

技术编号:39638945 阅读:12 留言:0更新日期:2023-12-09 11:00
本申请涉及用于渲染系统中的子图元存在指示的压缩和解压缩。提供了一种用于对压缩数据进行解压缩的方法和解压缩单元。接收压缩数据块。子图元存在指示块被细分成多个父区域,每个父区域被细分成多个子区域。压缩数据块包括分层表示,对于其子区域都具有相同存在状态的每个父区域,父级别数据被包括在分层表示中,而子区域的子级别数据没有被包括在分层表示中,对于其子区域并不都具有相同存在状态的每个父区域,子区域的子级别数据被包括在分层表示中。确定子级别数据是否被包括分层表示中。如果确定为是,则使用子级别数据来确定一个或多个子图元存在指示。如果确定为否,则在没有子级别数据的情况下,使用父级别数据来确定子图元存在指示。定子图元存在指示。定子图元存在指示。

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


[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内的任何位置可以用重心坐标唯一地标识,从而指示该位置在子图元(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对压缩数据进行解压缩以确定用于渲染系统中的一个或多个子图元存在指示的方法,所述方法包括:接收子图元存在指示块的压缩数据块,其中所述子图元存在指示块被细分成多个父区域,所述父区域中的每个父区域被细分成多个子区域,其中所述压缩数据块包括所述子图元存在指示块的分层表示,其中:(i)对于其子区域都具有相同存在状态的一个或多个父区域中的每个父区域,父级别数据被包括在所述分层表示中以表示所述父区域的存在状态,而所述父区域内的所述子区域的子级别数据没有被包括在所述分层表示中,并且(ii)对于其子区域并不都具有所述相同存在状态的一个或多个父区域中的每个父区域,所述父区域内的所述子区域的子级别数据被包括在所述分层表示中以表示所述父区域内的所述子区域的所述存在状态;确定子级别数据是否被包括在针对所述父区域中的一个父区域的所述分层表示中;如果确定子级别数据被包括在针对所述父区域中的所述一个父区域的所述分层表示中,则使用所述父区域中的所述一个父区域的子级别数据来确定所述父区域中的所述一个父区域中的一个或多个子图元存在指示;以及如果确定子级别数据没有被包括在所述父区域中的所述一个父区域的所述分层表示中,则在没有子级别数据的情况下,使用所述父区域中的所述一个父区域的父级别数据来确定所述父区域中的所述一个父区域中的一个或多个子图元存在指示。2.如权利要求1所述的方法,所述方法还包括从所述压缩数据块中读取所述父区域中的所述一个父区域的父级别数据,其中所读取的父级别数据用于确定子级别数据是否被包括在针对所述父区域中的所述一个父区域的所述分层表示中。3.如权利要求1或2所述的方法,其中所述子区域中的每个子区域与所述子图元存在指示块中的所述子图元存在指示中的相应一个子图元存在指示相对应。4.如任一前述权利要求所述的方法,其中所述子图元存在指示块中的所述存在指示中的每个存在指示指示存在状态,所述存在状态是以下中的一者:(i)完全存在,(ii)完全不存在,以及(iii)部分存在。5.如权利要求4所述的方法,其中表示父区域的存在状态的父级别数据指示:(i)所述父区域内的所有所述子区域完全存在,(ii)所述父区域内的所有所述子区域完全不存在,(iii)所述父区域内的所有所述子区域部分存在,或者(iv)所述父区域内的所述子区域具有混合存在状态,其中对于指示(i)、(ii)或(iii)的表示父区域的存在状态的父级别数据,确定子级别数据没有被包括在针对所述父区域的所述分层表示中,并且其中对于指示(iv)的表示父区域的存在状态的父级别数据,确定子级别数据被包括在针对所述父区域的所述分层表示中。6.如权利要求4或5所述的方法,其中表示子区域的存在状态的子级别数据指示:(i)所述子区域完全存在,(ii)所述子区域完全不存在,或者(iii)所述子区域部分存在。7.如任一前述权利要求所述的方法,其中所述父区域中的每个父区域内具有四个子区
域。8.如权利要求7所述的方法,对于其子区域并不都具有相同存在状态的所述一个或多个父区域中的每个父区域,所述父区域内的所述子区域中的三个子区域彼此具有所述相同存在状态,其中确定子级别数据被包括在针对所述父区域中的所述一个父区域的所述分层表示中,并且其中所述使用所述父区域中的所述一个父区域的所述子级别数据来确定所述父区域中的所述一个父区域中的一个或多个子图元存在指示包括:从所述父区域中的所述一个父区域的所述子级别数据中读取调色板指示,所述调色板指示指示以下中的一者:(i)所述父区域中的所述一个父区域中的所述四个子区域中的大多数子区域具有部分存在的存在状态,并且所述父区域中的所述一个父区域中的所述四个子区域中的少数子区域具有完全存在的存在状态,(ii)所述父区域中的所述一个父区域中的所述四个子区域中的大多数子区域具有部分存在的存在状态,并且所述父区域中的所述一个父区域中的所述四个子区域中的少数子区域具有完全不存在的存在状态,(iii)所述父区域中的所述一个父区域中的所述四个子区域中的大多数子区域具有完全存在的存在状态,并且所述父区域中的所述一个父区域中的所述四个子区域中的少数子区域具有部分存在的存在状态,以及(iv)所述父区域中的所述一个父区域中的所述四个子区域中的大多数子区域具有完全不存在的存在状态,并且所述父区域中的所述一个父区域中的所述四个子区域中的少数子区域具有部分存在的存在状态;以及从父区域中的所述一个父区域的子级别数据中读取少数位置指示,所述少数位置指示指示所述父区域内的所述四个子区域中的所述少数子区域的所述位置;以及使用所读取的调色板指示和所读取的少数位置指示来确定所述父区域中的所述一个父区域中的所述一个或多个子图元存在指示。9.如权利要求1至8中任一项所述的方法,其中所述子图元存在指示块被细分成多个祖父区域,其中所述祖父区域中的每个祖父区域被细分成相应多个所述父区域。10.如权利要求9所述的方法,其中对于其父区域都在所述父区域内具有子区域的一个或多个祖父区域中的每个祖父区域,所述子区域都具有所述相同存在状态,祖父级别数据被包括在所述分层表示中以表示所述祖父区域的存在状态,而所述祖父区域内的所述父区域或所述子区域的父级别数据或子级别数据没有被包括在所述分层表示中,其中所述方法还包括:确定父级别数据是否被包括在针对所述祖父区域中的一个祖父区域的所述分层表示中;如果确定父级别数据被包括在针对所述祖父区域中的所述一个祖父区域的所述分层表示中,则使用所述祖父区域中的所述一个祖父区域的所述父级别数据来确定所述祖父区域中的所述一个祖父区域中的一个或多个子图元存在指示;以及如果确定父级别数据没有被包括在针对所述祖父区域中的所述一个祖父区域的所述分层表示中,则在没有父级别数据的情况下,使用所述祖父区域中的所述一个祖父区域的祖父级别数据来确定所述祖父区域中的所述一个祖父区域中的一个或多个子图元存在指
示。11.如权利要求10所述的方法,所述方法还包括从所述压缩数据块中读取所述祖父区域中的所述一个祖父区域的祖父级别数据,其中所读取的祖父级别数据用于确定父级别数据是否被包括在针对所述祖父区域中的所述一个祖父区域的所述分层表示中。12.如权利要求10或11所述的方法,其中表示祖父区域的存在状态的祖父级别数据指示:(i)所述祖父区域内的所有所述父区域内的所有所述子区域完全存在,(ii)所述祖父区域...

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

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

1