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

基于虛擬現實的渲染優化算法①

2019-07-23 02:36:02李媛媛
計算機系統應用 2019年6期
關鍵詞:細節游戲實驗

李媛媛,羅 訓

(天津理工大學 計算機科學與技術學院,天津 300384)

隨著虛擬現實的不斷發展,人們在使用虛擬現實系統的過程中,對虛擬場景的真實性及實時渲染性的要求也逐步增高,而隨之虛擬場景也變得越來越復雜,這就意味著所需要渲染的數據會大得驚人.現如今隨著游戲產業的蓬勃發展,虛幻引擎的免費開放吸引了無數游戲開發人士以及學生的使用,在虛幻引擎中創建一個具有真實感的場景勢必包含地形、植被、建筑、氛圍、特效等,為了使場景的真實感更強,不會出現場景卡頓的現象,最重要的是需要在龐大復雜的虛擬場景中提高渲染效率.

隨著計算機顯卡處理能力的不斷提高,在游戲場景中,越來越多的開發人員傾向于使用三維場景的光影、動畫、粒子特效等,使場景畫面渲染的真實度越來越高,讓用戶有身臨其境的感覺[1].引擎中的優化占據著尤為重要的地位,其可優化的覆蓋范圍非常廣泛,涉及到內存的分配、多線程加載、層次細節算法(LOD)[2]等,要想高效率解決引擎優化問題,必須要找出實際瓶頸所在,然后對癥下藥,提高工程渲染運行效率.

本文在虛幻引擎中進行三維重建天津理工大學,對整個工程進行渲染加速,提出了將游戲線程與渲染線程并行計算和雙層裁剪算法,主要貢獻可以概括為:

(1)將虛幻引擎中游戲線程與渲染線程同步并行執行,節省渲染時間;

(2)提出了淡入淡出層次細節算法,使用高度補償的方法,使每個層級之間過渡平滑,從而解決傳統的層次細節算法所出現的“突越”現象;

(3)提出了緩慢剔除算法,使用兩個剔除距離,利用不透明度來實現緩慢剔除,從而解決傳統的剔除算法所出現的“突越”現象;

(4)提出了雙層裁剪算法,使用淡入淡出層次細節算法進行第一層裁剪,再使用緩慢剔除算法進行第二層裁剪,從而加快了渲染速度.

1 相關技術介紹

近年來在復雜的三維虛擬場景中最常用的優化算法主要有:層次細節算法[3]和剔除算法[4],這兩種算法都是單層裁剪算法,本文主要對這兩種算法進行了改進,并提出了雙層裁剪算法.

1.1 層次細節算法

層次細節算法,簡稱LOD(Levels of Detail)[2],是根據模型的節點在顯示環境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數和細節度,它的目的是通過保留重要視覺特征來生成簡化的模型,以降低場景復雜度,實現場景實時繪制,從而獲得高效率的渲染運算[5].

在現實世界中,人眼視角是有一定盲區的,并不能看到360 度的場景,并且隨著視線向遠處延長,看到的東西會越來越模糊.因此在虛幻引擎中也會選擇視野范圍內的物體進行繪制,將場景中的目標模型按照一定的區域劃分法進行快速分割,并將模型對象組織到樹結構中,然后從根節點開始進行視域剪裁測試,當某些節點測試失敗,表示其位于視域體制外,可在渲染之前將其剔除,其子孫節點無需再進行測試,可直接剔除[6].

傳統的LOD 算法將每個層級的三角面片數進行了大量的裁剪,該方法雖然能提高渲染效率,但在視覺上會出現“突越”現象,即在層級之間切換不平滑.故本文針對該問題提出了淡入淡出層次細節算法.

1.2 剔除算法

傳統的剔除算法[7],簡稱CULL,保證在遠距離的時候對植被不進行渲染,以及被遮擋的植被不進行渲染,從而提高渲染效率.傳統剔除算法需要對每個單元進行兩次可見性剔除判斷,從而避免了遮擋部分也進行渲染,提高了渲染效率[8].

