日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

视频系列:RTX实时射线追踪(上)

發(fā)布時間:2023/11/28 生活经验 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 视频系列:RTX实时射线追踪(上) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

視頻系列:RTX實時射線追蹤(上)

Video Series: Practical Real-Time Ray Tracing With RTX

RTX在游戲和應(yīng)用程序中引入了一個令人興奮的和根本性的轉(zhuǎn)變。在這個視頻系列中,NVIDIA工程師Martin Karl Lefrancois和Pascal Gautron幫助您開始實時光線跟蹤。您將了解如何管理數(shù)據(jù)和渲染、加速結(jié)構(gòu)和著色器如何工作,以及管道需要哪些新組件。我們還將包括本視頻系列所基于的演示文稿中的關(guān)鍵幻燈片。

這些視頻包含豐富的信息,但在您觀看時不要擔(dān)心記下東西;我們已經(jīng)為您做了筆記。你可以從每一個以子彈形式呈現(xiàn)的片段中找到“關(guān)鍵的東西”。不過,我們強(qiáng)烈建議你在挖掘子彈之前先看視頻,以確保你得到了正確的上下文。

Part1: Ray Tracing: An Overview (3:15 min)

Key things from part 1

光線跟蹤是一個與光柵化根本不同的渲染過程,如圖1所示。

Figure 1. Instead of the triangle being projected on the screen, we take the position from the eye, send a ray through the pixel, and try to find the triangle underneath.

可以跟蹤更多光線來計算該像素的陰影。

當(dāng)你追蹤光線時,它會擊中最近的三角形并將其返回給你。

你不必解決它。它只會返回沿射線最近的三角形。

當(dāng)場景中有很多三角形時會發(fā)生什么?如何快速處理?您需要一個加速結(jié)構(gòu),如圖2所示。場景中的所有對象周圍都有一個大的邊界框,一種算法將拆分該框并重復(fù)執(zhí)行此操作,直到該框僅包含幾個三角形。然后,你就可以用這些三角形來測試了。

Figure 2. The construction of this acceleration structure is provided by RTX API.

Part2: Data and Rendering (11:14 min)

Martin Karl解釋了實時光線跟蹤中數(shù)據(jù)的組成,并說明了加速度結(jié)構(gòu)、管道和綁定表是如何協(xié)同工作的。

Key things from part 2

圖形程序包括用戶界面和交互、引擎更新、數(shù)據(jù)和渲染。我們對光線跟蹤的數(shù)據(jù)和渲染組件特別感興趣。

光柵包括頂點緩沖區(qū)和包含場景中所有三角形的索引,如圖3所示,以及頂點和片段著色器。

Figure 3. Raster scene construction.

聚集一起,他們將有助于繪制你的場景。在光線跟蹤中,必須將頂點和索引的緩沖區(qū)轉(zhuǎn)換為加速度結(jié)構(gòu)。同樣,頂點和片段著色器必須轉(zhuǎn)換為不同類型的著色系統(tǒng)。在光柵中,這些是分開的。在光線跟蹤器中,你必須把這些東西結(jié)合起來。

底層加速度結(jié)構(gòu)(BLAS)和頂層加速度結(jié)構(gòu)(TLAS)代表兩部分。為什么結(jié)構(gòu)會這樣分裂?讓我們考慮一個城市、汽車和卡車的例子,如圖4所示。

Figure 4. Splitting the acceleration structure into top and bottom halves improves performance.

一個加速結(jié)構(gòu)支撐著城市。你把所有的建筑都放在里面。這都是靜態(tài)的;你想渲染和光線跟蹤那塊非常快。

另一個加速結(jié)構(gòu)支撐著汽車。在本例中,有兩個實例使用它,因為同一輛車在場景中可以是不同的顏色。

最后,我們使用一個實例添加一個truck。

您可以輕松地重建頂層。汽車可以在整個城市移動,你不必重建整個系統(tǒng)。

你可以在底層重建。如果一個結(jié)構(gòu)必須調(diào)整,比如說,一場車禍,你可以在不改變其他結(jié)構(gòu)的情況下做出改變。

出于性能原因,您希望最小化底部結(jié)構(gòu)的數(shù)量。追蹤光線穿過兩個重疊的BLA需要做兩倍的工作來找到最近的交點…這一點很重要。

讓我們看看光線跟蹤管道,如圖5所示。

Figure 5. The Ray Tracing Pipeline

管道由一組著色器組成,如圖6所示。

首先是轉(zhuǎn)到光線生成著色器的像素。這就是你決定開始的地方和你拍攝光線的方向,一個叫做光線生成的過程,以每像素為單位執(zhí)行。這將為您準(zhǔn)備的每個像素調(diào)用。

然后,它將轉(zhuǎn)到遍歷,并調(diào)用交叉點著色器。有一個內(nèi)置的三角形(可以重寫)。

Figure 6. Ray tracing shader architecture

