景深栅格化的制作方法
【专利摘要】可以通过剔除要被呈现的三角形从其不可视的透镜上的半空间区域来对景深进行栅格化。然后,仅对剩余的未被剔除的半空间区域进行内部测试。位于要被呈现的三角形和正在被处理的切片之间的分离平面能够用于限定所述半空间区域。
【专利说明】景深栅格化
【背景技术】[0001]本申请涉及计算机,并且尤其涉及图形处理。
[0002]在过去的几年中,对于随机栅格化的研究活动不断增加。然而,景深的有效栅格化和动感模糊依然是难以实现的目标。实质上,仅景深的栅格化是较简单的问题,但是仍然没有很好地探索出对于其的专门算法。
【专利附图】
【附图说明】
[0003]图1是根据一个实施例表示二维的分离平面的草图;
[0004]图2是根据一个实施例的潜在可视和不可视半空间的示意性原理图;
[0005]图3是根据一个实施例的分离平面如何生成半空间线的原理图;
[0006]图4是根据一个实施例经过切片的角投射的三角形的示意性原理图;
[0007]图5是根照一个实施例表示对于经过切片看到的三角形的可视区域的草图;
[0008]图6是根据一个实施例与焦平面相交的三角形的描绘;
[0009]图7是根据一个实施例表示关于焦平面进行交叉测试生成交叉点V的三角形的边qr的草图;
[0010]图8是根据一个实施例表示两个候选平面将空间划分为四个区域的草图;
[0011]图9是一个具有相对应的存储的透镜网格的草图;
[0012]图10是一个实施例的流程图;并且
[0013]图11是一个实施例的硬件原理图。
【具体实施方式】
[0014]一种用于景深栅格化的有效算法以去除透镜上的(u,v)空间的半空间区域为基础,从该半空间区域,不能够经过切片内的任何像素看到要被明确呈现的三角形。我们精确地发现所有这样的区域的交叉,并且产生的区域用于减少切片中样本的数量,在该切片中需要执行完整的“三角形内部样本”测试。对于如何使用(u,v)空间中产生的区域来快速地剔除样本免于被测试,我们提出了几种有效的方法。
[0015]通常,对于景深(DOF)呈现,通过(",V,) e Q c [0,l]x [0,1]对透镜区域进行参数化,其
中Q为光圈形状,并且可以例如是方形或圆形。一般来说,我们具有每像素n个样本用于随机栅格化,其中,每一个样本由空间位置(Xi,yi)和透镜位置(Ui, Vi)构成。将三角形的裁
剪空间顶点表示为户=(/K,//,火),并且然后将三角形表示为KP1P^切片是焦点对准
的平面中像素的矩形块。有时,我们使用术语“焦平面”代替“焦点对准的平面”,焦平面是满足w=F的平面,在该焦平面中,呈现的几何体将表现出完美的聚焦。内部测试简单地计算某一样本(Xi,yi,Ui,Vi)是否位于正在被栅格化的三角形内部。一般来说,应该最小化不必要的内部测试的数量。
[0016]为了描述我们的算法,我们将使用分离平面的概念,该概念也曾用于对于大型遮光板的基于单元的遮挡剔除。位于两个凸多面体对象之间的分离平面是由来自一个对象的边和来自另一个对象的顶点形成的平面,并且同时,这两个对象必须位于该平面的相对侧上。图1中示出了该分离平面的二维说明。
[0017]在图1中,能够使用切片和三角形的分离线来发现透镜上的区域,在该区域中,能够减少随机栅格化所需要的计算的数量。使用分离平面来检测透镜上的区域10和12。注意到,在区域12中,不存在能够经过切片中的任何点“看到”三角形的透镜位置。在图1的左侧上,三角形位于焦平面的后面。在图1的右侧上,三角形位于焦平面的前面。当使用焦平面后面的顶点来限定分离平面时,正的半空间包含切片,并且反之亦然。
[0018]可以使用根据切片和三角形导出的分离平面来去除透镜上的半空间区域免于进一步处理。我们发现不能够经过切片中的任何点“看到”三角形的透镜上的区域,并且因而在这样的区域中具有透镜坐标(Ui, Vi)的切片中的所有样本不需要任何进一步的内部测试。直观地,这能够根据图1进行理解,其中使用切片和三角形的分离线来剔除透镜上的区域12。
[0019]在三维中,存在能够用于剔除透镜上的半空间区域的两种不同类型的分离平面。这在图2中进行了说明。通过切片的边和三角形的顶点生成分离平面的第一集合,我们用^来表示这些平面,其中,该平面的正半空间由所有点P组成,以使得L(P)≥O。现在,考虑切片的最左侧的(垂直)边。在图2的左侧的示例中,切片的左侧与三角形的最右侧的顶点创建分离平面。这一分离平面将透镜区域分离为两个半空间。我们将该分割线称为半空间线 Iii (u,v) =0。
[0020]在图2中的左侧上,在这一示例中,三角形14的最右侧的顶点与切片的最左侧的边形成分离平面。这一平面与透镜区域相交,并且将该透镜区域划分为两个半空间:负半空间16,其中透镜上的点不能够经过切片中的任何点看到三角形;正半空间18,其中透镜上的点潜在地能够看到三角形。该分离平面的法线与切片本身位于该平面的相同侧上,并且这限定了透镜上的正半空间和负半空间。在图2中的右侧上,由三角形的边和切片的角形成分离平面。
[0021]注意到,取决于形成分离平面的三角形的顶点位于焦平面的前面还是后面,不同地选择分离平面的法线的符号(即,+n或-n)。这样做的原因在于,我们想剔除ht (u,v)〈O的区域,而与顶点位置无关。对于位于焦平面的后面的顶点,选择分离平面的法线以使得它的正半空间包含整个切片。相反,对于位于焦平面的前面的顶点,分离平面的法线是这样的,以使得它的负半空间包含整个切片。这在图1中进行了说明。
[0022]半空间线的二维法线的方向从相对应的分离平面的法线得到。在图2中将这些二维法线说明为箭头。在几何上,容易看到的是,透镜上的负半空间中的所有点都不能够经过切片中的任何点“看到”三角形。
[0023]根据由三角形的边和切片的角形成的分离平面来生成半空间线的第二集合。在图2中的右侧说明了示例。我们将这些分离平面标记为IIj以与由切片的边和三角形的顶点生成的平面n i相区分。平面IIj也生成被标记为HjOi, v)=0的半空间线。
[0024]半空间线h的第一集合或者水平或者垂直,并且通常,半空间线Hj的第二集合可以具有任意取向。当所有切片的边分别生成一个分离平面时,它们将在透镜的平面中形成二维框。利用这样的框,剔除整个切片中的大部分样本免于进一步处理,这将是简单而有效的。在图3中的左侧示出了示例。在该相同的图的右侧,已经通过&平面剔除了透镜上的进一步区域。当三角形的所有顶点位于焦平面的前面或者后面时,透镜上的剩余活动区域由凸区域进行限定,其中hi(U,V)≥O并且Hj(Uj)≥O。仅位于这一活动区域(图3中的区域20)内部的具有透镜坐标(Ui,Vi)的样本需要进行内部测试。后面描述的我们的实用算法的有效性就是源于这一事实。
[0025]在图3中,透镜是粗线的方形。在左侧上,前四个分离平面生成水平和垂直的半空间线,通过Iii(U^)=O进行限定。同时,它们在透镜平面中形成二维边界框。仅需要进一步处理具有区域20中的透镜位置的样本。仅使用前四个平面能够剔除透镜的大量区域。在图3中的右侧上,半空间线的第二集合Hj (u,v)=0能够进一步缩减区域20。当三角形相交于焦平面时,情况将更加复杂,并且我们将在下文中表示如何使用半空间线的第一集合比(u,v)来在这样的情况下进行剔除。
[0026]创建分离平面并不总是可能的。例如,当三角形穿过切片时,发现对于该切片的分离平面将是不可能的。然而,当三角形从前向变为背向时,或者有相反的方向变化时,这种情况就会发生,并且因而,增加半空间线以去除其中三角形为背向的透镜的部分是可能的。这对于接近对象的轮廓的三角形是有益的。实践中,场景中这样的三角形的数量与剩余的三角形相比较通常很小,结果,我们还没有发现此种做法的成效。
[0027]我们将使用大量的标记来简化算法的描述。如上文,将三角形的顶点称为p'p1和P2。切片的四个角由和td来指代。顶点f经过切片的角P在透镜上的投射将由
= O 指代。
[0028]参照图4,示出了我们的标记的说明,三角形的顶点p°、P1和P2经过切片的角ta、t\ t。和td投射到透镜上以形成透镜坐标Iij,其中i G {a,b,c,d}并且j G {0,1,2}。例如,顶点P2经过tb投射以生成Ib2。
[0029]顶点f经过切片的角P的投射给出了透镜坐标Iij:
[0030]
【权利要求】
1.一种景深栅格化的方法,包括: 剔除要被呈现的凸多边形从其不可视的透镜上的区域。
2.如权利要求1所述的方法,包括仅对剩余的未被剔除的区域执行内部测试。
3.如权利要求2所述的方法,包括剔除三角形从其不可视的透镜上的半空间区域。
4.如权利要求1所述的方法,包括使用位于要被呈现的凸多边形和正在被处理的切片之间的分离平面来将所述透镜划分为区域,其中对所述区域的子集进行内部测试。
5.如权利要求4所述的方法,包括使用分离平面,并且对于每一个分离平面,在透镜平面上限定半空间线。
6.如权利要求5所述的方法,包括仅处理位于所述剩余的未被剔除的区域内部的样本。
7.如权利要求4所述的方法,包括根据由三角形的顶点和切片的边形成的分离平面来形成所述半空间区域。
8.如权利要求4所述的方法,包括根据由三角形的边和切片的角形成的分离平面来形成所述半空间区域。
9.如权利要求8所述的方法,包括通过关于焦平面对三角形的边进行交叉测试以生成交叉点、将所述焦平面划分为区域、并且识别所述交叉点落入其中的区域来定位所述分离平面。
10.如权利要求7所述的方法,包括递增地更新半空间区域之间的半空间线。
11.一种存储由计算机执行的指令的非暂态计算机可读介质,所述指令用于: 剔除要被呈现的凸多边形从其不可视的透镜上的区域,用于景深栅格化。
12.如权利要求11所述的介质,进一步存储用于仅对剩余的未被剔除的区域执行内部测试的指令。
13.如权利要求12所述的介质,进一步存储用于剔除三角形从其不可视的透镜上的半空间区域的指令。
14.如权利要求11所述的介质,进一步存储用于使用位于要被呈现的凸多边形和正在被处理的切片之间的分离平面来将所述透镜划分为区域的指令,其中对所述区域的子集进行内部测试。
15.如权利要求14所述的介质,进一步存储用于使用分离平面,并且对于每一个分离平面,在透镜平面上限定半空间线的指令。
16.如权利要求15所述的介质,进一步存储用于仅处理位于所述剩余的未被剔除的区域内部的样本的指令。
17.如权利要求14所述的介质,进一步存储用于根据由三角形的顶点和切片的边形成的分离平面来形成所述半空间区域的指令。
18.如权利要求14所述的介质,进一步存储用于根据由三角形的边和切片的角形成的分离平面来形成所述半空间区域的指令。
19.如权利要求18所述的介质,进一步存储用于通过关于焦平面对三角形的边进行交叉测试以生成交叉点、将所述焦平面划分为区域、并且识别所述交叉点落入其中的区域来定位所述分离平面的指令。
20.如权利要求17所述的介质,进一步存储用于递增地更新位于半空间区域之间的半空间线的指令。
21.一种装置,包括: 存储器;以及 耦接到所述存储器的处理器,用于通过剔除要被呈现的凸多边形从其不可视的透镜上的区域来执行景深栅格化。
22.如权利要求21所述的装置,所述处理器用于仅对剩余的未剔除的区域执行内部测试。
23.如权利要求22所述的装置,所述处理器用于剔除三角形从其不可视的透镜上的半空间区域。
24.如权利要求21所述的装置,所述处理器用于使用位于要被呈现的凸多边形和正在被处理的切片之间的分离平面来将所述透镜划分为区域,其中对所述区域的集合进行内部测试。
25.如权利要求24所述的装置,所述处理器用于使用分离平面,并且对于每一个分离平面,用于在透镜平面上限定半空间线。
26.如权利要求25所述的装置,所述处理器仅处理位于所述剩余的未被剔除的区域内部的样本。
27.如权利要求24所述的装置,所述处理器用于根据由三角形的顶点和切片的边形成的分离平面来形成所述半空间区域。
28.如权利要求24所述的装置,所述处理器用于根据由三角形的边和切片的角形成的分离平面来形成所述半空间区域。
29.如权利要求28所述的装置,所述处理器用于通过关于焦平面对三角形的边进行交叉测试以生成交叉点、将所述焦平面划分为区域、并且识别所述交叉点落入其中的区域来定位所述分离平面。
30.如权利要求27所述的装置,所述处理器用于递增地更新位于半空间区域之间的半空间线。
【文档编号】G06T15/00GK103562966SQ201280024911
【公开日】2014年2月5日 申请日期:2012年4月18日 优先权日:2011年4月28日
【发明者】T·G·阿可尼内-默勒, C·J·蒙克贝里, J·N·哈塞尔格伦, R·M·托特 申请人:英特尔公司