目前的遮擋剔除研究算法主要可以分為動態遮擋剔除算法和靜態遮擋剔除算法[9].由于本文的實驗場景是虛擬校園,不考慮動態物體,故采用了靜態遮擋剔除算法.靜態遮擋剔除算法需要對場景進行預處理,Zaugg[10]等人提出了將基于區域的室內靜態場景的方法擴展到了地形場景等.將場景進行等單元劃分,依據視野向量與三角面片的平面法向量的夾角 θ來判斷是否剔除,若 0 ?θ ?90 時,可見;若9 0 ?θ ?180時,不可見,進行剔除.

雖然傳統的剔除算法能提高渲染效率,但其在計算過程中將考慮到的向量為三維向量,其計算量比二維向量增加很多;且其只設置一個剔除距離,若視野從一個可見去區域移動到一個不可見區域,就會出現“突越”現象,這樣顯得就很突兀,故本文提出了緩慢剔除算法.

2 線程優化

在虛幻引擎中,Frame 時間是一幀所花費的總時間,Game 是游戲線程,它不與渲染直接關聯,如若游戲線程很慢,則通常是工程內程序不夠優化,占據內存過多;Draw 是渲染線程,包括圖形應用程序編寫接口API (Application Programming Interface)以及繪圖調用的設置,若渲染線程很慢,則說明工程中需渲染的三角面片過多.在虛幻引擎中使用的是單線程,游戲線程和渲染是串行的,由于渲染中的數據通常依賴于游戲邏輯線程,所以通常會先進行游戲邏輯的任務,然后再進行渲染,如圖1(a)所示,此時一幀所占的時間是Game 和Draw 兩個線程執行幀數的總和,所以場景的渲染效率相對較慢.

本文在虛幻引擎中將游戲線程和渲染分離成兩個單線程,如圖1(b)所示,并行起來執行,此時一幀的時間就是Game 和Draw 各自執行時兩個中耗時最長的幀數,這樣整個工程的運行效率就會得到顯著的提升.

圖1 線程分布

將游戲線程與渲染線程并行之后還需要將其進行同步處理,C++中常用鎖或臨界區的方式來解決同步問題.本文采用的是柵欄的技術即Render Command Fence 機制.所謂的柵欄技術就是指在下一次進行讀取操作前,所有的寫操作都被寫入了內存,因而每次的讀操作都是更新后的內存,從而用來防止游戲線程和渲染線程運行相差過大,導致整個工程運行錯亂.

3 雙層裁剪算法

3.1 第一層裁剪—淡入淡出層次細節算法

傳統的層次細節算法在隨著不同LOD 等級之間進行切換時,會出現頂點高度值的突然變化,從而導致視覺上出現“突越”現象,本文提出了淡入淡出層次細節算法,對頂點的高度值進行緩慢變化處理即高度補償來解決該現象.

現假設由一層切換到另一層時,某一頂點由A 切換為A′,其高度差為 ?h,總過渡時間為t,在切換過程中,本文先對高度進行補償,然后再進行等級之間的切換.如式(1)所示,其中 ?t為當前已過渡的時間.

在大規模的虛擬場景中使用層次細節算法可以有效地裁剪掉所設置的視野范圍外的模型,同時根據模型在視野范圍內的比例可以選擇精裁剪或是粗裁剪,故本文采用淡入淡出層次細節算法進行第一層裁剪.

3.2 第二層裁剪—緩慢剔除算法

傳統的剔除算法主要是進行三維向量的計算,且在剔除不可見面時會出現“突越”現象,本文提出了緩慢剔除算法,將傳統的剔除算法中三維向量的計算優化為二維向量的計算,同時設置了兩個剔除距離,利用不透明度來解決“突越”現象.

由式(3)可以看出此時的點乘結果與Z 軸坐標無關,將其轉換成了二維向量坐標的計算,此時由公式(4)計算角度θ:

根據 θ來進行判斷哪些面可見,哪些面需要剔除,在剔除時,為了避免視覺上產生“突越”現象,同時緩慢剔除算法將剔除算法設置兩個剔除距離:起始剔除距離S和終止剔除距離E,在材質中將植被蒙版和Vertex Color 的alpha 通道進行相乘,賦值給不透明度或蒙版值.當模型在視野范圍內后,會對模型距離攝像機的距離進行計算,設模型距離攝像機的距離為d,然后與起始距離和終止距離進行比較,若d≤S,則模型不進行剔除,即進行細渲染;若S≤d≤E,則模型會根據距離值的增大而之間調節不透明度;若d≥E,則此時的模型完全在視野范圍外,只需要將其及之后的所有模型完全剔除即可.使用改進的剔除算法會實現一種隨著距離淡入淡出的效果,使效果更佳真實.

