国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Metal 的實時光線追蹤研究

2022-06-23 06:09彭浩宇廖文詩
無線互聯(lián)科技 2022年8期
關(guān)鍵詞:緩沖區(qū)離線內(nèi)核

彭浩宇,廖文詩,陳 超

(重慶科技學(xué)院智能技術(shù)與工程學(xué)院,重慶 401331)

0 引言

渲染的研究目標(biāo)是對渲染方程進(jìn)行近似求解,近似求解所得到的結(jié)果分為有偏差和無偏差,因此也產(chǎn)生了兩種不同的研究方向。 其中,無偏差的近似求解被稱作離線渲染,有偏差的近似求解被稱作實時渲染。在實時渲染領(lǐng)域常用封裝好的圖形API 或圖形引擎實現(xiàn),將離線渲染算法結(jié)合至實時渲染下的圖形API 中,是真實感圖形學(xué)目前一個熱門的研究方向。

1 渲染技術(shù)背景介紹

1.1 離線渲染

離線渲染中最常使用的全局光照模型最早起源于1968 年,Arthur[1]在他的文章中提出了光線投射(Ray Casting)算法,其具體思路是從攝像機出發(fā),連接屏幕上的一個像素構(gòu)成光線,與場景中第一個擋住光線的物體相交,它表面的顏色即為像素的顏色。 由于該算法沒有將反射、折射等多光源反饋信息吸收進(jìn)來,于是在1979 年,Whitted[2]提出了經(jīng)典的光線追蹤方法,在光線投射的基礎(chǔ)上讓光線與物體繼續(xù)交互,進(jìn)一步產(chǎn)生反射、折射以及散射等效果,直到光線強度減弱到一定程度或光線逃逸出場景。 該算法極大地提高了光照模型的真實感,為后續(xù)真實感圖形學(xué)的研究奠定了基礎(chǔ)。

1.2 實時渲染

實時渲染中需要考慮到渲染的實時性,受制于硬件的性能,離線渲染常用的眾多算法無法運用在實時渲染領(lǐng)域當(dāng)中。 同時,實時渲染的操作都是基于光柵化的前提下對光照方程進(jìn)行求解,并且將場景內(nèi)的間接光照放在預(yù)計算模塊,所以很難實時的渲染出高精度的光照模型。 但實時渲染的應(yīng)用多數(shù)存在于游戲公司當(dāng)中,如國外的Epic 和EA,國內(nèi)的網(wǎng)易、米哈游等。在游戲開發(fā)領(lǐng)域,常常使用例如Unity3D 之類的游戲引擎進(jìn)行實時渲染,一方面降低了圖形程序的編程難度,同時也封裝了接觸底層圖形所需要控制的內(nèi)存管理系統(tǒng)。

1.3 圖形API

圖形API 的本質(zhì)是一套對接硬件底層的圖形封裝接口函數(shù)庫,目的是直接調(diào)用顯卡驅(qū)動使顯卡能夠渲染出用戶可見的應(yīng)用程序。 圖形程序員無須考慮底層的硬件需求,如寄存器的操作,可以直接使用特定平臺的API 進(jìn)行圖形編程。 常見的圖形API 包含:多平臺的OpenGL,最初由 Silicon Graphics Inc(SGI)發(fā)布,后由非盈利團隊Khronos 維護(hù);微軟發(fā)布的DirectX 僅限于Windows 環(huán)境下,目前已推出DirectX12,在英偉達(dá)顯卡的加持下支持高效率的實時光線追蹤[3];基于OpenGL 的OpenGL ES,最初為了嵌入式設(shè)備而推出,現(xiàn)大量用于安卓平臺;基于OpenGL ES 的WebGL,主要用于網(wǎng)頁 Web 端;蘋果公司推出的 Metal,在 WWDC 2015 上,蘋果首次提出了Metal,目的是一套圖形接口可用于蘋果的多設(shè)備平臺(包含iPhone,iPad,Mac,Apple TV,Apple Watch),打造無縫切換的生態(tài)體驗。在WWDC2020 上,蘋果也提出了實時光線追蹤的概念,并且支持Metal 的使用。

2 基于Metal 的光線追蹤實驗

2.1 光線追蹤算法

