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

基于RTX 的實時環境光遮蔽技術

2019-03-04 10:56:58趙鍇源
現代計算機 2019年36期

趙鍇源

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

0 引言

環境光遮蔽(AO)能夠近似計算出物體表面的遮擋程度,并根據遮擋程度來調節環境光照的強度,進而增強渲染結果的層次感和明暗對比。目前實時渲染領域常用的AO 算法主要分兩類:

一類是在屏幕空間利用事先生成好的G-Buffer 來計算AO。由于該類算法只需要處理2D 數據,計算量較小,易于在光柵管線上實現,所以早在2007 年就已經被Crytek 應用在游戲中,即SSAO 算法[1]。而在隨后的幾年中,業界又不斷對SSAO 的積分公式和采樣方式進行了改進,從而又衍生出了采樣效率更高,效果更好的基于屏幕空間幾何信息的AO 算法,如:HBAO[2]、VAO[3]和T-SSAO[4]等算法。但是由于屏幕空間的幾何信息只局限于2D 空間,所以這類AO 算法無論怎么改進都無法反映出屏幕空間以外的遮擋情況。

另一類是通過對儲存了場景的幾何信息的體素數據進行Ray March 來計算AO,如:DFAO[5]和VXAO[6]。這類算法由于使用了3D 紋理來儲存場景的體素化數據,因此它們在計算AO 時不再缺失屏幕空間以外的遮擋信息。但是由于受到顯存大小和顯卡帶寬的限制,這類算法所使用的3D 紋理的分辨率一般都不高,這就使得計算出的AO 結果會比Ground Truth AO 缺少很多細節。

而要得到最接近Ground Truth AO 的結果,最直接的方法便是利用光線追蹤技術來計算3D 場景的AO。通過使用光線追蹤技術,可以在計算AO 時準確地獲取到3D 場景中任意位置的幾何信息,進而使計算出的AO 結果也非常準確。但是在RTX 顯卡面世以前,由于受顯卡性能的限制,實時的光線追蹤幾乎是不可能實現的。而在2018 年NVIDIA 推出了基于圖靈構架的RTX 顯卡以后,實時光線追蹤便成為了可能。因此,基于RTX 光線追蹤技術,可以實現出效果更接近Ground Truth AO 的實時AO 算法。

1 算法實現

雖然NVIDIA 的RTX 顯卡讓實時光線追蹤成為可能,但是現階段RTX 顯卡的光線追蹤能力仍比較有限。如表1 展示的便是在RTX2070 的平臺上,在不使用反走樣的情況下,以1080p 的分辨率,用光線追蹤為65 萬面片的場景計算AO 時,在不同的每像素投線數下對應的光線追蹤耗時。從表1 可以看出,當每像素投線數達到16 條時,光線追蹤耗時就已經有10 毫秒左右,如果再加上陰影和反射等其他光追效果,整個場景的渲染效率將很難滿足實時的要求。

表1 不同每像素投線數對應的光追耗時

因此為了保證渲染效率,每幀所能投射的AO 探測線的數量非常有限,如此一來便給AO 計算帶來了比較嚴重的噪聲問題,如圖1 所示。而為了解決噪聲問題,本文主要從:①提高AO 探測線的采樣效率;②利用時相關性對AO 計算的歷史樣本進行復用;③對AO 結果進行濾波處理這三個方面入手進行處理。

圖1 在低AO投線數下(每像素16條)的噪聲問題

由此引出本文算法的整體思路,如圖2 所示:①獲取場景在當前幀的G-Buffer;②根據當前幀和上一幀的G-Buffer 對屏幕上的每個像素點進行時間相關性的檢測,并標記出時間相關性失效的像素點;③在屏幕上的每個像素點,根據時間相關性失效與否,投射不同數目的探測線來計算AO;④在滿足時間相關性的像素點處,累積復用歷史樣本;⑤根據累積復用程度對結果進行濾波處理。