由于在虛擬場景中會出現大量的遮擋現象,而剔除算法會根據每個三角面片進行可見性判斷再進行剔除,故本文采用緩慢剔除算法進行第二層裁剪,對遮擋部分及模型背面進行二次裁剪,從而提高渲染效率.

3.3 總結

假設淡入淡出層次細節算法的層級為3 層,其對應模型所需占屏幕尺寸(Screen Size)分別為M1、M2、M3,根據模型所占屏幕尺寸進行相應比例裁剪,且在每個層級之間切換時使用高度補償的方法解決“突越”現象,緩慢剔除剔除算法的視野向量與三角面片的平面法向量的夾角θ,剔除的起始距離為S,終止距離為E,整個雙層裁剪算法的總流程圖如圖2所示.

圖2 雙層裁剪算法總流程圖

現將淡入淡出層次細節算法、緩慢剔除算法以及雙層裁剪算法進行簡稱、特點的總結,方便實驗時進行簡單表述,總結如表1所示.

4 實驗結果與分析

4.1 線程串行、并行對比實驗

本文將大量的場景組件的位置計算放到異步線程中,利用動態組件處理將其轉移到異步紋理流任務,使它們能夠與其他游戲線程任務得到并行的處理,從而提高渲染效率,本文對游戲線程與渲染線程的串行、并行做了多組實驗,用Frame 數據來表示對比結果,對比實驗結果如圖3所示.

表1 算法總結

圖3 串行、并行實驗Frame 對比

由圖3可以看出游戲線程與渲染線程串行時的Frame 在15 上下浮動,而游戲線程與渲染線程并行時的Frame 在9 上下浮動,一幀所花費的時間減少了40%左右.但是僅依靠線程并行,大規模的虛擬場景的渲染并不能有很大的改善.

4.2 LOD 和FLOD 實驗對比

本文以天津理工大學為整個實驗場景,設置三個LOD 等級,為了對比明顯,將分別對建筑物和植被的Screen Size 參數設置一樣,如表2所示.

表2 LOD 等級及Screen Size 設置

在每個層級之間進行切換,看是否會出現“突越”現象,實驗結果如表3所示.

表3 LOD 算法與FLOD 算法實驗對比表

由表3可以看出在進行相鄰等級之間切換時,本文提出的淡入淡出層次細節算法很好的解決了“突越”現象.

4.3 CULL 和FCULL 對比實驗

由于本文是利用緩慢剔除算法進行第二層剔除,故同樣需要保證其不會發生“突越”現象,本文將傳統的剔除算法的剔除距離設置為400 cm,將緩慢剔除算法的剔除的起始距離S設置為400 cm,剔除終止距離E設置為600 cm,來進行實驗對比,實驗結果如表4.

表4 CULL 算法與FCULL 算法實驗對比表

由表4可看出,采用緩慢剔除算法設置兩個剔除距離,利用不透明度可以實現模型的緩慢剔除,避免了“突越”現象.

4.4 雙層裁剪算法與單層裁剪算法對比實驗

本文提出的雙層裁剪算法,首先對整個場景進行淡入淡出層次細節算法裁剪,對不在設置視野范圍內的遠處物體進行剔除,僅僅加載渲染視野范圍內的物體;然后對視野范圍內的物體進行單元分割進行第二次可見性判斷,將在視野盲區進行二次裁剪,如建筑物的背面等.

在游戲引擎中最能體現渲染效率的就是幀率(Frame Per Second,FPS)了,FPS 越大表示其渲染效率越高,反之亦然,故本文將僅使用FLOD 進行單層裁剪、僅使用FCULL 進行單層裁剪和本文提出的雙層裁剪進行FPS 的實驗對比.現設置三層LOD 等級,Screen Size 的參數設置如表3,緩慢剔除算法的起始距離為S 設置為400 cm,剔除終止距離E 設置為600 cm.由于每個LOD 等級的FPS 不同,故本文對三個等級的FPS 做了均值處理.實驗結果如圖4所示.

