生成具有边界像素超采样效果的阴影的方法

文档序号:6332256阅读:462来源:国知局
专利名称:生成具有边界像素超采样效果的阴影的方法
技术领域
本发明涉及一种阴影渲染方法,尤其涉及一种计算具有边界像素超采样效果的的 阴影方法。
背景技术
当光在传播到物体前被别的物体所遮挡时,就会形成一个阴影区域。阴影不仅丰 富了场景的表现效果,而且能使渲染生成的图像具有更多的信息。这些信息包括光源位置、 遮挡物的轮廓和接收物的形状等。因此,在绘制系统中,阴影是场景的一个重要组成部分。阴影图(shadow mapping)算法(可参考[Wi 178] Lance Williams, "Casting curved shadows on curved surfaces”)是最常用的阴影算法之一。通过在光源平面下生 成一个深度图,并将视点平面上的所有像素投影到光源平面,该方法只需要进行一次深度 比较就可以判断出像素是否在阴影中。因为简单高效,阴影图算法被广泛引用在有实时阴 影绘制需求的系统,特别是游戏中。但是,阴影图算法也有若干缺陷。其最大的缺陷之一是由于光源平面深度图的分 辨率有限,使得其不能精确描述场景深度信息,进而在阴影边界上形成纹元级的走样。另一 方面,受视点平面的屏幕分辨率限制,每个像素的阴影值非0即1,会有像素级别上的走样 问题。现有的技术集中于解决纹元级的走样的问题,这个问题主要是由于光源平面深度 图的纹元和视点平面上像素的密度在屏幕的各局部区域往往不匹配造成的。其本质原因是 因为这两者是场景在不同的视点下光栅化造成的。Erik Sintorn等人(可参考[SEA08] Erik Sintorn, Elmar Eisemann, Ulf Assarsson, "Sample based visibility for soft shadows using alias-free shadow maps”)通过将视点平面上的像素投影到光源平面上, 并在此空间中和遮挡物面片进行阴影测试避开了光源平面上的光栅化操作,进而完全避免 了纹元级别的走样问题。但是在另一方面,目前尚没有专门针像素级别走样问题的技术。一种直接的方法 是在视点平面上进行超采,即绘制一张高分辨率的图再将其减采到标准分辨率。这种方法 大幅度增加了计算量。特别是在高采样率,如64倍或128倍超采下,效率非常低,