圖2 算法整體思路

1.1 獲取G-Buffer

要為屏幕上的每個像素點生成探測向量并計算AO,需要將每個像素點對應在場景中的坐標和法線作為輸入。此外,時間相關性檢測和濾波處理也都需要將場景的深度作為輸入。因此,本文算法的第一階段便是要獲取場景的G-Buffer。

考慮到目前RTX 顯卡的光線追蹤性能仍比較有限,整個場景的渲染還不能全由光線追蹤來完成,而是需要光柵管線與光線追蹤管線協作來完成渲染。因此,本文算法直接使用光柵管線的G-Buffer 作為輸入。如此一來,當光柵管線與光線追蹤管線協作渲染時,便可以省去額外用光線追蹤計算G-Buffer 的開銷。同時,這樣做也能夠讓本文算法可以直接兼容光柵管線的TAA 反走樣操作,進而省去了對AO 結果額外做反走樣處理的開銷。

1.2 時間相關性檢測

在使用光線追蹤技術計算AO 之前,需要檢測每個像素點的時間相關性,以便在光線追蹤時根據時間相關性失效與否,動態調整每個像素點需要投射的AO探測線的數量。在本小節,本文只討論針對靜態場景的時間相關性的檢測。

本文首先使用重投影技術[7]計算出將當前幀屏幕像素點重投影到上一幀屏幕的像素坐標,如式(1)所示。其中,tcur為像素點在當前幀的坐標,Pcur為當前幀的投影矩陣,Vcur為當前幀的視點矩陣,Vpre為上一幀的視點矩陣,Ppre為上一幀的投影矩陣,tpre為重投影到上一幀屏幕的像素坐標。

在得到當前幀像素點重投影到上一幀的像素坐標后,還需要檢測重投影的像素坐標是否有效,以便排除因為視點移動造成的遮擋而無法復用的像素點。檢測的方法是:比較當前像素點的視點深度dcur與其重投影到上一幀的視點深度dpre,當兩個深度的差距很小時,說明重投影有效,否則均無效。檢測的表達式如式(2)所示,其中? 是用來調節檢測嚴格程度的閾值。

在完成時間相關性檢測后,本文算法會將通過檢測的像素點的重投影坐標存入紋理中,而未通過檢測的像素點的重投影坐標則會被標記為(-1,-1),這樣在隨后復用歷史樣本的階段就無需再重新計算每個像素點的重投影坐標。

1.3 光線追蹤計算AO

本文計算每個像素點的AO 值的基本思路是:首先,從G-Buffer 中讀取像素點對應在世界坐標下的位置p 和法線n。然后,用光線追蹤的方式,向以p 為起點以n 為中心的半球空間隨機投射N 條探測向量。最后根據式(3)計算出該像素點對應的AO 值。其中,單位向量ωi表示第i 條探測向量的朝向。而函數V 則表示從坐標點p 沿方向ωi發射的探測向量的可見性,當探測向量被遮擋時函數V 返回0,否則返回1。

由于表達式(3)中含有法線n 與探測向量ωi夾角的余弦(即,式中的n?ωi),因此越偏離法線n 的探測向量ωi對最終AO 結果的貢獻越小。所以,為了提高探測向量對最終結果的貢獻率,本文算法使用了概率按n與ωi夾角的余弦分布的隨機向量。生成以z 軸為中心的且概率按n 與ωi夾角的余弦分布的隨機向量的表達式如式(4),其中ξ1和ξ2是一對相互獨立的且取值在[0,1)間的均勻隨機數,而本文算法是使用Halton 序列來生成這對隨機數的。

在使用了概率按n 與ωi夾角的余弦分布的隨機探測向量之后,原式(3)中的余弦項(即,式中的n?ωi)就在計算中被消掉了,因此最終計算AO 值的表達式如式(5)所示。

