999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于傅里葉級數的次序無關透明渲染算法

2021-07-09 17:19:36宋曉峰
現代計算機 2021年14期

宋曉峰

(四川大學計算機學院,成都 610065)

0 引言

半透明物體的實時渲染是計算機圖形學中的重要研究課題之一,在游戲、虛擬現實、仿真模擬等領域有著重要應用。傳統的半透明物體渲染算法需要根據到攝像機的距離對半透明物體進行排序,然后由遠到近依次進行繪制,然而當多個半透明物體之間遮擋關系比較復雜,或者單個半透明物體自身包含多層半透明面片時,這種傳統方法不能得到正確的結果。為了解決這一問題,通常需要使用次序無關透明(Order Inde?pendent Transparency,OIT)渲染算法。

精確的OIT 算法一般使用深度剝離[1]或鏈表[2]來做像素級別的片元排序,雖然能夠得到精確的結果,但是效率低下且顯存消耗高。近年來,為了提升效率或節省顯存,一些啟發式OIT 算法相繼出現。基于K-Buf?fer 的OIT 算法[3-4]能夠有效控制顯存的消耗,但是對于存在大量半透明物體的復雜場景表現較差。基于加權混合的OIT 算法[5-6]效率較高且易于實現,但是結果存在很大誤差。基于矩的OIT 算法[7-8]使用矩信息來重建透射率函數,能夠取得較好的近似結果,但是由于存儲矩信息需要使用較高的精度,因而對顯存的消耗仍然較高。

本文提出了基于傅里葉級數的OIT 算法,此算法借鑒了Fourier Opacity Mapping(FOM)一文[9]中的算法思想,即使用傅里葉級數來近似半透明物體對光的吸收率函數。同時,本文提出使用Lanczos-Local-Type σ-Averaging(簡稱σ-Averaging)方法[10]對FOM 的傅里葉近似方法進行改進,很大程度地降低了Gibbs 效應的影響。實驗表明本文提出的OIT 算法可以得到較為準確的結果,同時具有較高的效率和較低的顯存消耗,具有較大的實際應用價值。

1 算法實現

1.1 使用傅里葉級數近似透射率函數

給定同一像素坐標下的n個片元,片元顏色依次為l0,l1,…,ln-1,片元透明度為α0,α1,…,αn-1,片元深度為z0,z1,…,zn-1,則對所有片元進行顏色混合之后的結果L可以使用公式(1)計算得出。

其中,T(z)是透射率函數,表示從深度z處發出的光線,在穿過半透明物體之后,最終到達攝像機的光線的占比,其計算方法如公式(2)所示。從公式(2)可以看出,為了計算透射率,需要知道一個片元被其他片元的遮擋情況,這通常需要存儲片元的深度值,并對片元按照深度值排序之后依次進行混合計算,因而直接使用公式(2)計算透射率的算法往往具有高昂的顯存消耗與計算代價。

為了能夠更加高效地計算透射率,本文算法使用了傅里葉級數的前m(m∈N*)項和來近似透射率函數T(z),計算方法如公式(3)所示。

其中Ak與Bk為傅里葉級數的系數,其計算方法滿足公式(4)與公式(5)。公式(3-5)的具體證明過程可以參考Fourier Opacity Mapping 一文[9]。

相較于片元排序方法,使用傅里葉級數近似透射率函數的好處包括兩點:①透射率的計算不依賴于半透明片元的執行順序,不再需要對片元進行排序,因而效率更高;②由于不需要對片元排序,因而不需要存儲片元深度及其材質信息,作為替代,存儲的是具有更低顯存消耗的傅里葉級數系數,因而節省了顯存消耗并降低了讀寫顯存的時間代價。

1.2 結合σ-Averaging方法減弱Gibbs效應

使用傅里葉級數來近似透射率函數會產生Gibbs效應,該效應主要發生在透射率函數的階躍點附近,表現出明顯的過沖與下沖(如圖1 中綠色曲線所示),從而導致計算得到的透射率存在較大的誤差且波動較大。為了減小誤差,本文采用了σ-Averaging 方法,該方法為傅里葉級數添加了一個σk系數,能夠明顯地減弱Gibbs 效應的影響(如圖1 中紅色曲線所示),σk系數滿足公式(6)。

圖1 Gibbs效應以及σ-Averaging效果示意圖

在結合σ-Averaging 方法之后,本文使用公式(7)來計算透射率。