发明内容
本发明针对目前相关技术的空白,提供了一种生成具有边界像素超采样效果的阴 影的方法。为了实现上述目的,本发明采用的技术方案如下该生成具有边界像素超采样效果的阴影的方法包括如下步骤(1)构造阴影掩码表;(2)利用所述阴影掩码表生成阴影。进一步地,本发明在所述步骤(1)中,按照如下步骤构造阴影掩码表
1)在一个像素内部分布超采样点;2)采用如式(1)所示的公式表示所述像素所在平面上与像素相交的所有直线,并 将所述直线的斜率与截距用离散的数值表示y = kx+b(1)式(1)中,k为斜率,b为截距;3)以所述直线的斜率与截距为索引做阴影掩码表,记录每条直线的半平面对所述 像素内所有超采样点的遮挡情况,并将所述遮挡情况表示为遮挡掩码,每条直线的半平面 对所述像素内所有超采样点的遮挡掩码用一组数表示,该组数中的每一个数对应一个超采 样点的遮挡情况。进一步地,本发明在所述步骤(2)中,按如下步骤利用所述阴影掩码表生成阴影1)在光源平面上生成场景中物体的深度图纹理;2)检测所述场景中物体的轮廓边,将所述轮廓边投影到光源平面上生成场景中物 体的轮廓图纹理,所述轮廓图纹理的每个纹元记录了是否有投影到光源平面上的场景中物 体的轮廓边经过该纹元;3)在视点平面上生成场景中物体的位置图纹理和法向图纹理;4)根据生成的视点平面上的位置图纹理和法向图纹理,对视点平面上的每一个像 素用一个小平面逼近,后将各小平面投影到所述光源平面上;5)使用所述轮廓图纹理将小平面分类为轮廓上的小平面和非轮廓上的小平面两 种;6)对所述非轮廓上的小平面,使用阴影图算法计算其对应像素的阴影颜色值;对所述轮廓上的小平面,在所述轮廓图纹理上找到遮挡各小平面的场景中物体面 片,将这些物体面片遮挡小面片的遮挡区域投影到视点平面并从阴影掩码表中查找对应的 遮挡掩码,将遮挡掩码累计到该像素的阴影掩码中;根据阴影掩码计算像素的阴影颜色值。进一步地,本发明在所述步骤2)中,所述轮廓图纹理的每个纹元记录是否有投影 到光源平面上的场景中物体的轮廓边经过该纹元的方法为对于轮廓图纹理上坐标为(i,j)的纹元,如果场景中物体没有任何一条轮廓边经 过该纹元,那么该纹元在轮廓图纹理中的值为空;如果场景中物体存在至少一条轮廓边经 过坐标为(i,j)的纹元,那么在坐标为(i,j)的轮廓图纹理中记录所有投影到该像素的场 景中物体面片。进一步地,本发明在所述步骤4)中,用于逼近视点平面上的坐标为(i,j)的像素 的小平面方程为Nijj- (fJjj-Pijj) = 0(2)式(2)中,Niij为所述视点平面上场景中物体的法向图纹理中坐标为(i,j)的值, Pi,j为所述视点平面上场景中物体的位置图纹理中坐标为(i,j)的值,fi,j为表示小平面的 空间点。进一步地,本发明在所述步骤6)中,“将这些物体面片遮挡小面片的遮挡区域投影 到视点平面并从阴影掩码表中查找对应的遮挡掩码”的方法为1)记录所有组成所述遮挡区域轮廓的直线;2)在所述小平面上,记录遮挡区域所在的直线的半平面;
3)将所有记录下的遮挡区域所在的直线的半平面投影到视点平面;4)计算组成所述遮挡区域轮廓的直线的投影后直线的斜率与截距;5)根据所述投影后直线的斜率与截距及投影后的半平面由所述阴影掩码表中查 找每条边所在直线对超采样点遮挡情况。进一步地,本发明在所述步骤6)中,按照如下方式将遮挡掩码累计到该像素的阴 影掩码中a)若所述像素的阴影掩码对超采样点标记为被遮挡,则不将遮挡掩码对该超采样 点的标记计入阴影掩码中;b)若所述像素的阴影掩码对超采样点标记为未遮挡,则将遮挡掩码对该超采样点 的标记计入阴影掩码中。进一步地,本发明在所述步骤6)中,按以下步骤根据阴影掩码计算像素的阴影颜 色值a)计算阴影掩码中被遮挡超采样点个数;b)将被遮挡超采样点个数除以超采样点总数得到阴影颜色值。与现有技术相比,本发明的有益效果是本发明可以不用将每个超采样点都投影 到光源平面进行阴影测试,只需要在视点平面生成标准分辨率的位置图纹理与法向图纹 理,通过小平面近似使得像素内每一个超采样点的阴影值可以被同时计算,因此可以快速 生成具有超采样反走样效果的阴影。同时,本发明还利用走样问题只发生在阴影边界上的 特点,通过提取场景中的轮廓边,将像素超采样阴影计算限制在阴影边界上,而对于其他部 分则使用传统的阴影图方法,进而减少了总体的计算开销。