此外,為了減少AO 探測的性能開銷,每個像素點投射的探測向量數N 是根據該像素點的累積復用程度來確定的,當累積復用的歷史樣本數較低時N 的取值較大(一般為8-16 條),當累積復用的歷史樣本數較高時N 的取值較小(一般為1-2 條)。需要說明的是,無論累積復用的程度有多高,N 的取值都不能為0。因為通過重投影復用的歷史樣本是存在誤差的,而且隨著不斷的累積復用越舊的歷史樣本積累的誤差越大,所以只有在每幀都加入一些新的探測樣本,才能保證該幀的累積復用結果中的誤差不會過大。最后,在完成AO 計算之后,本文算法會將每個像素點使用的探測向量數N 保存到一張紋理中,以便在隨后的累積復用階段可以方便的讀取。

1.4 復用歷史樣本

在計算完新一幀的AO 結果之后,需要利用重投影技術將符合時間相關性的歷史樣本累積復用到新的結果中,以便增加新的結果中的樣本數,提高AO 結果的質量。由于重投影操作已經在時間相關性檢測階段完成,所以本階段僅是對通過時間相關性檢測的像素點執行累積復用操作。對于任意像素點p 累積復用的表達式如式(6)所示。

其中,Caccum( p )為像素點p 總的累積樣本數,AOpre(p)為上一幀的累積復用結果,N(p)為當前幀新增加的探測樣本數,AOcur(p)為當前幀計算出的AO 值。在完成累積復用計算之后,本文算法會將N(p)的值累加到Caccum中,并將新的Caccum保存到紋理中,以便在下一幀的計算中使用。此外,同樣是由于通過重投影復用的歷史樣本存在誤差,所以為了控制帶有誤差的陳舊歷史樣本在累積復用結果中的占比,本文算法將Caccum的最大值限制在了1500。

1.5 濾波處理

為了進一步改善AO 結果的質量,本文算法對經過累積復用處理后的結果進行了濾波。本文使用的濾波算法是Louis Bavoil 和Johan Andersson 在2012 GDC上介紹過的一種改進高斯濾波算法。該濾波算法把中心像素與臨近像素的深度關系納入考慮,在不需要額外邊界檢測的情況下,就能做到在濾波的同時保留物體的邊界細節。此外,為了提升濾波效率,該算法采用了變步長濾波的策略,在靠近中心像素的范圍,以1 倍步長采樣;而在遠離中心像素的范圍,以2 倍步長采樣。因此,在相同采樣數下,該濾波算法能夠實現更大的濾波半徑[8]。

最后,為了避免因過度濾波而造成的細節丟失,本文算法會根據累積復用程度對濾波結果和未濾波結果進行線性混合。對于累積復用程度較低的區域,噪聲問題非常明顯,則優先考慮噪聲問題,所以需要濾波結果的占比高一些;而對于累積復用程度較高的區域,噪聲問題已經很小,則優先考慮保留細節,所以需要未濾波結果的占比高一些。

2 實驗結果

2.1 實驗環境

硬件配置:Intel Core i3-4160 CPU 3.60GHz 處理器,8G 內存,NVIDIA GeForce RTX-2070 顯卡;

系統配置:Win10(1809),DirectX 12;

場景配置:65 萬三角面片的室內靜態場景;

渲染配置:屏幕分辨率1920×1080,開啟TAA 反走樣。

2.2 實驗結果

(1)在相機靜止不動的情況下,如圖3 所示。整個屏幕的所有像素點都處于高累積復用的狀態。加上生成G-Buffer 的耗時,整個算法的一幀耗時僅為2.73 毫秒,fps 達到366 幀/秒,同時畫面質量也和Ground Truth AO 非常接近。

