王文亮,陳純毅,胡小娟,于海洋,田 野
融合陰影圖和深度劃分陰影體的陰影渲染算法
王文亮,陳純毅,胡小娟,于海洋,田 野
(長春理工大學(xué)計算機科學(xué)技術(shù)學(xué)院,吉林 長春 130022)
陰影圖算法可以簡單、快速地渲染硬陰影,但該算法渲染的硬陰影會在邊緣區(qū)域出現(xiàn)鋸齒狀走樣。受此影響,基于陰影圖算法渲染的柔和陰影,在小尺寸半影區(qū)域依然可能會出現(xiàn)鋸齒狀走樣。因此,要渲染無走樣的柔和陰影,需要精確計算陰影邊緣區(qū)域的著色點對點光源的可見性。深度劃分陰影體算法可以精確地計算著色點對點光源的可見性,但其不僅在效率上不及陰影圖算法,還無法實現(xiàn)柔和陰影渲染。針對上述問題,提出一種融合陰影圖和深度劃分陰影體的陰影渲染算法,對處于陰影邊緣區(qū)域的著色點,使用深度劃分陰影體算法精確計算該著色點對點光源的可見性;對其他著色點,使用陰影圖算法快速計算該著色點對點光源的可見性。最后,將著色點的可見性值存儲在可見性圖中并濾波即可實現(xiàn)無走樣柔和陰影的渲染。
陰影圖算法;深度劃分陰影體算法;硬陰影;柔和陰影;融合陰影渲染算法
在三維場景渲染中,陰影可以展現(xiàn)場景中各個物體之間的空間位置關(guān)系,豐富場景的細(xì)節(jié),增強場景的真實感。陰影渲染算法可分為硬陰影渲染和柔和陰影渲染2種算法。硬陰影渲染算法渲染的陰影邊界清晰、層次分明,場景只存在完全處于陰影和完全不處于陰影2種狀態(tài)。而柔和陰影渲染算法渲染的陰影在邊界區(qū)域會有柔和的過度,更接近現(xiàn)實世界的陰影。
陰影圖算法[1]和陰影體算法[2]是2種經(jīng)典的硬陰影渲染算法。陰影圖算法具有效率高、容易實現(xiàn)的優(yōu)點,但其渲染的硬陰影會在邊緣區(qū)域出現(xiàn)鋸齒狀走樣,影響陰影的觀感。陰影體算法可以渲染出像素級高精度的無走樣硬陰影,但該算法開銷過大,且難以實現(xiàn)柔和陰影渲染。
為了解決陰影圖算法存在的鋸齒狀走樣問題,曲變陰影圖(distorted shadow mapping,DSM)算法[3]通過增加陰影邊緣區(qū)域的場景著色點,降低其他區(qū)域的場景著色點在陰影圖上的采樣密度,以達(dá)到陰影反走樣的目的。但是當(dāng)場景中虛擬相機接近陰影時,DSM算法的陰影反走樣效果并不理想[4]。特效電影工程中混合分辨率陰影圖設(shè)計與硬陰影反走樣算法[5]通過使用混合分辨率陰影圖,并在陰影邊緣區(qū)域采用高分辨率,在非陰影邊緣區(qū)域采用低分辨率,以達(dá)到陰影反走樣的效果。但是由于點光源和平行光會形成非常硬的陰影邊界,陰影信號將會包含任意高的頻率。因此,采樣率不足以完全避免陰影走樣問題[6]。
與通過提升陰影圖采樣率來達(dá)到陰影反走樣目的的上述2種算法不同,基于重新矢量化的陰影圖(revectorization-based shadow mapping,RBSM)算法[7]可重新矢量化陰影邊界,用其不連續(xù)空間過濾陰影邊緣,抑制硬陰影邊界的鋸齒狀走樣。但RBSM算法得到的是近似的結(jié)果,陰影反走樣的效果會受場景復(fù)雜程度以及陰影圖分辨率的影響,在不同程度上損失陰影細(xì)節(jié)。
劃分陰影體(partitioned shadow volumes,PSV)算法[8]以及使用無堆棧和混合遍歷的深度劃分陰影體(deep partitioned shadow volumes using stackless and hybrid traversals,DPSV)算法[9]通過構(gòu)建三元對象劃分樹(ternary object partitioning tree,TOP),在著色器存儲緩沖區(qū)對象中存儲虛擬三維場景的幾何信息,然后在片段著色器中查詢TOP樹以計算場景著色點對點光源的可見性。DPSV算法在PSV算法的基礎(chǔ)上考慮了光源坐標(biāo)系下的深度信息以減少不必要的TOP樹查詢,以此提高算法效率。然而,只有在陰影邊緣區(qū)域出現(xiàn)走樣才會影響硬陰影和柔和陰影渲染質(zhì)量,將該算法與陰影圖算法相結(jié)合既可以提高算法效率,還可進(jìn)一步拓展柔和陰影渲染。
以方差陰影圖(variance shadow maps,VSM)算法[10]、方差軟陰影圖(variance soft shadow maps,VSSM)算法[11]、分層方差陰影圖(layered variance shadow maps,LVSM)算法[12]、卷積陰影圖(convolution shadow maps,CSM)算法[13]、指數(shù)陰影圖(exponential shadow maps,ESM)算法[14]、指數(shù)方差陰影圖(exponential variance shadow maps,EVSM)算法[15]以及矩陰影圖(moment shadow maps,MSM)算法[16]為代表的陰影算法是另一類使用強大數(shù)學(xué)工具實現(xiàn)陰影渲染的算法?其中,VSM算法是使用簡單數(shù)學(xué)公式實現(xiàn)強大算法的代表作,是第一個使用統(tǒng)計學(xué)去簡化陰影濾波預(yù)計算問題的方法[17]; CSM算法是首個使用濾波器進(jìn)行預(yù)計算的基于線性信號框架的算法,其使用傅里葉級數(shù)近似陰影測試[18]。這些算法均具有很高的效率,但在深度、復(fù)雜度較高的場景中會出現(xiàn)漏光現(xiàn)象[7]。
透視陰影貼圖(perspective shadow maps,PSM)算法[19]和光空間透視陰影貼圖(light space perspective shadow maps,LSPSM)算法[20]試圖通過傾斜光源的投影矩陣來解決透視走樣問題,以便在觀察者相機附近放置更多需要的紋素。但這2種技術(shù)均無法解決透視走樣問題。級聯(lián)陰影圖(cascaded shadow maps,CSM)算法[21]可以緩解陰影圖算法帶來的鋸齒狀走樣問題,但必須以不同的分辨率渲染多個陰影貼圖,導(dǎo)致高內(nèi)存開銷[9]。與本文算法相似的高效混合陰影渲染算法[22]將陰影圖算法和模板陰影體算法融合,可以實現(xiàn)比完全使用模板陰影體算法更快的速度渲染無走樣硬陰影,然而,該算法無法渲染柔和陰影。
百分比接近柔和陰影(percentage closer soft shadow,PCSS)算法[23]根據(jù)虛擬光源大小、遮光物以及場景著色點在光源坐標(biāo)系下的深度值來計算半影尺寸,實現(xiàn)了柔和陰影渲染。然而,PCSS算法渲染出的柔和陰影在半影尺寸較小的情況下依然可能會受鋸齒狀走樣的影響。
為解決該問題,基于歐式距離變換的柔和陰影圖(euclidean distance transform soft shadow mapping,EDTSSM)算法[24]和基于重新矢量化的柔和陰影圖(revectorization-based soft shadow mapping,RBSSM)算法[25]在RBSM算法[7]的基礎(chǔ)之上分別結(jié)合歸一化歐式距離變換和PCSS算法實現(xiàn)了柔和陰影渲染。然而,由于這2種算法均基于RBSM反走樣算法,所以在渲染柔和陰影時會受場景復(fù)雜程度和陰影圖分辨率的影響,一定程度上損失陰影細(xì)節(jié)。
為實現(xiàn)柔和陰影的無走樣高質(zhì)量渲染,本文提出融合陰影圖和深度劃分陰影體的陰影渲染算法,簡稱融合陰影渲染算法。利用深度劃分陰影體算法替代陰影圖算法,計算位于硬陰影邊緣區(qū)域場景著色點相對于點光源的可見性,消除陰影圖算法渲染硬陰影時出現(xiàn)的鋸齒狀走樣,并進(jìn)一步提升算法的效率。
融合陰影渲染算法既可以進(jìn)行無走樣硬陰影渲染,也可以進(jìn)行無走樣柔和陰影渲染。要渲染無走樣硬陰影,需要對處于陰影邊緣區(qū)域的著色點使用深度劃分陰影體算法計算可見性、對其他著色點使用陰影圖算法計算可見性。要渲染無走樣柔和陰影,首先將前一步得到的場景著色點的可見性值保存在可見性圖中,然后通過陰影圖計算半影尺寸,最后根據(jù)半影尺寸計算濾波器尺寸并對可見性圖濾波。該算法的步驟共分4步,如圖1所示。
將場景虛擬相機的位置設(shè)定在點光源位置,調(diào)整好相機的視角大小、寬高比等數(shù)據(jù)后渲染一遍場景并將距離虛擬相機最近的場景著色點的深度值寫入陰影圖中。
1.2.1 預(yù)備知識簡述
深度劃分陰影體算法將三維場景的幾何信息以TOP樹的形式存儲在著色器存儲緩沖區(qū)對象中。深度劃分陰影體的基本結(jié)構(gòu)由一個點光源和一個三角形以及由點光源向該三角形投射的不封底的陰影錐體組成。三角形所在平面稱為蓋平面(capping plane),由點光源和三角形的任意一條邊確定的平面稱為陰影平面(shadow plane)。每個平面將三維場景所在的三維空間劃分為正半空間和負(fù)半空間。能夠完全被光源照射到的空間為正半空間,另一側(cè)為負(fù)半空間。
圖1 融合陰影圖和深度劃分陰影體的陰影渲染算法流程圖
陰影平面和蓋平面均由四維向量表示[8]。陰影平面的向量在齊次坐標(biāo)系下的值為
其中,三維向量=[x,y,z],=[x,y,z]和=[x,y,z]分別為光源坐標(biāo)系下的三角形T的3個頂點。待插入TOP樹的三角形T的法向量在齊次坐標(biāo)系下的值為
表示蓋平面的向量在齊次坐標(biāo)系下的值為
TOP樹由陰影平面結(jié)點和蓋平面結(jié)點組成。其中,每個TOP樹結(jié)點由一個稱為“平面”的結(jié)點和3個稱為“鏈接”的數(shù)組組成。平面結(jié)點可以存儲陰影平面或蓋平面,3個鏈接分別存儲平面結(jié)點的正子結(jié)點、相交子結(jié)點以及負(fù)子結(jié)點。處于平面正半空間的三角形鏈接到平面結(jié)點的正子結(jié)點上;處于平面負(fù)半空間的三角形鏈接到平面結(jié)點的負(fù)子結(jié)點上;與平面相交的三角形鏈接到平面結(jié)點的相交子結(jié)點上。
圖2(a)頂部有一個點光源,藍(lán)色三角形所在平面稱為蓋平面,圖2(b)中點光源與三角形,2個頂點確立的平面為陰影平面,用黑色線表示。該陰影平面將三維空間劃分為正、負(fù)2個空間,黑色箭頭所指方向為正半空間;黃色線和紅色線代表點光源與三角形頂點確立的陰影平面。圖2(a) 為深度劃分陰影體示意圖,其黑色部分表示陰影錐體;圖2(b)展示的是從點光源看到的深度劃分陰影體俯視圖;圖2(c)表示的是TOP樹結(jié)點示意圖,其中黑色、黃色和紅色結(jié)點存儲的是陰影平面,藍(lán)色存儲的是藍(lán)色三角形所在的蓋平面;“+”結(jié)點表示處在父結(jié)點正半空間的平面結(jié)點;倒U型結(jié)點表示與父結(jié)點相交的平面結(jié)點;“-”結(jié)點表示處在父結(jié)點負(fù)半空間的平面結(jié)點。由圖2(b)和(c)可知,黃色結(jié)點代表的陰影平面位于黑色結(jié)點代表的陰影平面劃分的空間的負(fù)半空間,所以黃色結(jié)點處于黑色結(jié)點的“-”結(jié)點下。
圖2 TOP樹結(jié)構(gòu)示意圖((a)深度劃分陰影體示意圖;(b)深度劃分陰影體俯視圖;(c) TOP樹結(jié)點示意圖)
1.2.2 構(gòu)建TOP樹
在構(gòu)建TOP樹時,若TOP樹為空,則根據(jù)光源坐標(biāo)和待插入TOP樹的三角形的頂點坐標(biāo)構(gòu)建初始的TOP樹。若TOP樹不為空,則從TOP樹的根結(jié)點開始遍歷,當(dāng)平面結(jié)點不是葉子結(jié)點時,則根據(jù)待插入TOP樹的三角形與當(dāng)前TOP樹平面結(jié)點的位置關(guān)系,遍歷當(dāng)前平面結(jié)點的子結(jié)點:若三角形在平面的正半空間,遍歷平面結(jié)點的正子結(jié)點;若三角形在平面的負(fù)半空間,遍歷平面結(jié)點的負(fù)子結(jié)點;否則,遍歷平面結(jié)點的相交子結(jié)點。直到當(dāng)前平面結(jié)點是葉子結(jié)點,用當(dāng)前三角形的頂點坐標(biāo)和點光源的坐標(biāo)構(gòu)建TOP子樹并代替葉子結(jié)點。算法1為構(gòu)建TOP樹的流程,具體如下:
算法1. Creation of TOP tree Node{Plane plane //陰影平面或蓋平面Node p, i, n //正結(jié)點?相交結(jié)點以及負(fù)結(jié)點}CreateTOPTree(Node root, Triangle triangle, Light light)1: Node n = root 2: while n is not a leaf do3: float loc = pos( n.plane, triangle )4: if loc > 0 //三角形在平面正半空間5: n = n.p6: else if loc < 0 //三角形在平面負(fù)半空間7: n = n.n8: else //三角形與平面相交9: n = n.i10: end if11: end while12: replaceLeafNode(node,triangle, light)
為渲染出高質(zhì)量柔和陰影,需要以場景著色點的高精度可見性圖為基礎(chǔ)渲染柔和陰影。為獲得場景著色點的高精度可見性圖,需要對處于硬陰影邊緣區(qū)域的場景著色點遍歷TOP樹來計算該場景著色點對點光源的可見性、對處于其他區(qū)域的場景著色點,通過陰影圖來確定該場景著色點對光源的可見性。
為確定場景著色點是否處于陰影邊緣區(qū)域,將場景著色點投影到光源坐標(biāo)系下,并向四周偏移一陰影圖圖素,先采樣陰影圖獲取其記錄的深度值,然后與場景著色點在光源坐標(biāo)系下的深度值做對比,這一過程被稱為深度檢測。若偏移后與未偏移的場景著色點的深度檢測結(jié)果不一致,則該場景著色點處于陰影邊緣區(qū)域;否則該場景著色點不處于陰影邊緣區(qū)域。按照是否位于陰影邊緣區(qū)域?qū)鼍爸c進(jìn)行分類的結(jié)果如圖3(b)所示。
圖3 場景圖和著色點分類示意圖((a)場景圖;(b)著色點分類示意圖)
圖3(a)為虛擬場景最終渲染圖;圖3(b)中白色區(qū)域的點表示通過TOP樹確定對點光源可見性的場景著色點,黑色區(qū)域的點表示通過陰影圖確定對點光源可見性的場景著色點。場景著色點的可見性值最終將在渲染柔和陰影前被保存在可見性圖中。
對場景著色點分類后,開始計算場景著色點的可見性值:對不處于陰影邊緣區(qū)域的場景著色點,投影到光源坐標(biāo)系下與陰影圖作深度檢測,以確定該場景著色點對光源的可見性;對處于陰影邊緣區(qū)域的場景著色點,遍歷TOP樹以確定該場景著色點對光源的可見性。TOP樹遍歷算法流程如下:
首先從TOP樹的根節(jié)點開始遍歷,根據(jù)場景著色點與當(dāng)前平面的相對位置對當(dāng)前平面結(jié)點的子結(jié)點進(jìn)行遍歷。若場景著色點在當(dāng)前平面的正半空間,則遍歷平面結(jié)點的正子結(jié)點;若場景著色點在平面的負(fù)半空間則遍歷平面結(jié)點的負(fù)子結(jié)點;否則,遍歷平面結(jié)點的交叉子結(jié)點。若當(dāng)前遍歷的平面結(jié)點為蓋平面結(jié)點且場景著色點在蓋平面的負(fù)半空間,則該場景著色點位于陰影錐體內(nèi)部,對點光源不可見,其對點光源的可見性值為0。若遍歷完TOP樹仍未找到遮擋當(dāng)前場景著色點的平面,則當(dāng)前場景著色點對光源可見,其對點光源的可見性值為1。遍歷TOP樹的流程為:
算法2. TOP tree query TOP_pointQuery(Node root, Point shading_point)1: NodeStack stack, push(stack,root)2: while stack is not empty3: Node n = pop(stack)4: if n is not a leaf5: int loc = sign(n.plane, shading_point)6: if n.plane is a shadow plane7: push(stack, n.i)8: push(stack, loc > 0 ? n.p : n.n )9: else10: if loc < 011: return 0 12: end if13: push(stack, n.i)14: push(stack, n.p)15: end if16: end if17: end while18: return 1
為實現(xiàn)高質(zhì)量柔和陰影的實時渲染,使用基于PCSS算法的柔和陰影渲染算法計算硬陰影邊緣區(qū)域的半影大小,然后對可見性圖濾波以渲染柔和陰影。本文算法與PCSS算法的主要區(qū)別是:通過對陰影圖濾波確定當(dāng)前場景著色點對應(yīng)的陰影投射物的平均遮擋深度時,為了兼顧算法的效率和渲染的陰影的質(zhì)量,對陰影圖采用稀疏的間隔采樣方式。采樣的間隔的大小為常數(shù)或
其中,k為常數(shù),是通過對場景柔和陰影渲染效果調(diào)試得到的最優(yōu)值;為場景著色點在光源坐標(biāo)系下的深度;為在光源處的虛擬相機的遠(yuǎn)平面到相機的距離;為對陰影圖濾波以求得遮擋物平均遮擋深度時的濾波器的尺寸,其值為常數(shù)或
其中,為用來計算柔和陰影的虛擬面光源的尺寸。由于是對可見性圖濾波來渲染柔和陰影,所以位于觀察者位置處的虛擬相機的移動,即相機到場景著色點距離的改變會影響到對柔和陰影半影尺寸的正確計算。為解決此問題,在計算完濾波器的尺寸值后,要將其除以場景著色點到光源的距離,所以,濾波器的最終尺寸為
分別對硬陰影和柔和陰影進(jìn)行對比,為了更好地展示和分析融合陰影渲染算法以及參與對比算法渲染的陰影質(zhì)量,將路徑追蹤離線渲染算法的陰影渲染結(jié)果作為GroundTruth加入到對比實驗中,該算法可以實現(xiàn)物理的陰影渲染,并作為高質(zhì)量陰影渲染效果的標(biāo)準(zhǔn)來參考。為方便區(qū)分,渲染硬陰影稱融合陰影渲染算法即融合硬陰影渲染算法;渲染柔和陰影稱融合陰影渲染算法即融合軟陰影渲染算法。
本次對比試驗在同一臺計算機中進(jìn)行,渲染窗口和陰影圖的尺寸均采用1024×1024分辨率。計算機操作系統(tǒng)是Windows 10家庭中文版操作系統(tǒng),計算機硬件配置是Intel I5-10400處理器、16 GB內(nèi)存以及NVIDIA GTX 1650顯卡。其中3個場景中的三角形面分別為;場景1有135 537個;場景2有170 487個;場景3有54 783個。
4種分別是陰影圖算法、RBSM算法、DPSV算法以及融合硬陰影渲染算法參與了對比。
如圖4所示,由于未進(jìn)行任何的反走樣措施,陰影圖算法渲染的硬陰影在3個場景中均出現(xiàn)了明顯的鋸齒狀走樣。與其他3種算法相比,是距離路徑追蹤離線渲染算法差距最大的一種,丟失了許多細(xì)節(jié)。
RBSM算法在陰影圖算法的基礎(chǔ)上增加了形態(tài)反走樣算法,其是一種近似的算法,反走樣效果會受陰影圖分辨率以及場景復(fù)雜程度等因素影響。如圖4所示,由于在陰影圖算法的基礎(chǔ)上進(jìn)行了反走樣處理,該算法渲染的硬陰影未出現(xiàn)明顯的鋸齒狀走樣。但由于是近似結(jié)果,導(dǎo)致該算法在渲染中會失去一定的細(xì)節(jié),但好于陰影圖算法。其與路徑追蹤離線渲染算法相比仍有明顯的差距。
圖4 硬陰影渲染算法對比結(jié)果圖((a)陰影圖算法;(b) RBSM算法;(c) DPSV算法;(d) GroundTruth;(e)本文算法)
DPSV算法是一種陰影體算法,其可以實現(xiàn)像素精確的硬陰影渲染。如圖4所示,該算法渲染的硬陰影未出現(xiàn)鋸齒狀走樣,與作為GroundTruth的硬陰影效果接近。
融合硬陰影渲染算法對處于陰影邊緣區(qū)域的著色點采用深度劃分陰影體算法渲染硬陰影,對其他著色點采用陰影圖算法渲染陰影。在降低了算法開銷的同時,獲得了高質(zhì)量的陰影渲染效果。如圖4所示,該算法渲染的硬陰影與深度劃分陰影體算法以及路徑追蹤離線渲染算法渲染的陰影效果接近,未出現(xiàn)鋸齒狀走樣。
算法效率見表1,在3個場景中,本文算法平均比陰影圖算法慢50%,比RBSM算法慢37.6%,比DPSV算法快29.8%。
盡管本文算法的渲染速度不如陰影圖算法和RBSM算法快,但其渲染質(zhì)量更高,與深度劃分陰影體算法以及路徑追蹤離線渲染算法非常接近。同時,該算法還可以達(dá)到比深度劃分陰影體算法更快的渲染速度,實現(xiàn)實時渲染。
表1 硬陰影渲染算法效率對比圖(幀/秒)
共有PCSS算法、EDTSSM算法、RBSSM 算法以及本文算法4種柔和陰影渲染算法參與對比。
如圖5所示,由于在渲染柔和陰影時未對陰影圖深度檢測結(jié)果進(jìn)行反走樣,PCSS算法渲染的柔和陰影在3個場景中均出現(xiàn)了鋸齒狀走樣,同時還失去了許多細(xì)節(jié)。是4種柔和陰影渲染算法中,與路徑追蹤離線渲染算法差距最大的一個。
圖5 柔和陰影渲染算法對比結(jié)果圖((a) PCSS算法;(b) EDTSSM算法;(c) RBSSM算法;(d) GroundTruth;(e)本文算法)
RBSSM算法和EDTSSM算法均在渲染柔和陰影前,對陰影圖深度檢測結(jié)果進(jìn)行了陰影反走樣。但該處理方式是近似的,所以這2種算法渲染的柔和陰影同樣出現(xiàn)了走樣,在場景2中尤為明顯。圖5的場景3中,RBSSM算法是4種柔和陰影渲染算法中,唯一將城垛投射錯誤的算法。
融合軟陰影渲染算法在陰影邊緣區(qū)域采用深度劃分陰影體算法計算著色點對點光源的可見性,在其他區(qū)域使用陰影圖算法計算著色點的可見性。在此基礎(chǔ)上,將著色點的可見性值存儲在可見性圖中,然后進(jìn)行濾波即可渲染無走樣的柔和陰影。圖5中融合軟陰影渲染算法渲染的柔和陰影十分接近路徑追蹤離線渲染算法渲染的柔和陰影。
表2為算法效率對比表,在3個場景中,融合軟陰影渲染算法平均比PCSS算法慢63%,比RBSSM算法慢13.8%,比EDTSSM算法快105%。
表2 柔和陰影渲染算法效率對比表(幀/秒)
由于深度劃分陰影體算法對場景幾何復(fù)雜度的敏感度不高,但對場景在光源坐標(biāo)系下的深度復(fù)雜度更加敏感[8],所以本文算法更適合在光源坐標(biāo)系下深度復(fù)雜度不高的場景中使用。同時,由于本文算法僅在陰影邊緣區(qū)域采用深度劃分陰影體算法,所以,場景中陰影面積越大,越能發(fā)揮本文算法的性能優(yōu)勢;場景越精細(xì),越能發(fā)揮本文算法的精確計算優(yōu)勢。
柔和陰影渲染算法主要基于陰影圖算法實現(xiàn),陰影的小尺寸半影區(qū)域可能會出現(xiàn)鋸齒狀走樣。為消除鋸齒狀走樣對陰影渲染質(zhì)量的影響,本文提出了將陰影圖和深度劃分陰影體相融合的融合陰影渲染算法。
融合陰影渲染算法通過陰影圖將處于硬陰影邊緣區(qū)域和未處于硬陰影邊緣區(qū)域的場景著色點區(qū)分開來,然后對處在硬陰影邊緣區(qū)域的場景著色點查詢TOP樹來確定該著色點對點光源的可見性;對其他區(qū)域的場景著色點通過陰影圖計算該著色點對點光源的可見性。最后對可見性圖濾波實現(xiàn)高質(zhì)量柔和陰影的渲染。
融合陰影渲染算法結(jié)合了陰影圖算法的高渲染速度優(yōu)勢和深度劃分陰影體算法的高精度優(yōu)勢,彌補了基于陰影圖算法渲染的陰影易出現(xiàn)鋸齒狀走樣的缺點,實現(xiàn)了高質(zhì)量柔和陰影的渲染。該算法適合在光源坐標(biāo)系下深度復(fù)雜度不高的場景下使用,場景中陰影面積越大、場景越精細(xì)越能發(fā)揮本文算法的優(yōu)勢。
[1] WILLIAMS L. Casting curved shadows on curved surfaces[J]. ACM SIGGRAPH Computer Graphics, 1978, 12(3): 270-274.
[2] CROW F C. Shadow algorithms for computer graphics[J]. ACM SIGGRAPH Computer Graphics, 1977, 11(2): 242-248.
[3] JIA N X, LUO D N, ZHANG Y C. Distorted shadow mapping[C]//The 19th ACM Symposium on Virtual Reality Software and Technology. New York: ACM Press, 2013: 209-214.
[4] 葉慶, 付訊, 賈逆翔, 等. 透視-曲變陰影圖[J]. 計算機輔助設(shè)計與圖形學(xué)學(xué)報, 2014, 26(10): 1681-1687.
YE Q, FU X, JIA N X, et al. Perspective-distorted shadow maps[J]. Journal of Computer-Aided Design & Computer Graphics, 2014, 26(10): 1681-1687 (in Chinese).
[5] 李華, 楊華民, 趙建平, 等. 特效電影工程中混合分辨率陰影圖設(shè)計與硬陰影反走樣[J]. 中國光學(xué), 2016, 9(1): 89-96.
LI H, YANG H M, ZHAO J P, et al. Hybrid-resolution shadow mapping design and hard shadows anti-aliasing in special effects movies[J]. Chinese Optics, 2016, 9(1): 89-96 (in Chinese).
[6] PETERS C. Non-linearly quantized moment shadow maps[C]//Proceedings of High Performance Graphics. New York: ACM Press, 2017: 1-11.
[7] MACEDO M, APOLINáRIO A. Revectorization-based shadow mapping[C]//Proceedings of Graphics Interface 2016. Victoria: Canadian Human-Computer Communications Society, 2016: 75-83.
[8] GERHARDS J, MORA F, AVENEAU L, et al. Partitioned shadow volumes[J]. Computer Graphics Forum, 2015, 34(2): 549-559.
[9] MORA F, GERHARDS J, AVENEAU L,et al. Deep partitioned shadow volumes using stackless and hybrid traversals[C]//Rendering - Experimental Ideas & Implementations 2016. Dublin: The Eurographics Association, 2016: 73-83.
[10] DONNELLY W, LAURITZEN A. Variance shadow maps[C]//The 2006 Symposium on Interactive 3D Graphics and Games - SI3D '06. New York: ACM Press, 2006: 161-165.
[11] YANG B G, DONG Z, FENG J Q, et al. Variance soft shadow mapping[J]. Computer Graphics Forum, 2010, 29(7): 2127-2134.
[12] LAURITZEN A, MCCOOL M. Layered variance shadow maps[C]//Proceedings of Graphics Interface 2008. Toronto: Canadian Information Processing Society, 2008: 139-146.
[13] ANNEN T, MERTENS T, BEKAERT P, et al. Convolution shadow maps[C]//The 18th Eurographics Symposium on Rendering. Goslar: The Eurographics Association, 2007: 51-60.
[14] ANNEN T, MERTENS T, SEIDEL H-P, et al. Exponential shadow maps[C]//Proceedings of Graphics Interface 2008. Toronto: Canadian Information Processing Society, 2008: 155-161.
[15] LAURITZEN A. Rendering antialiased shadows using warped variance shadow maps[EB/OL]. (2008-05-06) [2021-09-08]. https://api.semanticscholar.org/CorpusID:58937971.
[16] PETERS C, KLEIN R. Moment shadow mapping[C]//The 19th Symposium on Interactive 3D Graphics and Games. New York: ACM Press, 2015: 7-14.
[17] EISEMANN E, SCHWARZ M, ASSARSSON U, et al. Real-time shadows[M]. Boca Raton: A K Peters/CRC Press, 2012: 137-138.
[18] EISEMANN E, SCHWARZ M, ASSARSSON U, et al. Real-time shadows[M]. Boca Raton: A K Peters/CRC Press, 2012: 140.
[19] STAMMINGER M, DRETTAKIS G. Perspective shadow maps[J]. ACM Transactions on Graphics, 2002, 21(3): 557-562.
[20] WIMMER M, SCHERZER D, PURGATHOFER W. Light space perspective shadow maps[C]//The 15th Eurographics Symposium on Rendering. Norkping: The Eurographics Association, 2004: 143-151.
[21] ENGEL, W. ShaderX5[M]. Boston: Charles River Media, 2006: 197-206.
[22] CHAN E, DURAND F. An efficient hybrid shadow rendering algorithm[C]//The 15th Eurographics Symposium on Rendering. Norkping: The Eurographics Association, 2004: 185-195.
[23] FERNANDO R. Percentage-closer soft shadows[C]//ACM SIGGRAPH 2005 Sketches. New York: ACM Press, 2005: 35.
[24] MACEDO M C D F, APOLINáRIO A L. Euclidean distance transform soft shadow mapping[C]//The 30th SIBGRAPI Conference on Graphics, Patterns and Images. New York: IEEE Press, 2017: 238-245.
[25] MACEDO M C F, APOLINáRIO A L Jr, AGüERO K A. Revectorization-based soft shadow mapping[J]. Computer Graphics Forum, 2020, 39(1): 389-404.
Algorithm of rendering shadows with combined use of shadow map and deep partitioned shadow volumes
WANG Wen-liang, CHEN Chun-yi, HU Xiao-juan, YU Hai-yang, TIAN Ye
(School of Computer Science and Technology, Changchun University of Science and Technology, Changchun Jilin 130022, China)
The shadow map algorithm can render hard shadows easily and quickly, but the hard shadow rendered by this algorithm will appear aliased in the edge area of the shadows. Affected by this, the soft shadows rendered based on the shadow map algorithm may still appear aliased in the shadow's small penumbra areas. Therefore, to render soft shadows without aliasing, it is necessary to calculate the visibility of shading points at the edge of the shadow from the point light source precisely. While deep partitioned shadow volumes algorithm can accurately calculate the visibility of the shading point to the point light source, they are less efficient than shadow map algorithms and cannot render soft shadows. In response to the above problems, we propose a shadow rendering algorithm that combines a shadow map algorithm with a deep partitioned shadow volumes algorithm. For the shading points in the shadow edge area, the deep partitioned shadow volumes algorithm is used to calculate the visibility of the shaded point to the point light source accurately; for other shading points, we use the shadow map algorithm to calculate the visibility of the shaded point to the point light source quickly. At last, we store the visibility value of the shading point in the visibility map and filter to achieve the rendering of soft shadows without aliasing.
shadow map algorithm; deep partitioned shadow volumes algorithm; hard shadows; soft shadows; fusion shadow rendering algorithm
TP 391
10.11996/JG.j.2095-302X.2022030478
A
2095-302X(2022)03-0478-08
2021-10-26;
2021-12-23
26 October,2021;
23 December,2021
國家自然科學(xué)基金項目(U19A2063),吉林省科技發(fā)展計劃項目(20190302113GX)
National Natural Science Foundation of China (U19A2063), Jilin Provincial Development Program of Science and Technology (20190302113GX)
王文亮(1995–),男,碩士研究生?主要研究方向為計算機圖形學(xué)?E-mail:2512188652@qq.com
WANG Wen-liang (1995-), master student. His main research interest covers computer graphics. E-mail:2512188652@qq.com
陳純毅(1981–),男,教授,博士?主要研究方向為真實感三維圖形繪制?計算機仿真?E-mail:chenchunyi@hotmail.com
CHEN Chun-yi (1981-), professor, Ph.D. His main research interests cover realistic 3D graphics rendering and computer simulation. E-mail:chenchunyi@hotmail.com