還有一個任意命中材質(zhì)球。這是內(nèi)置在管道中的,但您可以覆蓋它。例如,葉子形狀由alpha紋理定義的樹。你想讓這個系統(tǒng)經(jīng)歷所有的困難,直到它真的碰到什么東西。它測試alpha,只有當(dāng)葉子的身體受到真正的觸碰,而不是僅僅觸碰葉子的外部時,才會產(chǎn)生最接近的命中率。

您也可以將此用于陰影光線。

最接近的命中材質(zhì)球在實際接觸對象時起作用。最近的命中保存了陰影的代碼。你也可以從那里追蹤新的光線并追蹤到你的影子。

當(dāng)你什么都不碰的時候,你就會發(fā)現(xiàn)“小姐”的影子。你完全忽略了場景中的所有對象。例如,這將是您的環(huán)境著色器。

All together now

圖7中的圖表顯示了完全使用光線跟蹤著色器管道的可能性。

Figure 7. This diagram shows one possible data flow using ray tracing shaders.

你有一個TLAS(頂層加速結(jié)構(gòu))和一個BLAS(底層加速結(jié)構(gòu))。

管道是找到編譯的著色器和聲明所有著色器的位置。

著色綁定表將綁定著色器的元素。

它們共同維護(hù)一個復(fù)雜的關(guān)系,但不太復(fù)雜,如圖8中的組裝圖所示。

Figure 8. This assembly view shows the relationship between the ray tracing pipeline and the shader binding table. This is what you have to do in DX12.

在渲染方面,光線跟蹤只需要一個調(diào)用dispatchray。然后你可以移動到無人機(jī),并渲染目標(biāo)。

Figure 9. The rendering side of ray tracing uses just a single call.

Part3: RTX Acceleration Structures (8:04 min)

Pascal現(xiàn)在提供了一個更深入的研究,當(dāng)您嘗試使用基于光柵的應(yīng)用程序并使其與光線跟蹤一起工作時會發(fā)生什么。

Key Things from Part 3

雖然本系列視頻的焦點是直接X12,但基本原理都轉(zhuǎn)移到Vulkan。閱讀我們的博客文章關(guān)于Vulkan射線跟蹤如何與RTX工作的更多細(xì)節(jié)。

Regarding acceleration structures

將場景分為底層實例(BLAS)

為每個實例生成底層加速結(jié)構(gòu)

少BLAS更好

將動態(tài)對象保存在它們自己的BLAS中

對動態(tài)對象使用重新裝配

生成頂層加速結(jié)構(gòu)(TLAS)

How do we build the BLAS?

從描述符開始,如圖10所示。

您將能夠重用基于光柵的應(yīng)用程序中使用的數(shù)據(jù)。通常,您可以指向頂點和索引緩沖區(qū),并訪問完全相同的數(shù)據(jù)。在基于光柵的應(yīng)用程序中,可以使用與每個對象對應(yīng)的任何范圍來描述對象。

Figure 10. Setting up bottom-level acceleration structures

您可以將不同的對象放在一個BLAS中,并使用轉(zhuǎn)換緩沖區(qū)來定位它們,該緩沖區(qū)會將它們烘焙到一個加速結(jié)構(gòu)中。

三角形將被內(nèi)部轉(zhuǎn)換并放置在加速結(jié)構(gòu)的正確位置。

我們構(gòu)建了另一個描述符,它將給我們一些關(guān)于BLAS將是什么的信息。我們需要定義是否能夠更新結(jié)構(gòu),如圖11所示。

Figure 11. More BLAS setup requirements

Obtain pre-build information

確定產(chǎn)生的加速度結(jié)構(gòu)的尺寸。

scratch數(shù)據(jù)大小描述了加速結(jié)構(gòu)構(gòu)建器在構(gòu)建過程中需要多少內(nèi)存。你需要分配這個內(nèi)存。

在DX12中沒有隱藏的分配;必須顯式地執(zhí)行所有操作。

scratch空間僅在構(gòu)建期間使用。之后,您可以取消分配。

一旦分配了暫存空間,就可以重用所有的描述符。您可以創(chuàng)建另一個帶有更新標(biāo)志的描述符,用于可選的重新安裝。最后,可以構(gòu)建BLAS,這在GPU上發(fā)生得很快。

Build the TLAS

就像處理場景圖一樣,只有兩個級別。

每個實例都有一個ID,它描述了在哪里找到與對象對應(yīng)的著色器,如圖12所示。

Figure 12. Top level acceleration structure setup

再次,我們有一個轉(zhuǎn)變,這次是在TLAS。如果我們想在世界上移動一個完整的底部水平,我們可以使用這個,并有非常快速的重新擬合,而不必接觸實際的幾何。

您遵循與使用BLAS相同的原則,但我們將獲取實例化信息,而不是幾何體。

總結(jié)

以上是生活随笔為你收集整理的视频系列:RTX实时射线追踪(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。