圖4 單層裁剪和雙層裁剪FPS 對比

由圖4可以看出僅進行FLOD 單層裁剪的FPS在30 左右,僅進行FCULL 單層裁剪的FPS 也在30 左右,但本文提出的雙層裁剪FPS 達到了55 左右,很大程度上提高了渲染效率.

5 總結

本文對虛幻引擎中單線程的游戲線程和渲染線程進行了同步并行化處理,加快了一幀所需要的時間;針對傳統的層次細節算法提出了淡入淡出層次細節算法,實驗證明解決了層級切換所出現的“突越”現象;針對傳統的剔除算法提出了緩慢剔除算法,實驗證明解決了在超過剔除距離后出現的“突越”現象;針對單層裁剪提出了雙層裁剪,首先使用淡入淡出層次細節算法進行第一層的裁剪,裁剪掉在視野范圍外的模型,再使用緩慢剔除算法進行第二層裁剪,裁剪掉被遮擋的模型部分,從而很大程度上減少了所需渲染的三角面片數,提高了渲染效率.

猜你喜歡
細節游戲實驗
記一次有趣的實驗
以細節取勝 Cambridge Audio AXR100/ FOCAL ARIA 906
做個怪怪長實驗
留心細節處處美——《收集東·收集西》
細節取勝
Coco薇(2016年10期)2016-11-29 19:59:58
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
NO與NO2相互轉化實驗的改進
爆笑游戲
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 永久免费av网站可以直接看的| 午夜视频免费一区二区在线看| 秋霞一区二区三区| 久久国产免费观看| a毛片在线| 欧美在线精品怡红院| 亚洲a免费| 久久香蕉国产线看观看精品蕉| 国产白浆在线| 国精品91人妻无码一区二区三区| 国产成人亚洲日韩欧美电影| 欧美日韩国产综合视频在线观看| 久久精品欧美一区二区| 国产一区二区三区夜色| 99精品免费在线| 九九香蕉视频| 精品少妇人妻无码久久| 中文字幕中文字字幕码一二区| 国产成人精品第一区二区| 日本亚洲欧美在线| 午夜少妇精品视频小电影| 91蜜芽尤物福利在线观看| 黑色丝袜高跟国产在线91| 久久久久国色AV免费观看性色| 日本亚洲成高清一区二区三区| 国产va欧美va在线观看| 这里只有精品免费视频| 国产高清国内精品福利| 亚洲va欧美va国产综合下载| 欧美全免费aaaaaa特黄在线| 日韩天堂视频| 狠狠五月天中文字幕| 久久综合五月婷婷| 波多野结衣中文字幕久久| 久无码久无码av无码| 久久久噜噜噜久久中文字幕色伊伊 | 免费人成网站在线高清| 丁香婷婷综合激情| 日本少妇又色又爽又高潮| 欧美在线伊人| 一本大道视频精品人妻| 日韩欧美成人高清在线观看| 538精品在线观看| 日韩免费成人| 91丝袜乱伦| 国产精品无码影视久久久久久久| 香蕉视频在线观看www| 1级黄色毛片| 在线观看国产网址你懂的| 国产一级α片| 国外欧美一区另类中文字幕| 一级毛片免费高清视频| 亚洲精品自在线拍| 久久精品无码中文字幕| 456亚洲人成高清在线| 成人免费网站久久久| 欧美特级AAAAAA视频免费观看| 特级aaaaaaaaa毛片免费视频 | 999国内精品久久免费视频| 国产va欧美va在线观看| 欧美日韩免费| 亚洲国产欧美中日韩成人综合视频| 爆操波多野结衣| 丰满的少妇人妻无码区| 黄色三级网站免费| 色香蕉网站| 亚洲婷婷在线视频| 亚洲 欧美 偷自乱 图片| 2021国产精品自产拍在线| 97在线免费| 久久综合AV免费观看| 91久久偷偷做嫩草影院电| 激情六月丁香婷婷| 免费人成又黄又爽的视频网站| 就去吻亚洲精品国产欧美| 无码高潮喷水专区久久| 国产成人一区在线播放| 女人av社区男人的天堂| 国产乱人视频免费观看| 日韩午夜片| 5555国产在线观看| 国产三级视频网站|