图1是本发明方法的流程图;图2是小平面构造的示意图;图3是遮挡物面片的半平面表达及投影的示意图。
具体实施例方式下面结合附图和对本发明作进一步说明本发明方法包括阴影掩码预处理与阴影实时绘制处理两部分,以下举例说明本发 明方法的步骤A.阴影掩码预处理,即构造阴影掩码表步骤Al)在一个像素内部分布32个超采样点;步骤A2)采用如式(1)所示的公式表示所述像素所在平面上与像素相交的所有直 线,并将所述直线的斜率与截距用离散的数值表示y = kx+b(1)式(1)中,k为斜率,b为截距。在本实施例中,将像素所在平面上与像素相交的所有直线的斜率离散为360个数 值,分别取值为 k0 = tan(0),kl = tan(l° /360),…,k359 = tan(359° /360),截距 b 也离散为360个数值;用斜率ki和截距bi(i = 0,…359)表示所有y = kx+b的直线。
6
步骤A3)以离散的直线斜率与截距为索引做表,枚举所有直线,并将直线半平面 对像素内所有超采样点的遮挡情况表示为遮挡掩码计入阴影掩码表。遮挡掩码用一个32 位的4字节整型表示超采样点的遮挡其情况,其中每一位对应一个超采样点的遮挡情况, 如果被遮挡那么表示为1,不被遮挡表示为0。B.阴影实时绘制处理,即利用所述阴影掩码表生成阴影(参考图1)步骤Bi)生成光源平面上的深度图纹理。步骤B2)检测场景中物体的轮廓边并在光源平面上光栅化生成轮廓图纹理,所有 轮廓边经过的像素标记为1,其他标记为0。步骤B3)在视点平面上光栅化场景,生成位置图纹理和法向图纹理,并利用位置 图纹理和法向图纹理生成每个像素对应的小平面。步骤B4)在光源平面上光栅化所有小平面,根据光栅化后的小平面是否与任何轮 廓纹元相交,将所有小平面分类为轮廓上的和非轮廓上的。步骤B5)用传统的阴影图算法计算所有的非轮廓上小平面的对应像素的阴影。而对于每个轮廓上的小平面,则在光源平面上光栅化所有遮挡物面片,对每个遮 挡物面片和与其相交的每个纹元构造面片-纹元对。遍历所有包含该轮廓上的小平面的面 片-纹元对中的面片,将每个遍历到的遮挡物面片与轮廓上的小平面进行可视性计算,最 终得到所有非轮廓上的小平面对应像素的阴影。现具体介绍本发明方法中的利用所述阴影掩码表生成阴影的各个步骤1)步骤 Bl 按照传统阴影图算法,生成光源平面上的深度图纹理。2)步骤 B2 按以下方法检测场景中物体的轮廓边对于场景中的所有边,计算其相邻两面片 的法向。如果两个法向其中之一面向光源,另一背向光源,则该边为轮廓边;如果某边只有 一个相邻面片,则无论其法向如何,均认为该边为轮廓边。在光源平面上光栅化所有找到的轮廓边到轮廓图纹理上,将所有被光栅化到的纹 元标记为轮廓纹元。3)步骤 B3 在空间视点平面上光栅化场景,得到像素(i,j)的位置图纹理Pij与法向图纹理 Nijo对每个像素,构造小平面F,其平面方程为Nijj- (fJjj-Pijj) = 0(2)式⑵中,,Nm为所述视点平面上场景中物体的法向图纹理中坐标为(i,j)的值, Pi,」为所述视点平面上场景中物体的位置图纹理中坐标为(i,j)的值,fu为小平面上的空 间点。小平面的边界由将该像素的四条边以视点为投影中心投影到在小平面所在平面上的 投影点决定。在图2中以二维情况作为说明,示意了一个像素对应的小平面的方向N与位 置P。那么该小平面需要经过位置P,并且法向为方向N,计算公式见公式(2),该平面即为 用于逼近所述像素的小平面,由视点与像素边缘的光锥表示了该小平面用于逼近所述像素 的范围。4)步骤 B4 将每一个构造的小平面在光源平面上光栅化。对于每一个小平面F,在轮廓图纹理
7中查找所述小平面光栅化到的光源平面上对应的纹元是否标记为轮廓纹元。如果所有这些像素位置上对应的纹元都不是轮廓纹元,则F被标记为非轮廓上的 小平面,否则F被标记为轮廓上的小平面。步骤B5)首先对于所有的非轮廓上的小平面,用传统的阴影图算法计算对应像素的阴影颜 色值,方法为比较位置图纹理中小平面对应位置P到视点深度值与步骤Bl中得到的光源 平面上的深度图纹理中对应像素的深度值,如果位置图纹理中小平面对应位置P到视点深 度值大,那么该像素被遮挡,阴影颜色为0,否则阴影颜色为1。。其次按照如下步骤计算轮廓上的小平面对应像素的阴影颜色值。步骤Β5· 1)采用如下方法找到遮挡各小平面的场景中物体面片在光源平面上光栅化所有遮 挡物面片,为每一个遮挡物面片和其光栅化到的光源平面上的每一纹元构造一个面片-纹 元对。对于每个轮廓上的小平面,在轮廓图纹理上找到标记其为轮廓上小面片的纹元,遍历 所述纹元对应的面片-纹元对中的面片。将每个遍历到的面片与轮廓上的小平面进行可视 性计算。可视性计算过程为步骤B5. 2)-步骤B5. 6)步骤B5. 2)将遮挡物面片用若干个半平面的交集来表示。其中每个半平面对应该 遮挡物面片的一条边。记这个半平面的集合为SO。步B5.3)如果遮挡物面片与小平面所在平面相交,则构造一个半平面,该半平面 与遮挡物面片共面,半平面边界取遮挡物面片与小平面所在平面的交线,半平面方向取与 光源在小平面所在平面同一侧。将该半平面加到集合SO中。图3示意了一个三角面片作为遮挡物面片与小平面所在平面相交情况下半平面 集合SO的情况。遮挡物面片边为{10,11,12,13},图3中用箭头标记了每条边对应的半平 面,组成半平面集合SO的半平面为{H0,Hl,H2,H3},其中边10,11,12与对应的半平面H0, HI, H2为根据步骤B5. 2得到,边13与对应的半平面H3为根据步骤5. 3构造得到。步骤B5.4)将SO中的所有半平面以光源为投影中心投影到小平面所在平面上。 所有半平面的投影为小平面所在平面上的半平面。将所有这些投影后的半平面的集合记 为Si。图3表示了组成遮挡物面片的边{10,11,12,13}在小平面所在平面上的投影线段 为{13,14,15,16},组成遮挡物区域的半平面{H0,HI, H2,H3}投影后的半平面集合Sl为 {H4, H5, H6, H7}.步骤B5. 5)将Sl中的所有半平面以视点为投影中心投影到视点平面的视平面上。 所有半平面的投影为视平面上的半平面。将所有这些投影后的半平面的集合记为S2。步骤B5. 6)对S2中的每一个半平面,根据其边界的斜率和边界到小平面-纹元对 中的小平面所对应的像素的中心的距离,查询预先计算好的阴影掩码表。得到位掩码。将 S2中所有半平面查询得到位掩码做位与运算,并将结果和小平面_纹元对中的小平面所对 应的像素的阴影掩码做位或运算,将结果更新到小平面_纹元对中的小平面所对应的像素 的阴影掩码中。位或运算保证了若阴影掩码对超采样点标记为被遮挡,则不将遮挡掩码对 该超采样点的标记计入阴影掩码中;若阴影掩码对超采样点标记为未遮挡,则将遮挡掩码 对该超采样点的标记计入阴影掩码中。步骤B5. 7)遍历完成面片_纹元对中所有面片后,对每一个像素,计算其阴影颜色值的方法为计算像素阴影掩码中被遮挡超采样点的个数,即是计算32位阴影掩码中为1的位 的个数,记为Nmask ;将被遮挡超采样点个数Nmask除以超采样点总数Nsample从而得到阴影颜色 值,公式如下S=CountBit (sMask)/sample其中sMask为阴影掩码,CoimtBit为计算掩码中为1的位的个数的函数,Nsample为 超采样点数目,s为阴影颜色值。采用本发明的方法,避免了对每个超采样点都进行是否被遮挡物遮挡的阴影检测 计算,而通过小面片近似,利用查表在对一个像素进行阴影检测计算的同时,获得所有超采 样点的遮挡情况,从而获得具有超采样效果的阴影边界。
权利要求
一种生成具有边界像素超采样效果的阴影的方法,其特征在于包括如下步骤(1)构造阴影掩码表;(2)利用所述阴影掩码表生成阴影。
2.根据权利要求1所述的生成具有边界像素超采样效果的阴影的方法,其特征在于 在在所述步骤(1)中,按照如下步骤构造阴影掩码表1)在一个像素内部分布超采样点;2)采用如式(1)所示的公式表示所述像素所在平面上与像素相交的所有直线,并将所 述直线的斜率与截距用离散的数值表示y = kx+b(1)式(1)中,k为斜率,b为截距;3)以所述直线的斜率与截距为索引做阴影掩码表,记录每条直线的半平面对所述像素 内所有超采样点的遮挡情况,并将所述遮挡情况表示为遮挡掩码,每条直线的半平面对所 述像素内所有超采样点的遮挡掩码用一组数表示,该组数中的每一个数对应一个超采样点 的遮挡情况。
3.根据权利要求1所述的生成具有边界像素超采样效果的阴影的方法,其特征在于 在在所述步骤(2)中,按如下步骤利用所述阴影掩码表生成阴影1)在光源平面上生成场景中物体的深度图纹理;2)检测所述场景中物体的轮廓边,将所述轮廓边投影到光源平面上生成场景中物体的 轮廓图纹理,所述轮廓图纹理的每个纹元记录了是否有投影到光源平面上的场景中物体的 轮廓边经过该纹元;3)在视点平面上生成场景中物体的位置图纹理和法向图纹理;4)根据生成的视点平面上的位置图纹理和法向图纹理,对视点平面上的每一个像素用 一个小平面逼近,后将各小平面投影到所述光源平面上;5)使用所述轮廓图纹理将小平面分类为轮廓上的小平面和非轮廓上的小平面两种;6)对所述非轮廓上的小平面,使用阴影图算法计算其对应像素的阴影颜色值;对所述轮廓上的小平面,在所述轮廓图纹理上找到遮挡各小平面的场景中物体面片, 将这些物体面片遮挡小面片的遮挡区域投影到视点平面并从阴影掩码表中查找对应的遮 挡掩码,将遮挡掩码累计到该像素的阴影掩码中;根据阴影掩码计算像素的阴影颜色值。
4.根据权利要求3所述的生成具有边界像素超采样效果的阴影的方法,其特征在于在 所述步骤2)中,所述轮廓图纹理的每个纹元记录是否有投影到光源平面上的场景中物体 的轮廓边经过该纹元的方法为对于轮廓图纹理上坐标为(i,j)的纹元,如果没有任何一条投影到光源平面上的场景 中物体的轮廓边经过该纹元,那么该纹元在轮廓图纹理中的值为空;如果存在至少一条投 影到光源平面上的场景中物体的轮廓边经过坐标为(i,j)的纹元,那么在坐标为(i,j)的 轮廓图纹理中记录所有投影到该像素的场景中物体面片。
5.根据权利要求3所述的生成具有边界像素超采样效果的阴影的方法,其特征在于 在所述步骤4)中,用于逼近视点平面上的坐标为(i,j)的像素的小平面方程为Ni,j - (fi.rPi.j) =O(2)式(2)中,Niij为所述视点平面上场景中物体的法向图纹理中坐标为(i,j)的值,Py为所述视点平面上场景中物体的位置图纹理中坐标为(i,j)的值,fy为小平面上的空间点O
6.根据权利要求3所述的生成具有边界像素超采样效果的阴影的方法,其特征在于 在在所述步骤6)中,“将这些物体面片遮挡小面片的遮挡区域投影到视点平面并从阴影 掩码表中查找对应的遮挡掩码”的方法为1)记录所有组成所述遮挡区域轮廓的直线;2)在所述小平面上,记录遮挡区域所在的直线的半平面;3)将所有记录下的遮挡区域所在的直线的半平面投影到视点平面;4)计算组成所述遮挡区域轮廓的直线的投影后直线的斜率与截距;5)根据所述投影后直线的斜率与截距及投影后的半平面由所述阴影掩码表中查找每 条边所在直线对超采样点遮挡情况。
7.根据权利要求3所述的生成具有边界像素超采样效果的阴影的方法,其特征在于 在在所述步骤6)中,按照如下方式将遮挡掩码累计到该像素的阴影掩码中1)若所述像素的阴影掩码对超采样点标记为被遮挡,则不将遮挡掩码对该超采样点的 标记计入阴影掩码中;2)若所述像素的阴影掩码对超采样点标记为未遮挡,则将遮挡掩码对该超采样点的标 记计入阴影掩码中。
8.根据权利要求3所述的生成具有边界像素超采样效果的阴影的方法,其特征在于 在在所述步骤6)中,按以下步骤根据阴影掩码计算像素的阴影颜色值1)计算阴影掩码中被遮挡超采样点个数;2)将被遮挡超采样点个数除以超采样点总数得到阴影颜色值。
全文摘要
本发明公开了一种生成具有边界像素超采样效果的阴影的方法步骤为(1)先构造阴影掩码表;(2)再如下利用所述阴影掩码表生成阴影1)在光源平面上生成场景中物体的深度图纹理;2)检测所述场景中物体的轮廓边,在光源平面上生成场景中物体的轮廓图纹理;3)在视点平面上生成场景中物体的位置图纹理和法向图纹理;4)对视点平面上的每一个像素用一个小平面逼近,后将各小平面投影到所述光源平面上;5)使用所述轮廓图纹理将小平面分类为轮廓上的小平面和非轮廓上的小平面两种;6)对所述非轮廓上和轮廓上的小平面计算其对应像素的阴影颜色值。使用本发明方法可以不需要进行超采样就得到具有子像素级别的反走样效果的阴影。
文档编号G06T15/50GK101937577SQ201010285578
公开日2011年1月5日 申请日期2010年9月17日 优先权日2010年9月17日
发明者华炜, 王锐, 鲍虎军 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1