陳主昕,楊沁七,陳 瑞,張嚴辭,劉艷麗,吳志紅
基于虛擬光源的實時半透明材質渲染
陳主昕,楊沁七,陳 瑞,張嚴辭,劉艷麗,吳志紅
(四川大學計算機學院,四川 成都 610065)
半透明材質渲染是實時渲染領域的重要研究部分。針對透射渲染依賴于準確的透射厚度計算,往往受限于場景模型和光照的復雜度問題,提出一種基于虛擬光源來計算半透明材質渲染中的透射厚度的方法。即在場景中增加一個虛擬光源,并在虛擬光源處使用排序算法來計算場景的深度信息。在計算從真實光源到著色點處的透射厚度時,提出在兩者世界空間連線的直線段上進行采樣,統(tǒng)計在物體內部的采樣點占總采樣點數(shù)目的比例,乘以直線段的長度得到估計結果。并且,當場景中存在多個真實光源時,基于采樣的方法能夠復用虛擬光源中存儲的場景深度信息。該算法能夠有效地提升透射厚度計算的準確率,也能減輕場景中光源數(shù)量增多帶來的顯存開銷問題。實驗證明該方法能在效率、效果和顯存開銷之間取得較好的平衡。
半透明材質渲染;透射厚度;虛擬光源;排序算法;多光源
次表面散射是生活中常見的現(xiàn)象,也是真實感渲染中不可缺少的部分。能夠發(fā)生次表面散射的物體,如皮膚、蠟燭、玉石、牛奶等,在渲染中均被稱為半透明材質。由于光線在進入這些物體內部,并經(jīng)過一定的反射與折射之后會從另一個點射出,在視覺上就會給人一種柔和與飽滿的感覺。其中,在比較薄的部分,光線會穿透物體,呈現(xiàn)出剔透感,這種情況又被特化為透射現(xiàn)象。
為了渲染出較為真實的透射效果,許多高精度的模型被用于模擬光線在物體內部的散射路徑[1-3]。為了加速散射計算,STAM[4]提出了擴散理論,后人在此基礎上提出了許多模擬散射的方法,其在提高計算效率的同時也能渲染出比較真實的結果。
透射屬于廣義上的次表面散射,但卻特指光線從入射點的異側出射的情況。根據(jù)這個特性,就有許多通過估計透射厚度來渲染半透明材質的方法[5-6]。其中最重要的是能準確地計算光源到達著色點的透射厚度。但現(xiàn)有的透射厚度計算方法[5]需同時滿足3個條件才能保證計算的正確性:①場景中均為閉合規(guī)整的物體;②忽略光線與物體表面相切的情況;③光源與相機均處于物體外部。
但對于復雜的場景而言,要完全滿足以上3個條件非常困難。另外,復雜場景中通常存在成百上千的光源,現(xiàn)有的方法由于需要在每個光源處保存完整的場景信息,會很快耗盡顯存。于是本文基于射線法的基本原理提出虛擬光源算法,通過采樣的方式提高透射厚度計算的準確度?;谔摂M光源,能在提高算法準確率和效率的同時,顯著減少顯存的消耗。
半透明物體的離線渲染算法主要是通過輻射傳輸方程[7]結合多分層的蒙特卡洛(Monte Carlo multi-layered,MCML)[8]方法求解光線在物體內部的散射結果。暴力路徑追蹤[1]方法、體積路徑追 蹤[2]方法和體積光子映射[3]方法均是基于該思路提出的算法。文獻[4]以光線的散射距離為自變量函數(shù)來近似能量的衰減,并提出了擴散(Diffusion)理論?;诖死碚?,JENSEN等[9]在雙向反射分布函數(shù)(bidirectional reflectance distribution function,BRDF)[10]方程的基礎上提出了雙向次表面反射分布函數(shù)(bidirectional scattering-surface reflectance distribution function,BSSRDF)方程以精確描述次表面散射現(xiàn)象,并使用擴散剖面(diffusion profile)曲線來描述多種不同的材質。同時,為了加速多重散射的計算,還利用偶極子(dipole)模型來高效地計算擴散剖面。DONNER和JENSEN[11]將光子映射引入擴散剖面的計算,從而提升了散射計算的準確性。HABEL等[12]將蒙特卡洛重要性采樣應用到光子映射模擬次表面散射的領域,使得該方法能夠處理任意方向的入射光。
實時次表面散射算法的基本思想也是來自于文獻[9]引入的擴散剖面曲線,并使用一些方法來近似計算光在特定材質中散射后的衰減。第一類方法是表面潑濺(surface splatting),其通過splat多邊形來計算領域內片段的散射貢獻[13-14]。另一類方法是使用多個高斯函數(shù)加權來近似擴散剖面[15-17]。文獻[18-19]基于屏幕空間濾波的方法,提高了繪制多個半透明物體的效率。YATAGAWA等[20]利用線性分解來支持各向異性材質的散射。XIE等[21]則在此基礎上利用時間方差進一步提升了渲染效果。
實時透射算法在大多數(shù)情況下均使用實時次表面散射算法來計算,這是因為其在物體內部的擴散過程非常相似,但也有一些針對透射渲染的算法。文獻[6]擴展了傳統(tǒng)的陰影貼圖來進行透射顏色的計算。JIMENEZ等[22]為了渲染皮膚的透射效果,對透明陰影貼圖進行了一定的簡化。MAISCH和ROPINSKI[23]提出了基于空間鄰接圖的方法,使透射渲染可以應用于區(qū)域光源與環(huán)境光源的場景。同時,也有許多研究聚焦于透射物體厚度的計算[24-26]。GOLUBEV[27]提出根據(jù)場景的條件自適應地選擇不同的透射距離計算方法,實現(xiàn)了更高質量的透射效果。文獻[5]使用模塊化技術加速厚度計算,以提高計算的效率。
片元排序技術分為3類:①深度剝離[28],通過多次光柵化場景來獲取多個深度層次的片段;②A-buffer[29],為了減少多次光柵化場景帶來的開銷,提出使用特定的數(shù)據(jù)結構并結合一次光柵化操作來保存所有片段的深度;③K-buffer[30],核心思想是通過一次場景的光柵化在每一個像素位置保存?zhèn)€最重要的片段,再對這個片段進行排序,進一步提高了計算效率并減少了存儲開銷。
在渲染場景中,計算半透明物體的透射顏色時,最常使用的方法是BSSRDF,即
其中,p和ω分別為光線的入射點和方向;p和ω為光線的出射點和方向;為透射距離;(,)為菲涅爾函數(shù);()為光線從入射點到出射點的衰減。要真實地渲染出半透明物體,快速并準確地計算()是關鍵的一步。在實時渲染中,常使用個高斯函數(shù)來近似物理真實的(),即
其中,為高斯函數(shù);權重w和方差v與具體的物體材質相關。雖然使用該方式可以提高計算的效率,但是透射距離的計算卻受到準確性和存儲開銷的限制。
針對以上問題,本文提出了基于虛擬光源的實時半透明材質渲染算法,通過在場景中增加一個虛擬光源來計算透射厚度?;舅枷胧窃谔摂M光源處使用片元排序算法對場景的深度進行排序并保存,在計算真實光源到著色點的透射厚度時,在透射光線上采樣并映射回虛擬光源處進行判斷,根據(jù)采樣點在物體內部的比例對透射厚度進行估算。這樣既可以提高透射厚度估算的準確性,也能減少多光源場景中每一個真實光源均需保存場景深度的開銷。
在圖1的場景中,紅色箭頭表示的透射光線不滿足光線不與物體表面相切的條件,使得計算得到的透射厚度偏差嚴重。本節(jié)要解決的問題就是如何基于虛擬光源來計算透射厚度并不受場景復雜度的限制。
圖1 透射厚度計算示例場景
透射厚度的計算目標是準確地求解光源到著色點所經(jīng)過物體內部的距離總和。如,在計算圖1中從光源到著色點處的透射厚度,就是求解線段上屬于物體內部的長度和?;诖耍疚奶岢鐾ㄟ^采樣的方式來近似計算透射厚度。最簡單的方法就是在線段上均勻地分布采樣點(圖1中橙色小點),然后通過判斷處于物體內部的采樣點占總采樣點的比例,再結合線段的長度就可以估計透射厚度,即
由于不使用透射光線與物體的交點來估計透射厚度,就不會將著色點誤判為處于物體外部,所以能夠減少由物體不規(guī)整或光線與物體相切帶來的計算誤差。
為了能夠高效地判斷采樣點是否在物體內部,在場景中增加一個虛擬光源?,并從所有的采樣點出發(fā)向?發(fā)出射線(圖1中黃色虛線箭頭所示)。最后根據(jù)幾何射線法可判斷采樣點s是否處于物體內部,即從采樣點出發(fā),向著虛擬光源?發(fā)射一條射線,若該射線在到達光源位置前與物體相交的次數(shù)為奇數(shù),那么該點在物體內部,否則在物體外部。由于采樣點之間互不相關,即使光線與物體相切導致判斷錯誤,也不會造成巨大的計算誤差。
在計算交點數(shù)目時,將采樣點s投影到虛擬光源?的空間,并計算其相對于虛擬光源?的深度值。此時,由于已經(jīng)在虛擬光源?處對場景進行排序并保存了深度信息,所以就能基于像素鏈表方法[5]計算出采樣點s對應的小于其深度的片元數(shù)量。其得到的數(shù)量就是從采樣點s到虛擬光源?之間與物體的交點數(shù)目。
基于已提出的虛擬光源,便可非常容易地擴展到多光源的場景,并且不需要像文獻[5]一樣對每個真實光源都繪制一遍場景。但由于場景中的每個真實光源均需復用虛擬光源中保存的場景深度信息,所以需解決的問題就是如何選擇一個最佳的虛擬光源朝向,并設定好最佳的投影矩陣與位置來獲得更好的效果與更快的效率。
在保存深度信息的紋理分辨率固定的條件下,虛擬光源的可視范圍越小,保存在深度紋理中片元的深度值精度就越高。那么最精確的虛擬光源可視范圍就是相機的可視范圍,但會丟失許多相機之外的半透明片元,導致對采樣點的判斷出現(xiàn)偏差,最后造成透射厚度計算不正確。
因此,虛擬光源的視口范圍剛好包裹住所有半透明物體時,其投影矩陣為最佳。一方面,這樣的投影矩陣能盡可能地保存對透射厚度計算有影響的片元深度;另一方面,能使得片元保存的深度值具有較高的精度。
算法1為求解虛擬光源位置和投影矩陣的方法,通過求解能包裹所有半透明物體的包圍盒來計算虛擬光源的視口范圍。首先,計算所有半透明物體的包圍盒,取,,3個軸向上的最大、最小值作為場景的包圍盒。然后生成片元總數(shù)圖,通過片元總數(shù)圖來確定虛擬光源的朝向(見4.2節(jié))。接下來從場景包圍盒的中心,沿著虛擬光源朝向的反方向,由給定的距離參數(shù)確定虛擬光源的位置。最后將場景包圍盒的8個頂點變換到虛擬光源空間下,求解出變換后的坐標在,,3個軸上的最值作為虛擬光源投影矩陣的參數(shù)。
算法1.計算虛擬光源的位置和投影矩陣
輸入:所有的半透明物體,距離參數(shù)以及待定的虛擬光源視口朝向。
輸出:虛擬光源位置和投影矩陣。
// 計算包裹住所有半透明物體的最小場景AABB
1. aabbInScene ← 0;
2. for obj ∈do
3. aabbOfObj ← calculateAABB(obj);
4. aabbInScene ← mixAABB(aabbIns -cene, aabbOfObj);
// 確定虛擬光源的最佳視口朝向
5. l ← calculateMaxEdgeLengthOfAABB (aabbInScene);
6. d ← 0;
7. maxW ← 0;
8. for dir ∈. do
9. fragmentNumMap ← generateFrag -mentNumMap (, l,,);
10. w ← calculateMapWeight(fragm -entNumMap);
11. if w > maxW then
12. maxW ← w;
13. d ← dir;
//計算虛擬光源的位置
14. center ← calculateAABBCenter(aabb -InScene);
15.← center –? l ? d;
16. params ← transformAABB(aabbInS -cene,, d);
//計算虛擬光源的投影矩陣
17.← perspective(params);
18. return,;
由此,計算得到的虛擬光源的投影矩陣為
其中,m=min,m=max,m=min,m=max,m=(-)min,m=(-)max。距離參數(shù)通過影響投影矩陣來影響渲染,并統(tǒng)一將其設置為=0.8。
即使計算的投影矩陣均能包裹住半透明物體,但不同朝向的虛擬光源所生成的深度信息紋理會有很大的差別,最后在計算透射厚度時的效果和效率會有較大的區(qū)別。這是因為在不同的朝向下,場景投影到虛擬光源的屏幕空間中所占的比例不同,每一個像素所包含的片元數(shù)量也不同,導致了深度信息的精確度有所區(qū)別。并且,在確定虛擬光源的朝向時,還需考慮光線相切或模型的不規(guī)范導致的采樣點內外判斷錯誤的問題。
為了解決這些問題,本文使用片元總數(shù)圖來輔助計算虛擬光源的朝向。即通過計算半透明物體與每條光線相交的片元總數(shù)來生成片元總數(shù)圖。若片元總數(shù)圖中某個紋素值為奇數(shù),則說明該光線出現(xiàn)了相切或模型不規(guī)整問題。且片元總數(shù)圖中擁有片元的像素平均片元層數(shù)越少,計算效率則越高。也就是說,越好的虛擬光源朝向,在生成的片元總數(shù)圖中,擁有片元的像素占比越大,擁有片元的像素中平均片元數(shù)越少。所以,在選擇虛擬光源的最佳朝向時,需基于片元總數(shù)圖來計算一個權重,將最高權重的片元總數(shù)圖所對應的朝向視為最佳的結果,即
其中,k為片元總數(shù)圖中片元數(shù)不為0的像素的比例;k為片元總數(shù)為奇數(shù)的比例;k,min和max分別為所有像素片元層數(shù)的平均值、最小值和最大值;,,分別為不同比例所占的權重,且權重與場景相關。當虛擬光源朝向與視線接近平行時,光線相切或模型不規(guī)整問題就會被放大,此時需增加的值。如果場景中的光源過多,對算法效率有較大影響時,就應降低的值,通過犧牲一些準確性來提高計算效率。
為了提高計算效率,本文預設6個虛擬光源的朝向,并只在初始化階段計算所有朝向的片元總數(shù)圖,以此選擇一個最佳朝向。之后,只在最佳朝向下生成片元總數(shù)圖并計算權重,且當下降到初始值的一半以下時,才全部重新計算并選擇最佳朝向。
在使用虛擬光源算法計算透射厚度時,在每一條透射光線上均需做均勻采樣,且每一個采樣點均要借助場景深度紋理來判斷是否在物體內部。那么采樣點的數(shù)量就直接影響到了透射厚度計算的準確率和效率。如何在保證渲染質量同時,通過減少采樣點數(shù)量來提高計算效率是需要解決的問題。
以第3節(jié)從真實光源采樣算法出發(fā),根據(jù)固定的采樣步長向著色點前進。因此,采樣步長就決定了采樣點的數(shù)量。如果增大采樣步長,就能夠減少采樣的總數(shù)從而提高算法效率。本文使用的自適應采樣方式需要設置最小及最大的采樣步長min和max,初始時從最小采樣步長開始。如果相鄰兩次采樣的點均在物體外部或內部,那么下一次進行采樣時就需擴大采樣步長,反之則縮小采樣步長,即
同時,式(3)對透射厚度的估計修改為步長之和,即
再結合文獻[22]提出的近似方法,可快速地估算出
要在不影響采樣效果的基礎上提高采樣效率,除了自適應地調整步長之外,還可通過將采樣點限制在有效采樣的范圍之內。第3節(jié)的采樣是在整條透射光線上進行的,但透射光線在傳輸過程中并不完全處于物體內部,有某段光線處于物體外部,對其進行采樣就是無效的,所以需利用空間跳躍的思想來限制采樣范圍。空間跳躍法是體渲染領域常用的方法之一,本文受稀疏跳躍法[31]啟發(fā),在真實光源處對場景進行光柵化,以得到的深度信息進行空間跳躍并輔助采樣。
(1) 深度圖信息輔助采樣。在渲染場景中,某些光源會位于距離半透明物體較遠的位置,這些光源到半透明物體的入射點之間的空間,就是無效的空間。因此,將采樣的范圍限制在光線的入射點到著色點之間,就可以極大地提高采樣效率。真實光源到半透明物體的入射點可以通過深度圖得到,在后續(xù)計算透射厚度時,只需要將深度圖與光源的投影矩陣、視圖矩陣相結合,就可以反推出這條透射光線的入射點,并將其作為采樣起點,便可跳過這段無效的空間。同時,真實光源的深度圖不僅可以用于空間跳躍,還可以用于計算不透明物體的陰影,所以這個方法不會增加計算和存儲的開銷。
(2) 片元總數(shù)圖信息輔助采樣。對于許多透射光線而言,其所穿透的半透明物體的路徑是完全實心的。意味著這些透射光線只會進入半透明物體一次,并且從半透明物體出射后就不再與任何半透明物體相交。透射光線是否透過實心的半透明段,可以借助片元總數(shù)圖來進行判斷。本文通過在每一個真實光源處保存一張片元總數(shù)圖來輔助計算,在對透射光線進行采樣之前,先判斷片元總數(shù)圖中其對應的值是否為2,如果為2就代表這條透射光線經(jīng)過的半透明路徑是完全實心的,即可跳過這部分采樣直接進行計算。
本文在多個場景中設置不同的光源和視點進行實驗,并對提出的基于虛擬光源的透射厚度計算方法以及采樣效率的優(yōu)化方法進行了分析驗證。實驗環(huán)境為:Intel Core i5-8400 CPU、NVIDIA GeForce GTX 1060 GPU、8 GB內存。基于G3D Engine[32]實現(xiàn)了本文算法及對比算法對比,渲染結果的分辨率和場景深度紋理的分辨率分別為1920×1080和1024×1024。
圖2分別顯示了本文方法對4種半透明模型的渲染結果,可以看到該方法生成了比較真實的透射效果。為了說明本文方法的有效性,實現(xiàn)了深度圖法[6]和模塊鏈表法[5]對半透明材質的渲染,并與本文虛擬光源法進行比較分析。此外,使用路徑追蹤所計算的透射厚度結果作為Ground Truth。
圖2 不同半透明材質模型的渲染結果((a)兔子模型;(b)龍模型;(c)飛龍模型;(d)人臉模型)
在圖1所示的場景中,從不同視點分別使用這3種算法計算場景中每個片元對應的透射厚度,并與路徑追蹤的結果進行比較。并使用均方根誤差(root mean square error,RMSE)表示,以此來驗證本文算法在復雜場景中計算的半透明物體透射厚度的準確性。
圖3可視化了這3種算法計算得到的每一個片元的誤差率和RMSE (黃色表示高誤差,藍色表示低誤差)??梢钥吹奖疚乃惴ㄔ诖蠖鄶?shù)情況下計算的透射厚度誤差均小于深度圖法和模塊鏈表法。這是因為深度圖法,只計算透射光線的入射點與著色點之間的距離,當透射光線經(jīng)過的透射路徑中存在外部空間,就會產(chǎn)生極大的誤差。對于模塊鏈表法,在片元法線與光線入射方向接近垂直時,由于深度信息采樣誤差和光線與片元相切誤差導致厚度計算誤差較大,所以在視點2和3處產(chǎn)生誤差和RMSE均大于本文算法。然而,在視點1處,本文算法計算的透射厚度準確率比模塊鏈表法低,是因為在該視點處絕大多數(shù)透射光線與片元法線均不垂直,從而避免了模塊鏈表法誤差較大的情況,由此得到的透射厚度就比通過采樣估計得到的結果更加準確。
圖3 不同視點下3種算法的厚度計算誤差對比((a)深度圖法;(b)模塊鏈表法;(c)虛擬光源)
所以,本文所提出的虛擬光源算法在凹型和多層半透明物體的透射厚度計算中,準確度在大多情況下均大于深度圖法和模塊鏈表法,且該方法能夠顯著地降低由模型不規(guī)整和光線相切問題造成的計算誤差。
為了驗證本文算法在透射效果渲染上的優(yōu)勢,選擇了圖2(c)中的飛龍模型并在3個視圖方位下對該模型進行半透明渲染,同時與深度圖法、模塊鏈表法的渲染結果進行比較。從圖4中可以看到,本文方法具有更高的真實感。這是因為深度圖法會錯誤地計算2個翅膀之間的透射厚度,造成翅膀的透射厚度過大,導致其幾乎無透射效果。對于模塊鏈表法而言,3個視圖方位下均有比較明顯的瑕疵,線框標示出了由于光線相切問題導致厚度計算誤差所造成的渲染走樣。
同時,還比較了3種算法在單光源場景中渲染飛龍模型的效率,如圖4中右上角數(shù)字所示(圖中差異較大的部分用線框標識,右下角紅框為放大的細節(jié),右上角數(shù)字表示幀率)。本文的虛擬光源算法在該場景中的效率均比其他2種算法低。這是因為深度圖法只需要計算深度圖就可進行半透明渲染,而本文算法和模塊鏈表法均需對片元的深度信息進行排序。另外,在單光源場景中,本文算法相比于模塊鏈表法,還需要進行額外的采樣操作,從而進一步降低了本文算法的計算效率。
圖4 單光源場景中3種算法在飛龍模型不同視圖方位下的渲染結果對比((a)Groung Truth;(b)深度圖法;(c)模塊鏈表法;(d)虛擬光源)
因此,為了驗證本文的虛擬光源算法在多光源場景下的顯存和效率優(yōu)勢,同樣選擇了圖2(c)中的飛龍模型進行實驗,并將場景深度紋理的分辨率提高4倍,用于模擬顯存開銷較大的情況,實驗結果見表1。在真實光源只有一個的高顯存場景中,模塊鏈表法的幀率是本文算法的220%,這是因為本文算法需要進行額外的采樣操作,導致效率降低。但模塊鏈表法所需要的顯存隨著光源數(shù)量的增多呈線性增長,當光源數(shù)量為10時,由于所需要的總顯存量超過了GPU顯存的最大值,數(shù)據(jù)將轉存到內存中,使得幀率急劇下降。雖然本文的虛擬光源算法效率均比深度圖法低,但能在保證實時的條件下極大地改善渲染效果。
綜上所述,相比于深度圖法和模塊鏈表法,本文的虛擬光源法能在效率、效果和存儲開銷之間取得更好的平衡。
最后,為了驗證本文方法的有效性,分別對比了在不同場景及采樣方法下所需的顯存、RMSE和幀率,結果見表2。從誤差上分析,空間跳躍法的RMSE值最高,這說明在使用真實光源的深度圖和片元總數(shù)圖來進行空間跳躍時,由于這些輔助圖均存在一定的誤差,從而增大了渲染結果的誤差。從顯存開銷上分析,空間跳躍法需要額外的顯存來增加采樣效率,而自適應采樣方法與原始采樣方法相比不需要額外的顯存開銷。從幀率上分析,兩類采樣效率優(yōu)化方法均能夠在一定程度上提高幀率。所以,本文提出的采樣效率優(yōu)化方法雖各有優(yōu)劣,但至少能提升60%的效率,并且不會帶來超過0.02的RMSE值,即在不造成較大精度損失的情況下均能大幅度地提升原始采樣的效率。
表1 3種算法在高顯存場景的顯存(MB)與幀率(FPS)
表2 3種采樣方法在各種場景渲染中的顯存(MB)、RMSE和幀率(FPS)
本文提出了一種基于虛擬光源進行透射厚度計算的方法,能夠在多光源場景中實現(xiàn)高質量的半透明材質的透射渲染。并通過在場景中增設一個虛擬光源來提高透射厚度計算的準確性并減少在多光源條件下的顯存開銷和計算開銷。為了進一步地提升效果和效率,本文設計了一種自適應的方法來確定虛擬光源的參數(shù)并提出了2種優(yōu)化采樣效率的方案。雖然本文方法能在實時的條件下渲染出高質量的半透明效果,但卻存在一些需要解決的限制:
(1) 本文所設計的虛擬光源朝向選擇方案只能從幾個待定朝向中選擇一個局部最優(yōu)的結果。如何在不預設待定朝向的情況下,計算出一個全局最優(yōu)的虛擬光源朝向,同時保證算法的計算效率,是未來工作的主要方向。
(2) 本文的透射厚度計算方法隱形地假設了所有的半透明物體是各項同性的,即物體內部的密度一致。因此,只需要使用采樣點的位置信息即可滿足需求。如何利用更多信息使得基于虛擬光源的半透明材質渲染算法支持各向異性的材質,也是未來工作的重要研究方向。
[1] KAJIYA J T. The rendering equation[C]//The 13th Annual Conference on Computer Graphics and Interactive Techniques. New York: ACM Press, 1986: 143-150.
[2] LAFORTUNE E P, WILLEMS Y D. Rendering participating media with bidirectional path tracing[C]//Eurographics Workshop on Rendering Techniques ’96. Vienna: Springer, 1996: 91-100.
[3] JENSEN H W, CHRISTENSEN P H. Efficient simulation of light transport in scenes with participating media using photon maps[C]//The 25th Annual Conference on Computer Graphics and Interactive Techniques. New York: ACM Press, 1998: 311-320.
[4] STAM J. Multiple scattering as a diffusion process[C]// Eurographics Workshop on Rendering Techniques’95. Vienna: Springer, 1995: 41-50.
[5] ARCHER J, LEACH G. Further improvements to OIT sort performance[C]//2018 Computer Graphics International. New York: ACM Press, 2018: 147-152.
[6] DACHSBACHER C, STAMMINGER M. Translucent shadow maps[C]//The 14th Eurographics Workshop on Rendering, New York: ACM Press, 2003: 197-201.
[7] CHANDRASEKHAR S. Radiative transfer[EB/OL]. [2022- 01-05]. https://www.doc88.com/p-74987094240002.html.
[8] WANG L H, JACQUES S L. Monte Carlo modeling of light transport in multi-layered tissues in standard C[R]. San Antoni: The University of Texas, 1992: 1-167.
[9] JENSEN H W, MARSCHNER S R, LEVOY M, et al. A practical model for subsurface light transport[C]//The 28th Annual Conference on Computer Graphics and Interactive Techniques. New York: IEEE Press, 2001: 511-518.
[10] NICODEMUS F E, RICHMOND J C, HSIA J J, et al. Geometrical considerations and nomenclature for reflectance[R]. National Bureau of Standards, 1977.
[11] DONNER C, JENSEN H W. Rendering translucent materials using photon diffusion[C]//ACM SIGGRAPH 2008 Classes. New York: ACM Press, 2008: 1-9.
[12] HABEL R, CHRISTENSEN P H, JAROSZ W. Photon beam diffusion: a hybrid Monte Carlo method for subsurface scattering[J]. Computer Graphics Forum, 2013, 32(4): 27-37.
[13] CHEN G J, PEERS P, ZHANG J W, et al. Real-time rendering of deformable heterogeneous translucent objects using multiresolution splatting[J]. The Visual Computer, 2012, 28(6-8): 701-711.
[14] SHAH M A, KONTTINEN J, PATTANAIK S. Image-space subsurface scattering for interactive rendering of deformable translucent objects[J]. IEEE Computer Graphics and Applications, 2009, 29(1): 66-78.
[15] BORSHUKOV G, LEWIS J P. Realistic human face rendering for “The Matrix Reloaded”[EB/OL]. [2021-07-26]. https://doi.org/10.1145/1198555.1198593.
[16] GREEN S. Real-time approximations to subsurface scattering[J]. GPU Gems, 2004, 1: 263-278.
[17] D’EON E, LUEBKE D. Advanced techniques for realistic real-time skin rendering[EB/OL]. [2022-02-18]. https://www. mendeley.com/catalogue/726e5d2c-a70a-3c7f-bd03-d727ecf32261/.
[18] JIMENEZ J, SUNDSTEDT V, GUTIERREZ D. Screen-space perceptual rendering of human skin[J]. ACM Transactions on Applied Perception, 2009, 6(4): 1-15.
[19] JIMENEZ J, ZSOLNAI K, JARABO A, et al. Separable subsurface scattering[J]. Computer Graphics Forum, 2015, 34(6): 188-197.
[20] YATAGAWA T, YAMAGUCHI Y, MORISHIMA S. LinSSS: linear decomposition of heterogeneous subsurface scattering for real-time screen-space rendering[J]. The Visual Computer, 2020, 36(10-12): 1979-1992.
[21] XIE T T, OLANO M, KARIS B, et al. Real-time subsurface scattering with single pass variance-guided adaptive importance sampling[J]. Proceedings of the ACM on Computer Graphics and Interactive Techniques, 2020, 3(1): 1-21.
[22] JIMENEZ J, WHELAN D, SUNDSTEDT V, et al. Real-time realistic skin translucency[J]. IEEE Computer Graphics and Applications, 2010, 30(4): 32-41.
[23] MAISCH S, ROPINSKI T. Spatial adjacency maps for translucency simulation under general illumination[J]. Computer Graphics Forum, 2017, 36(2): 443-453.
[24] KOSAKA T, HATTORI T, KUBO H, et al. Rapid and authentic rendering of translucent materials using depth-maps from multi-viewpoint[EB/OL]. [2021-08-04]. https://doi.org/10.1145/2407156.2407206.
[25] TOMASZEWSKA A, STEFANOWSKI K. Real-time spherical harmonics based subsurface scattering[C]//Image Analysis and Recognition. Heidelberg: Springer, 2012: 402-409.
[26] JIMENEZ J, ZSOLNAI K, JARABO A, et al. Separable subsurface scattering[J]. Computer Graphics Forum, 2015, 34(6): 188-197.
[27] GOLUBEV E. Efficient screen-space subsurface scattering using burley’s normalized diffusion in real-time[EB/OL]. [2021-08-21]. http://advances.realtimerendering.com/s2018/index.htm.
[28] EVERITT C. Interactive order-independen t transparency [EB/OL]. [2022-01-29]. https://www.mendeley.com/catalogue/1695feca-8162-3679-b67e-95c5aa873834/.
[29] CARPENTER L. The A-buffer, an antialiased hidden surface method[C]//The 11th Annual Conference on Computer Graphics and Interactive Techniques. New York: ACM Press, 1984: 103-108.
[30] BAVOIL L, CALLAHAN S P, LEFOHN A, et al. Multi- fragment effects on the GPU using the-buffer[C]//2007 Symposium on Interactive 3D Graphics and Games. New York: ACM Press, 2007: 97-104.
[31] HADWIGER M, AL-AWAMI A K, BEYER J, et al. SparseLeap: efficient empty space skipping for large-scale volume rendering[J]. IEEE Transactions on Visualization and Computer Graphics, 2018, 24(1): 974-983.
[32] MCGUIRE M, MARA M, MAJERCIK Z. The G3D innovation engine[EB/OL]. [2021-01-07]. https://casual-effects.com/g3d.
Virtual light-based translucent material rendering in real-time
CHEN Zhu-xin, YANG Qin-qi, CHEN Rui, ZHANG Yan-ci, LIU Yan-li, WU Zhi-hong
(Computer Science Department, Sichuan University, Chengdu Sichuan 610065, China)
Translucent material rendering is an essential part of the field of real-time rendering. Transmission rendering relies on the accurate calculation of transmission thickness and is often limited by the complexity of scene models and lighting. This paper proposed a virtual light-based method to calculate the transmission thickness in translucent material rendering. A virtual light was added to the scene, and the sorting algorithm was employed at the virtual light for the depth information of the scene. In calculating the transmission thickness from the real light source to the shading point, it was proposed to take samples on a straight line segment of the world space connecting the two points, calculate the proportion of sampled points inside the object to the total number, which was multiplied by the length of the straight line segment, thus obtaining the estimation. Moreover, in the case of multiple real light sources in the scene, the sampling-based method could reuse the scene depth information stored in the virtual light.The proposed method could effectively enhance the accuracy of transmission thickness calculation, and reduce the memory overhead caused by the increasing number of light sources. Experiments show that the proposed method can strike a good balance between efficiency, effectiveness, and memory overhead.
translucent material rendering; transmission thickness; virtual light; sorting algorithm; multiple lights
24 November,2021;
National Major Project of China (GJXM92579)
CHEN Zhu-xin (1996-), master student. His main research interests cover computer graphics and virtual reality. E-mail:2019223045135@stu.scu.edu.cn
TP 391
10.11996/JG.j.2095-302X.2022040707
A
2095-302X(2022)04-0707-08
2021-11-24;
2022-03-08
8 March,2022
國家重大項目(GJXM92579)
陳主昕(1996-),男,碩士研究生。主要研究方向為計算機圖形學與虛擬現(xiàn)實。E-mail:2019223045135@stu.scu.edu.cn
張嚴辭(1975-),男,教授,博士。主要研究方向為計算機圖形學與虛擬現(xiàn)實等。E-mail:yczhang@scu.edu.cn
ZHANG Yan-ci (1975-), professor, Ph.D. His main research interests cover computer graphics, virtual reality, etc. E-mail:yczhang@scu.edu.cn