光線追蹤算法是真實感圖形學(xué)當(dāng)中最常用的算法之一,它用于模擬每一道光線從而能產(chǎn)生反射、柔化陰影和間接光照等效果。 光線追蹤的原理是模擬一個攝像機,通過攝像機發(fā)射的光源射線來獲取場景信息,每一束光線從攝像機發(fā)射到場景內(nèi),發(fā)射的光線與場景內(nèi)的幾何物體相交從而得到的交點均代表光線經(jīng)過一個表面后反彈的結(jié)果,光線反彈的數(shù)量和方向則決定了物體的外觀。 同時,光線在經(jīng)過反彈操作后可以生成額外的光線,能夠進(jìn)一步渲染更加逼真的場景(見圖1)。

圖1 光線追蹤原理

2.2 基于Metal 圖形API

在Metal Performance Shaders(MPS)框架下,首先啟動一個內(nèi)核函數(shù)用于生成光線的初始集,并且將這些數(shù)據(jù)集寫入光線緩沖區(qū)內(nèi),再利用MPSRayIntersector類使光線與場景相交產(chǎn)生交點。 其中,Metal 采用求交器記錄這些交點,通過求交器將求交結(jié)果寫入下一個內(nèi)存緩沖區(qū),之后便可以啟用著色器內(nèi)核函數(shù)讀取求交數(shù)據(jù)并進(jìn)行著色操作。 額外的光線可以寫回光線緩沖區(qū),再反復(fù)循環(huán)這兩個內(nèi)核函數(shù)以模擬光線反彈,最后輸出場景圖像。

通過圖2 可以看出,在MPS 框架內(nèi),會把代碼拆分為單獨的內(nèi)核函數(shù),同時還需要經(jīng)由內(nèi)存?zhèn)鬟f光線和求交數(shù)據(jù)。 但是在Metal 實時光線追蹤框架下,求交器的對象可以直接在著色語言中使用,通過將圖2 上方的內(nèi)核函數(shù)模塊組合成一個Metal 內(nèi)核函數(shù),并且不需要將光線傳遞的光源信息在內(nèi)核函數(shù)之間傳輸,省去了光線及求交數(shù)據(jù)的緩沖區(qū),即不需要靠讀寫內(nèi)存來傳遞光線和求交數(shù)據(jù)。 圖2 上方的外層循環(huán)便可以用圖3 當(dāng)中Metal 內(nèi)核函數(shù)的簡單循環(huán)來代替。

圖2 基礎(chǔ)光線追蹤MPS

圖3 實時光線追蹤

2.3 實驗效果實現(xiàn)

以WWDC20 為例,本文在MacOS 操作系統(tǒng) Metal和Xcode13 開發(fā)環(huán)境下對基礎(chǔ)的光照模型進(jìn)行了實驗。 實驗對基礎(chǔ)光照模型采取了9 種不同類型的光照模擬,每種光照條件下所渲染出的模型都具有不同的渲染效果,并且渲染所需的時間極短及所渲染的效果精度極高,從而驗證了本設(shè)計能夠很好地完成實時光線追蹤模擬。

3 結(jié)語

該實驗由基礎(chǔ)模型至基本完成渲染的時間不足0.5 秒,通過對比渲染了5 分鐘的離線渲染模型,即得出能夠以較短的時間實時地渲染出接近高精度光照模型的結(jié)論。 通過實驗的結(jié)果可以看出,基于Metal 實時光線追蹤下的模型場景具備較高真實度的還原效果。

猜你喜歡
緩沖區(qū)離線內(nèi)核
異步電機離線參數(shù)辨識方法
強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
呼吸閥離線檢驗工藝與評定探討
淺談ATC離線基礎(chǔ)數(shù)據(jù)的準(zhǔn)備
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
Linux內(nèi)核mmap保護(hù)機制研究
離線富集-HPLC法同時測定氨咖黃敏膠囊中5種合成色素
嫩江重要省界緩沖區(qū)水質(zhì)單因子評價法研究
關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計與實現(xiàn)
始兴县| 抚远县| 留坝县| 孟村| 石河子市| 梧州市| 宁晋县| 绩溪县| 泸溪县| 普定县| 长治市| 福清市| 礼泉县| 平遥县| 敖汉旗| 五原县| 临西县| 五寨县| 杭锦后旗| 宝清县| 扎赉特旗| 长治县| 文化| 东方市| 阳新县| 衢州市| 芮城县| 沂水县| 车险| 星子县| 冕宁县| 社会| 灌云县| 麻江县| 中超| 溧水县| 渑池县| 文山县| 梅州市| 威海市| 永泰县|