兩個概念:
第一個光線追蹤:
光線追蹤是以光線的物理特性為核心的算法。原理是從使用者端作為起點,尋找光線反射,折射的路徑並計算出使用者會看到的物體顏色和亮度。如圖所示:

但是由於是讓大量的光線在空間中反射折射,並且空間中的物體狀況未知,每次繪制一張圖需要的計算量是相當巨大,沒辦法即時算出結果,因此現在游戲中采用的是光柵化和光線追蹤相結合的“混合渲染”。也就是使用光柵化繪制的畫面作為基礎,然后使用光線追蹤生成一些額外的信息給畫面去錦上添花。(光柵化用於普通,需要高效處理的場景中,而光線追蹤用於最具視覺效果的地方,比如水面反射,鏡子反射,玻璃折射等)
區別下上面提到的光柵化和光線追蹤:

如上圖所示:左面是光柵化,右面是光線追蹤。我們可以看到左圖中光柵化根據玩家攝像機的位置以及視角等參數,計算出這些三角形在屏幕上覆蓋到了哪些像素點,然后再使用光源材質等信息來計算這些像素點的顏色從而繪制出游戲畫面。右圖中的光線追蹤是找一個起始點對着場景發射一堆虛擬的光線(考慮到算力的問題其實只發射少數光線),然后追蹤並記錄這些光線與場景中物體之間碰撞的信息,然后再用這些信息生成畫面的一種技術。
由於光線追蹤中的射線需要與場景中所有物體的所有三角面都要進行一次相交測試,才能確定這一根射線到底打到了場景中的哪一個三角面上,這個部分計算量非常大,難以做到實時,所以很多時候像是你看美國大片的渲染都是離線渲染。為了解決這個問題,NVIDIA引入了RT core。
第二個是RT Core:
NVIDIA Turing架構新增的RT core運行單元就如同Volta架構新增的Tensor core一樣,是為了特殊應用場景而設計的計算單元。此單元的設計目標是為了讓GPU擁有即時運算的光線追蹤能力,一種可以讓游戲更逼真的渲染算法。
Ray tracing需要進行的主要計算,是對每一條光線,在當前場景的所有物體中,找到其最近的相交點。而目前計算機圖形學中對場景的模擬都是通過無數個三角形拼接實現的,因此主要的計算也就成了對於每一條光線,在場景中找到第一個與其相交的三角形。
在Turing GPU core的架構圖中RT core的部分提到兩個關鍵術語:Ray Triangle Intersection(射線三角交點)和BYH Traversal(BYH遍歷)。射線三角交點就是尋找光線和三角形的交點位置的過程,BYH遍歷主要是減少計算每一條光線最近的交點所需要遍歷的三角形數量,它通過對場景的預處理來加速尋找某一條光線最近的三角形(將空間上比較接近的物體歸到同樣的類別來加速遍歷)。並且一個場景中通常會有非常多的光線,而在一次渲染中這個預處理只需要進行一次,就可以供所有光線(反射或折射的光線)使用。


總的來說光線追蹤使得游戲等一些逼真場景的應用達到了實時渲染的效果,而起到實時性的功勞來自於RT core的加入。