(2)當相機漫游場景時,如圖4 所示。在物體的邊界附近,以及新移入視野的物體附近,像素點會因為時間相關性失效而處于低累積復用的狀態。此時,為了保證這些區域的AO 質量,需要提高投射的探測向量數,因此渲染耗時會略有增加。加上G-Buffer 的耗時,整個算法的一幀耗時為3.10 毫秒,此時fps 為322 幀/秒。又由于單幀所能增加的探測向量數是比較有限的,所以時間相關性失效的區域的AO 質量會略有下降。雖然在相機漫游狀態下本文算法的效率和質量都有所下降,但下降幅度都不大,其中耗時僅增加了0.37毫秒左右,而AO 結果也僅是在局部出現了輕度模糊。由此說明,即使在因相機移動畫面部分區域的時間相關性失效的情況下,本文算法仍比較穩定。

3 結語

本文提出了一種基于RTX 光線追蹤技術的AO 算法,該算法充分考慮了當前幀與歷史幀之間的時間相關性,并根據時間相關性動態調整AO 的探測、復用和濾波,進而在保證高效率的同時又能得到高質量的AO結果。實驗表明,本文算法在應用于靜態場景時,無論相機處于靜止還是移動狀態,都能以較高效率得到較高質量的AO 結果。

圖3 相機靜止時的截圖

圖4 相機漫游時的截圖

圖5 Ground Truth AO

主站蜘蛛池模板: 伊人91视频| 亚洲永久免费网站| 国产美女自慰在线观看| 2020亚洲精品无码| 无码一区二区波多野结衣播放搜索| 日韩经典精品无码一区二区| 无码精品一区二区久久久| 国产无遮挡猛进猛出免费软件| 日本黄色a视频| 91精品伊人久久大香线蕉| 欧美劲爆第一页| 日本一区二区三区精品国产| 国产aⅴ无码专区亚洲av综合网| 国产国产人在线成免费视频狼人色| 永久免费无码成人网站| 午夜a视频| 草逼视频国产| 亚洲欧美另类视频| 亚洲三级电影在线播放| 综合社区亚洲熟妇p| 日韩一级毛一欧美一国产| 青青热久免费精品视频6| 在线观看无码a∨| 波多野结衣一二三| 成人毛片免费观看| 午夜不卡视频| 日日摸夜夜爽无码| 91九色国产在线| 国产精品女主播| 精品91在线| 免费毛片全部不收费的| 91精品免费久久久| 久久亚洲美女精品国产精品| 一级高清毛片免费a级高清毛片| 国产99热| 鲁鲁鲁爽爽爽在线视频观看 | 中日韩一区二区三区中文免费视频| 亚洲—日韩aV在线| 色综合久久88| 国产成人艳妇AA视频在线| 色播五月婷婷| 午夜国产精品视频黄| 另类专区亚洲| 欧美国产日本高清不卡| 色偷偷一区二区三区| 萌白酱国产一区二区| 日韩免费毛片| 伦伦影院精品一区| 亚洲码在线中文在线观看| 乱系列中文字幕在线视频| 国产亚洲欧美日韩在线观看一区二区| 国产日韩av在线播放| 久久久久亚洲精品成人网| 国产精品黄色片| 午夜毛片福利| 亚洲无限乱码一二三四区| 久久精品无码一区二区日韩免费| 毛片视频网址| 99爱在线| 午夜无码一区二区三区在线app| 伊人狠狠丁香婷婷综合色| 在线观看国产黄色| 国产呦精品一区二区三区网站| 亚洲高清在线播放| 天堂在线视频精品| 国产香蕉在线| 女人天堂av免费| 99一级毛片| 人人爱天天做夜夜爽| 欧美日韩综合网| 国产一区亚洲一区| 国产福利免费视频| 青草免费在线观看| 国产伦精品一区二区三区视频优播| 精品国产www| 精品国产毛片| 精品国产成人三级在线观看| 国产福利2021最新在线观看| 中文字幕在线免费看| 一级毛片免费观看不卡视频| 国产成人无码Av在线播放无广告| 91精品最新国内在线播放|