NVIDIA OptiX 射線跟蹤引擎是一個(gè)可擴(kuò)展的無縫框架,可在 GPU 上提供最佳的射線跟蹤性能。在今年秋季更新英偉達(dá) OpTIX SDK ,開發(fā)人員將能夠利用新的編譯技術(shù),和優(yōu)越的分層和時(shí)間去噪處理更多的射線跟蹤工作負(fù)荷,更快。
更快的編譯時(shí)間
NVIDIA OptiX 7. 4 附帶了一項(xiàng)新功能,支持包含多個(gè)函數(shù)的 OptixModule 對(duì)象的并行編譯。工作被表示為從 API 返回的任務(wù)對(duì)象,可以并發(fā)執(zhí)行以實(shí)現(xiàn)并行性。當(dāng)發(fā)現(xiàn)并行機(jī)會(huì)時(shí),將返回其他任務(wù)。線程在 NVIDIA OptiX 之外通過從應(yīng)用程序管理的線程執(zhí)行任務(wù)來處理。該應(yīng)用程序可以更容易地將并行工作集成到現(xiàn)有的作業(yè)調(diào)度器中。
改進(jìn)的定制和性能
NVIDIA OptiX 7.4 已將光線有效載荷的大小從 8 個(gè)寄存器增加到 32 個(gè)寄存器。有效負(fù)載寄存器是 NVIDIA OptiX 提供的機(jī)制,用于從跟蹤光線的調(diào)用方傳遞任意數(shù)據(jù)以及光線。這種有效負(fù)載機(jī)制非常輕量級(jí),類似于向函數(shù)傳遞參數(shù)。有效負(fù)載的有限大小迫使許多人使用本地甚至全局內(nèi)存緩沖區(qū)來傳遞光線數(shù)據(jù),這可能會(huì)對(duì)性能產(chǎn)生負(fù)面影響。
新的有效負(fù)載大小提供了更多種類的應(yīng)用程序,以便能夠利用僅使用寄存器傳遞數(shù)據(jù)的優(yōu)勢。使用更多寄存器會(huì)增加寄存器壓力,并可能導(dǎo)致內(nèi)存溢出,因此新的 NVIDIA OptiX 7 . 4 有效負(fù)載增加還附帶了新的 API 函數(shù)。這將幫助開發(fā)人員優(yōu)化有效負(fù)載的使用。新的 API 允許您聲明如何使用有效負(fù)載值,以便編譯器有機(jī)會(huì)盡可能重用寄存器。
曲線添加和優(yōu)化
我們還引入了一個(gè)新的曲線原語: Catmull-Rom 三次曲線。這種類型的曲線是直接通過其控制點(diǎn)的插值曲線的一種流行樣式,用于在需要精度控制時(shí)微調(diào)曲線的放置。 Catmull Rom 曲線是電影和游戲行業(yè)頭發(fā)、毛皮和其他曲線用途的流行選擇。 NVIDIA OptiX 已經(jīng)支持的其他曲線類型是三次和二次 B 樣條曲線以及線性曲線。 B 樣條曲線是一種近似曲線,比 Catmull Rom 曲線稍微平滑,但通常也不會(huì)直接通過其控制點(diǎn)。
除了新的曲線原語外, NVIDIA OptiX 還添加了一個(gè)選項(xiàng),用于控制三次曲線和二次曲線的端點(diǎn)是開放的還是封閉的。為了避免著色器發(fā)散(與 endcap 法線的特殊情況處理有關(guān)),需要使用開放式曲線。 NVIDIA OptiX 曲線當(dāng)前是背面消隱的,因此通過曲線開口端進(jìn)入的光線將完全錯(cuò)過曲線。開放式曲線是常見的和可取的,而且性能更好。 NVIDIA OptiX 7.4 將三次曲線和二次曲線的默認(rèn)端蓋行為更改為開放式。
以前,這些曲線具有扁平閉合的圓盤形端蓋,這對(duì)于需要仔細(xì)控制光線曲線行為或防止光線通過曲線的應(yīng)用程序有時(shí)非常有用。為了節(jié)省內(nèi)存, B 樣條曲線和 Catmull Rom 曲線沿連接的線束段共享控制點(diǎn)。
說到節(jié)省內(nèi)存, NVIDIA OptiX 7 . 4 啟用了曲線自適應(yīng)采樣,這在默認(rèn)情況下既減少了內(nèi)存又提高了性能。對(duì)于擁有數(shù)百萬條曲線的毛茸茸的生物來說,內(nèi)存使用是至關(guān)重要的。對(duì)于最注重性能且內(nèi)存可用的生物來說,使用構(gòu)建標(biāo)志 OPTIX \ u build \ u flag \ u prefere \ u FAST \ u TRACE 可以更快地渲染曲線。自適應(yīng)采樣使用的內(nèi)存比以前稍微多一些(大約 10% ),以換取渲染性能平均提高 25%-50% ,甚至在我們的一些測試中提高 70% 。
兩個(gè)主要的去噪功能結(jié)合在一起
NVIDIA OptiX 7.4 中的去噪器在質(zhì)量和速度上不斷提高。有了這個(gè)版本的 NVIDIA OptiX ,開發(fā)人員可以結(jié)合前面兩個(gè)主要的去噪功能升級(jí): AOV (或分層)去噪和時(shí)間去噪。 AOV 去噪是同時(shí)對(duì)多個(gè)任意渲染層進(jìn)行去噪的功能,與單獨(dú)對(duì)每個(gè)層進(jìn)行去噪相比, AOV 去噪具有更好的效率。此外,同時(shí)對(duì)多個(gè)層進(jìn)行去噪可以顯著提高質(zhì)量,因?yàn)樗袑拥娜ピ?a href="http://www.1cnz.cn/tags/濾波器/" target="_blank">濾波器選擇保持一致。這意味著,一旦將層重新組合在一起,可以看到較少的去噪偽影。
對(duì)單獨(dú)的層進(jìn)行去噪會(huì)導(dǎo)致為每個(gè)層獨(dú)立選擇不同的過濾器,并且會(huì)使某些層更容易出現(xiàn)可見的瑕疵。這對(duì)于非常稀疏的層尤其如此,例如大部分為空的鏡面反射過程。時(shí)間去噪是 NVIDIA OptiX 7.3 的一項(xiàng)新功能,它可以在動(dòng)畫幀序列中保持幀間去噪的一致性。如果單獨(dú)對(duì)幀進(jìn)行去噪,它們可能看起來很不錯(cuò),但是當(dāng)您對(duì)它們進(jìn)行動(dòng)畫播放時(shí),通常會(huì)出現(xiàn)閃爍的瑕疵,因?yàn)槿ピ肫鲿?huì)對(duì)每個(gè)幀進(jìn)行獨(dú)立的選擇。時(shí)間 AOV 去噪在一個(gè)包中為您提供了兩個(gè)功能—在不同層和動(dòng)畫序列中的去噪一致性。
隨著需求量的增加,規(guī)模不斷擴(kuò)大
NVIDIA OptiX 中的 demand loading library 具有緩存逐出功能,用于動(dòng)態(tài)替換緩存的磁貼,以節(jié)省更多內(nèi)存。團(tuán)隊(duì)正在尋求需求加載庫中的這個(gè)新功能的反饋,所以如果你使用它,請(qǐng)通過我們的英偉達(dá)論壇here或通過電子郵件來訪問,讓 Nvidia OpTIX 團(tuán)隊(duì)知道它對(duì)你的工作有多好。將按需加載庫逐出功能帶到生產(chǎn)就緒狀態(tài),并計(jì)劃在未來版本的 NVIDIA OptiX 中進(jìn)行其他改進(jìn)。
關(guān)于作者
Tony Kanell 是 NVIDIA OptiX 團(tuán)隊(duì)的項(xiàng)目經(jīng)理。托尼的職業(yè)生涯始于電子藝術(shù)公司的軟件工程師,致力于模擬人生等 AAA 級(jí)游戲。在與一家由 WME 支持的創(chuàng)意機(jī)構(gòu)合作創(chuàng)辦新游戲工作室之前,他在該公司擔(dān)任管理職務(wù),并領(lǐng)導(dǎo)了幾個(gè)項(xiàng)目。在與 Nickelodeon 、孩之寶、 Universal 、 Laika 和多個(gè)原創(chuàng) IP 成功發(fā)布和合作發(fā)布后,他加入了 NVIDIA 的 OptiX 團(tuán)隊(duì),在那里他幫助團(tuán)隊(duì)完成了多個(gè)發(fā)布。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5021瀏覽量
103255 -
gpu
+關(guān)注
關(guān)注
28文章
4753瀏覽量
129061
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論