其中指數p∈R*用于調整σk的影響強度,p值越大,Gibbs 效應越弱。然而p值過大時,會導致階躍點處曲線過于平緩,反而會增大誤差。本文算法采用p=1.0,可以大大減弱Gibbs 效應的影響,同時階躍點附近的誤差也可以接受。

1.3 渲染算法

本文渲染算法的實現分為以下四個步驟:

步驟1:渲染場景中的不透明物體,將渲染結果保存到紋理Tex0 中。此步驟中不透明物體的渲染可以使用任意渲染算法來實現。

步驟2:渲染場景中的半透明物體,結合公式(4)與公式(5),為每個像素計算傅里葉級數的系數,并將系數值保存到紋理Tex1 中。由于每個像素都單獨對應一個透射率函數,因而每個像素都需要做一次傅里葉級數展開近似,即像素間的傅里葉級數系數相互獨立,需要分開保存。

對于單個像素而言,需要遍歷該像素下的所有片元,計算每個片元對傅里葉級數系數的貢獻量,即:

然后將每個片元的貢獻使用Blend One One 的方式累加到紋理Tex1 中,便可得到該像素下的最終系數,即公式(4)與公式(5)的計算結果。

注意在步驟2 執行渲染前需要關閉深度寫入與背向面剔除,這樣才能保證所有半透明片元不被丟棄。此外,由于此步驟執行渲染只是為了計算傅里葉級數的系數,因而無需進行光照計算等任何無關操作,從而保證算法的高效性。

步驟3:再次渲染場景中的半透明物體,對于每個像素的每個片元,讀取步驟2 中生成的紋理Tex1。

使用公式(3)計算透射率,然后使用公式(1)計算該片元對像素顏色的貢獻,即:

然后將每個片元的貢獻使用Blend One One 的方式累加到紋理Tex2 中,便可得到該像素下的最終顏色,即公式(1)的計算結果。注意此步驟與步驟2 類似,在執行渲染前同樣需要關閉深度寫入與背向面剔除。

步驟4:讀取紋理Tex0 與Tex2,將兩張紋理顏色進行合并,即可得到最終的渲染結果。紋理顏色的合并計算方法如公式(11)所示。

其中Ctrans是半透明物體的顏色,存儲在Tex2 紋理的RGB 通道中;Copaque是不透明物體的顏色,存儲在Tex0 紋理的RGB 通道中;K是為了歸一化而引入的項,存儲在Tex2 紋理的Alpha 通道中,K的計算滿足公式(12)。

Ttotal是總透射率,滿足公式(13)。

2 實驗結果

本文實驗所使用的硬件為NVIDIA GeForce GTX 1060 3GB GPU 以及Intel Core i5-7400 CPU。實驗結果的渲染分辨率均為1600×900。

2.1 σ-Averaging方法的有效性驗證

圖2 展示了原函數較為復雜的情況下σ-Averaging方法的效果,圖中綠色曲線是使用公式(3)做傅里葉級數近似的結果,紅色曲線是結合σ-Averaging 方法之后,即使用公式(7)做傅里葉級數近似的結果。可以看出,σ-Averaging 方法明顯地削弱了Gibbs 效應,與原函數更加接近。

圖2 σ-Averaging方法效果示意圖(m=16, p=1.0)

表1 給出了使用與不使用σ-Averaging 方法這兩種情況下的傅里葉級數近似結果的誤差,誤差采用RMSE(Root Mean Squared Error,均方根誤差)作為衡量標準。從表1 可以看出使用σ-Averaging 方法的誤差明顯更低,且當m取值較小時,使用σ-Averaging 方法的優勢更為明顯。注意由于OIT 算法只需要使用階躍點處的透射率,因而此實驗中計算RMSE 時只考慮了階躍點。

表1 使用σ-Averaging 與不使用σ-Averaging 兩種情況下的傅里葉級數近似結果的誤差對比

2.2 不同算法的渲染結果對比

此實驗對比了WBOIT 算法[5]、MBOIT 算法[7]以及本文算法的渲染結果,實驗中使用基于鏈表的OIT 算法[2]作為參考標準,并使用RMSE 用于衡量渲染結果的誤差。本文在WBOIT 對比算法的實現中使用了Mc?guire 等人于2017 年提出的新的加權混合公式[6],在MBOIT 對比算法的實現中使用了四階矩。本文算法的實現中使用了傅里葉級數的前四項,即m=4。

