Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Parliamo ora del Ray Tracing core (RT core) integrato in ogni SM di TU102. Gli RT core di Nvidia sono in breve degli acceleratori a funzione fissa per Bounding Volume Hierarchy (BVH) traversal e triangle intersection evaluation. Entrambe le operazioni sono essenziali per l'algoritmo di ray tracing. 

bvh 01
bvh 02
bvh 03
bvh 04

I passaggi dell'algoritmo BHV, clicca per ingrandire

In breve, BVH forma dei box geometrici in una determinata scena. Questi box aiutano a restringere la posizione dei triangoli che intersecano i raggi tramite una struttura ad albero. Ogni volta che si trova un triangolo in un box, quel box viene ulteriormente diviso in più box fino a quando il box finale può essere diviso in triangoli. Senza BVH, l'algoritmo sarebbe costretto a ricercare nell'intera scena, bruciando tonnellate di cicli nel testare ogni triangolo per un'intersezione.

bvh software emulation

Il funzionamento di questo algoritmo è possibile grazie alle API Microsoft D3D12 Raytracing Fallback Layer, che usano i computer shader per emulare DirectX Raytracing su dispositivi senza supporto nativo - e spingerli verso DXR quando c'è il supporto da parte dei driver.

Su una GPU Pascal, ad esempio, la scansione BVH avviene sui core programmabili, che prelevano ogni box, lo decodificano, testano per un'intersezione e determinano se c'è un sottobox o triangoli all'interno. Il processo prosegue fino a quando non si trovano i triangoli, punto in cui sono testati per l'intersezione con il raggio. Come potete immaginare è un'operazione molto probante da svolgere in software, impedendo al ray tracing in tempo reale di funzionare fluidamente sulle attuali GPU.

ray tracing hardware acceleration

Creando acceleratori a funzione fissa per queste operazioni, l'SM inserisce un raggio nella scena usando uno shader per la generazione dei raggi e cede la struttura di accelerazione trasversale agli RT core a funzione fissa. Di conseguenza, tutte le valutazioni delle intersezioni si verificano molto più rapidamente e le altre risorse SM sono liberate per lo shading proprio come farebbero per un carico di lavoro tradizionale di rasterizzazione.

ray tracing 1

Clicca per ingrandire

Secondo Nvidia, la GeForce GTX 1080 Ti può gestire 1,1 miliardi di raggi al secondo via software usando i CUDA core capaci di 11,3 TFLOPs in FP32. Di contro la nuova RTX 2080 Ti può gestire 10 miliardi di raggi al secondo usando i suoi 68 RT core. È importante notare che nessuno di questi dati è basato su valori di picco, ma sul significato geometrico dei risultati di diversi carichi.