用于随机运动模糊栅格化的深度缓冲器压缩的制作方法

xiaoxiao2020-7-22  12

用于随机运动模糊栅格化的深度缓冲器压缩的制作方法
【专利摘要】深度缓冲器压缩方案使用双线性补片作为深度的预测器。该方案针对用随机模糊栅格化呈现的场景的压缩。片段瓦片可以分裂成两个或更多区域,并且可以使较高次的函数适于每一区域。然后,将残差作为△校正来存储。
【专利说明】用于随机运动模糊栅格化的深度缓冲器压缩
[0001]直量
[0002]这一般涉及深度缓冲器的压缩。
[0003]以前的深度缓冲器压缩方案压缩通过栅格化静态三角形获得的深度。这大量地节省带宽使用量,这对图形处理器非常重要。然而,对于运动模糊和视场深度的随机的栅格化甚至对实时图形也正在变为现实,以前的深度缓冲器压缩算法由于呈现的片段的位置和深度的不规则性而失败。
[0004]附图简沭
[0005]参考下面的图形来描述一些实施例:
[0006]图1是根据一实施例的深度缓冲器压缩算法的三个步骤的图示;
[0007]图2是根据一实施例的群集化技术的简图;
[0008]图3是根据一实施例的模式I的简图,其中,在左边示出了一个瓦片(瓦片)和瓦片中的四个点,在右边在子瓦片的中间示出了 A、B、C和D深度值;
[0009]图4包括预测函数的三个图示,以及它们如何具有类似的数据简化步骤,左图示出了一组不规则的样本,这些样本带有指出深度的灰度样本,中间图示示出了样本的边界框,以使得框在xy维度被分为两半,并且在每一结果所得的子区域,从两个深度值(子瓦片中的最小值和最大值)的平均值创建代表性的深度和位置,而在右图中,描绘了根据一实施例的数据预测补片;
[0010]图5是根据本发明的一个实施例的用于群集化的流程图;
[0011]图6是根据一个实施例的预测器函数的流程图;
[0012]图7是本发明的一个实施例的硬件描绘;以及
[0013]图8是本发明的一个实施例的正面前视图。
[0014]详细描沭
[0015]可以使用我们的算法来压缩来自所呈现的场景的深度值,而不会有模糊(即,不会有运动模糊,以及视场深度),但带有从随机栅格化器(rasterizer)生成的模糊(例如,运动模糊)。
[0016]我们的算法可以不使用来自栅格化器的信息,在一个实施例中,就复杂性而言,这是很大优点,如此,输入可以基本上只是一组(x_i,y_i,d_i),其中,(x_i,y_i)是样本的屏幕空间中的位置,而d_i是样本的深度。我们压缩一组这样的样本,以使得它可以以压缩的形式存储在芯片外存储器中。我们的算法计算非模糊的场景的双线性补片(patch),模糊的场景的三线性补片,其中,时间t被用作第三维。这些补片经常叫做预测器函数。我们也可以在四个维度(X,1,z, t)中使用平面(plane)。此想法是,简单来说,猜测补片的位置,编码相对于此补片的差异。补片本身需要相对小的存储,并且使用比实际深度值少得多的比特来编码差异。这经常使得将块样本压缩到其原始存储器消耗的25%,50%,或75% (例如)成为可能。节省量将只以存储器带宽使用量来表示。然而,注意,计算功率和可用存储器带宽之间的缺口持续增长,且对于可预见的未来,体系结构最有可能是带宽受限制的。
[0017]非常简单的通用框架描述了深度缓冲器压缩方案。让我们以一些假设开始。独立地处理一块wXh像素,有时叫做瓦片,并且我们假设每一个像素都具有n个样本。第i个样本通过Si =来表示,其中,头两个分量是瓦片内部的样本的X和y坐标,
而第三分量^ €【0,1]是样本的时间。还可以添加更多分量,例如,用于场深度呈现的透镜位置的分量Si)。当前深度压缩方案不显式地处理运动模糊和场深度,因此没有时间分量,也没有透镜参数。注意,(Si,S〗,SO中的全部对于特定样本都是固定的,并且它只由栅格化产生的深度Sj = Z/獸。结果,只可以压缩深度值Si。然而,如果可能的话,由算法决定利用固定的分量来更好地压缩。
[0018]如图1所示的深度缓冲器压缩方案一般共享三个公共步骤,它们是:
[0019]1.群集化,
[0020]2.预测器函数生成,以及[0021 ] 3.差异编码。
[0022]但是,值得注意的是,算法可以没有上面的步骤中的一个或两个。对步骤中的每一个步骤的高级别的描述如下。
[0023]当例如在瓦片在有属于背景层的一组样本,而瓦片中的样本的其余部分属于前景层时,需要群集化。在这些情况下,非常难以使用相同预测器函数来压缩瓦片中的所有深度。因此,群集化步骤尝试将瓦片的样本分离为两个或多个层,其中,每一层中的样本通常应该共享一些特征(例如,接近于照像机)。将样本分裂为两层或更多层的目标是,与作为单层来压缩所有样本相比,每一层都应该理想地变得压缩起来更简单。但是,对于只有前景样本的瓦片,或当只有一个三角 形覆盖整个瓦片时,可能不需要群集化。一般而言,需要一个位掩码或多个位掩码来指出样本属于哪一个层。
[0024]作为下一步骤,每一层都生成其自己的预测器函数。这里的目标是使用深度样本,以及可能的它们的固定的(X,1,t)坐标来创建预测器函数,d(x, y,t),其任务是尝试使用便宜(就存储、生成,以及评估而言)的函数来预测每一样本中的深度。例如,假设带有小的每像素位移的矩形已经呈现给瓦片。作为预测器函数,可以使用矩形的平面,因为它可能是对深度将在哪里的良好猜测。此猜测将不能是100%正确,从而,由下一步骤决定来校正。
[0025]差异编码必须确保在瓦片的解压缩过程中可以重建确切的深度S|,因为图形应
用程序编程接口(API)的共同要求是,深度缓冲器是无损耗的。预测器函数d(x,y,t),以及样本的深度之间的差异按如下方式来计算:
[0026]Si = d(x* y* (6) -⑴
[0027]给定好的预测器函数,样本的深度和预测器函数之间的差异8,应该小。结果,A (delta)应该使用很少的比特来编码。如果有少量的层,则可以实现好的压缩比,以便使用很少的比特来存储预测器函数,以便A也可以使用很少的比特来编码。压缩方案的另一个成功因素是,算法应该实际在呈现过程中在许多瓦片上被激活。
[0028]首先,我们将瓦片的Zmin和Zmax之间的深度范围分裂为n个面元(bin),如图5的框22所示。对于每一个面元,我们存储一个比特,其记录在面元中是否有至少一个样本。比特被初始化为零。然后,基于样本的深度值,将每一样本分类到一个面元,且相应的比特被设置为1,如在框24中所指出的。在此步骤中可以忽略被清除的样本。当处理完所有样本时,每个O表示至少(Zmax-Zmin)/n的深度中的间隔。通过查找最大连续零范围,如框26所示,获得两个深度层的分离的良好逼近。
[0029]在图2中,从左到右,深度值在深度轴上被标记为交叉,然后,这些深度值被Zniin和Zmax包围。然后,接下来是面元化,其中在此情形中创建Zmil^P Zmax之间的八个小面元,且带有至少一个深度样本的面元被用I标记,否则,它们用0标记。最后,查找最大零间隙,这将深度分离为两层。然后,通过预测器函数生成步骤,将由此步骤产生的样本群集中的每一个独立地处理为一层。另外,群集化过程隐式地生成指示每一样本属于哪一层的一个或多个位掩码。位掩码将是瓦片的压缩的表示的一部分。如果需要,可以简单地通过查找第二和第三(等等)最长连续零范围,来将样本群集化为更多层。还可以进一步一般化此概念。代替每个面元具有一个比特,我们每个面元存储一个计数器,该计数器记录多少深度样本落在该面元内。然后,通过查找图示中的最深并且最长的“谷(valley)”,来执行群集化,其中,y是作为bin(x)(面元(X))的函数的计数器。这会产生更好的结果。
[0030]此时,我们具有从前面的步骤生成的位掩码,指示对于当前层,应该压缩瓦片的WXhXn样本中的哪一个。注意,我们可以只有I层,在这样的情况下,所有样本都被包括。
[0031]大多数深度缓冲器压缩方案依赖于这一事实:深度d = z/w在屏幕空间中是线性的,即:
[0032]d (x, y) = z (x, y) /w (x, y) = a+bx+cy.(2)
[0033]然而,一旦时间维度被包括以使得呈现运动模糊,就不再是这种情况。我们通过将时间t与预测器相加,还提高预测器项的次数,来处理压缩通过运动模糊生成的随机缓冲器的问题。一般而言,我们可以使用预测器函数,这是许多项的总和:
[0034]d(x, y, t) =E mnoamnoxmynt°.(3) [0035]我们提议基于此公式的预测函数阵列,带有不同的活动系数星座图。当执行压缩时,可以尝试所有可能的组合。然而,我们选择了看起来对于我们遇到的数据类型合理的几个。下面列出了所选模式:
【权利要求】
1.一种方法,包括: 为一块像素(瓦片)创建补片; 估计所述预测器的位置;以及 编码所述预测器位置和样本深度之间的差异。
2.如权利要求1所述的方法,其特征在于,包括创建适于运动模糊的瓦片的时间依存平面。
3.如权利要求1所述的方法,其特征在于,包括创建适于运动模糊的瓦片的三线性补片。
4.如权利要求2和3所述的方法,其特征在于,包括使用屏幕空间中的样本位置,深度值和样本时间来开发所述平面/补片。
5.如权利要求1所述的方法,其特征在于,包括创建适于非模糊的瓦片的双线性补片。
6.如权利要求5所述的方法,其特征在于,包括使用屏幕空间中的样本位置和深度值来开发所述平面/补片。
7.如权利要求1所述的方法,其特征在于,包括压缩所述深度值并将所述压缩的表示存储到存储器中。
8.如权利要求1所`述的方法,其特征在于,包括通过将深度范围分裂为面元、利用至少一个深度值来标记所述面元、并定位面元之间的最大间隙和深度值来执行群集化。
9.如权利要求1所述的方法,其特征在于,包括通过查找当前层中的所有样本的边界框、将所述框分裂为均匀的单元的网格、以及对每一单元查找带有最小和最大深度值的两个样本来开发补片。
10.如权利要求9所述的方法,其特征在于,包括计算设置的最小和最大深度值之间的中点。
11.如权利要求10所述的方法,其特征在于,包括从四个中点值导出双线性补片。
12.至少一个机器可读介质,所述至少一个机器可读介质包括多个指令并且响应于在计算设备上被执行,导致所述计算设备实现如权利要求1-11中任一项所述的方法。
13.一种装置,包括: 处理器,用于针对场景开发补片,估计所述补片的位置,以及编码所述补片和采样深度之间的差异;以及 耦合到所述处理器的存储器。
14.如权利要求13所述的装置,其特征在于,所述处理器用于确定所述场景是模糊的还是非模糊的。
15.如权利要求14所述的装置,其特征在于,所述处理器用于针对非模糊的场景开发双线性补片。
16.如权利要求15所述的装置,其特征在于,所述处理器用于使用屏幕空间中的样本位置和深度值来开发所述补片。
17.如权利要求13所述的装置,其特征在于,所述处理器用于针对模糊场景开发三线性补片。
18.如权利和时间求17所述的装置,其特征在于,所述处理器用于使用屏幕空间中的样本位置,深度值和时间来开发所述补片。
19.如权利要求13所述的装置,其特征在于,所述处理器用于只使用所述样本的位置和屏幕空间以及所述样本的所述深度来压缩深度值。
20.如权利要求13所述的装置,其特征在于,所述处理器用于在不使用来自栅格化器的信息的情况下压缩深度值。
21.如权利要求13所述的装置,其特征在于,所述处理器用于压缩所述深度值并将所述值存储到所述存储器中,其中所述存储器不与所述处理器集成。
22.如权利要求13所述的装置,其特征在于,所述处理器用于通过将深度范围分裂为面元、利用至少一个深度值来标记所述面元、并定位面元之间的最大间隙和深度值来执行群集化。
23.如权利要求13所述的装置,其特征在于,所述处理器用于通过查找当前层中的所有样本的边界框、将所述框分裂为均匀的单元的网格、以及对每一单元格查找带有最小和最大深度值的两个样本来开发补片。
24.如权利要求13所述的装置,其特征在于,所述处理器用于计算设置的最小和最大深度值之间的中点。
25.如权利要求13所述的装置,其特征在于,所述处理器从四个中点值导出双线性补片。
26.如权利要求13所述的装置,其特征在于,包括操作系统。
27.如权利要求13所述的装置,其特征在于,包括电池。
28.如权利要求13所述 的装置,其特征在于,包括固件和用于更新所述固件的模块。
【文档编号】G06T9/00GK103518227SQ201280020404
【公开日】2014年1月15日 申请日期:2012年4月26日 优先权日:2011年4月28日
【发明者】M·安德森, T·G·阿凯奈-莫勒, J·N·哈塞尔格林 申请人:英特尔公司

最新回复(0)