從圖3 可以看出,WBOIT 算法的渲染結果存在明顯的錯誤,誤差較大。MBOIT 算法與本文算法的誤差較小,渲染結果與Ground-Truth 算法之間沒有明顯的差別。雖然MBOIT 算法的誤差小于本文算法,但是其顯存消耗更大且效率更低(見表2~5)。圖4 對比了渲染復雜模型時不同算法的渲染效果與RMSE,可見WBOIT 算法的誤差仍然最大,MBOIT 算法與本文算法的誤差相近。(算法性質決定了MBOIT 算法在片元數目n取值較小時具有更小的誤差,n取值較大時其誤差與本文算法相近)。

圖3 不同算法的渲染結果對比

圖4 不同算法的渲染結果對比(復雜模型)

2.3 不同算法的渲染效率與顯存消耗對比

表2-表5 給出了不同場景下四種算法渲染一幀消耗的時間以及每個像素需要使用的顯存。實驗使用了如圖5 所示的四組不同場景。從表中可以看出在不同場景下,本文算法的渲染用時與顯存消耗均僅高于WBOIT 算法,相比MBOIT 算法具有明顯優勢。

表2 渲染效率與顯存消耗對比(場景1)

表3 渲染效率與顯存消耗對比(場景2)

表4 渲染效率與顯存消耗對比(場景3)

表5 渲染效率與顯存消耗對比(場景4)

圖5 實驗所用場景示意圖

3 結語

本文給出了一種實時的次序無關透明渲染算法,該算法使用傅里葉級數近似透射率函數,并使用σ-Averaging 方法來減弱Gibbs 效應。實驗表明,本文算法既有較好的效果,又有較低的計算代價與顯存消耗,適用于實時渲染領域,具有很大的實際應用價值。在未來的研究工作中,具有前景的改進方向之一是尋找一組更合適的基函數來取代傅里葉基(例如使用小波基),可能進一步提高算法的精確度,或者減少存儲消耗。

主站蜘蛛池模板: 91国内在线观看| 2020最新国产精品视频| 中文字幕在线不卡视频| 欧美午夜在线视频| 麻豆AV网站免费进入| 亚洲天堂网在线观看视频| 亚洲精品成人7777在线观看| 狠狠色丁香婷婷综合| 亚洲中文制服丝袜欧美精品| 国产成人亚洲精品无码电影| 在线亚洲精品福利网址导航| 蜜桃视频一区| 国产浮力第一页永久地址 | 亚洲精品老司机| 日韩一二三区视频精品| 国产精品专区第1页| 中国国产A一级毛片| 欧美国产日产一区二区| 欧美人人干| 亚洲色图欧美激情| 国产精品人成在线播放| 欧美一区二区三区不卡免费| 亚洲成a人片77777在线播放| 青青草原国产免费av观看| 久久福利网| 国产精品午夜福利麻豆| 大学生久久香蕉国产线观看| 欧美精品1区2区| 久操线在视频在线观看| 97在线视频免费观看| 动漫精品中文字幕无码| 色香蕉影院| h视频在线观看网站| 在线永久免费观看的毛片| 成人精品午夜福利在线播放| 丰满人妻久久中文字幕| 制服丝袜一区二区三区在线| 免费毛片视频| 欧美色综合久久| 久久综合婷婷| 日韩高清欧美| 亚洲啪啪网| 天天摸天天操免费播放小视频| 国产午夜无码专区喷水| 国产精品成人久久| 欧美专区在线观看| 国产激情无码一区二区三区免费| 伊人久久大线影院首页| 五月婷婷中文字幕| 欧美a在线| 欧美国产综合视频| 色丁丁毛片在线观看| 久久无码av三级| 亚洲色图欧美| 欧美a在线看| 黄色网址免费在线| 99视频在线精品免费观看6| 一级看片免费视频| 国产亚洲视频播放9000| 国产第八页| 在线观看无码av免费不卡网站| 国产真实乱人视频| 国模视频一区二区| 亚洲男女在线| 好吊妞欧美视频免费| 亚洲资源站av无码网址| 国产成人免费视频精品一区二区| 中文字幕无码av专区久久 | 91成人免费观看| 欧日韩在线不卡视频| 国产无人区一区二区三区| 日韩毛片在线播放| 亚洲最大福利网站| 91成人免费观看| 国产欧美另类| 成人国内精品久久久久影院| 欧美激情视频在线观看一区| 国产丝袜91| 热久久综合这里只有精品电影| 国产区成人精品视频| 亚洲最黄视频| 久草视频精品|