top of page

Hair con Path-Traced in Real Time con RTX di NVIDIA

Immagine del redattore: Filippo-Maria RotatoriFilippo-Maria Rotatori

Il supporto hardware per il ray tracing di mesh poligonali è stato introdotto come parte di NVIDIA RTX nel 2018. Ma il ray tracing per capelli e pellicce è rimasto un problema ad alta intensità computazionale, difficile da accelerare ulteriormente.


Almeno, fino ad ora.

Le GPU NVIDIA GeForce Serie 50 includono un importante progresso nell'accelerazione del ray tracing per capelli e pellicce: il supporto hardware ray tracing per la primitiva linear swept sphere (LSS) - sfera spazzata lineare. Questa nuova primitiva rappresenta un grande passo avanti verso il rendering in tempo reale di umani digitali di alta qualità.


La gamma di applicazioni per il rendering realistico di umani è in continua crescita e include avatar IA, personaggi cinematografici e videoludici, ricerca grafica, applicazioni di calcolo scientifico ad alte prestazioni, generazione di dati sintetici e altro ancora.

(@NVIDIA)
(@NVIDIA)


LSS è disponibile oggi in NVIDIA OptiX e nell'NVAPI SDK. Esempi avanzati di capelli in tempo reale che utilizzano LSS con modelli di shading basati fisicamente sono inclusi nell'RTX Character Rendering SDK, parte di NVIDIA RTX Kit. RTX Kit è una suite di tecnologie di rendering neurale per ray tracing di giochi con IA, rendering di scene con geometrie immense e creazione di personaggi di gioco con visuali fotorealistiche. RTX Kit è stato introdotto durante il lancio della GeForce RTX Serie 50.



Cos'è la primitiva LSS?


La primitiva LSS è una linea 3D spessa e rotonda con raggi variabili. Molteplici sfere spazzate lineari possono essere concatenate per costruire curve 3D, condividendo i vertici dove si sovrappongono, in modo simile a come i triangoli vengono utilizzati per costruire superfici 3D. LSS ha la forma di un tubo cilindrico o conico con sfere opzionali che chiudono entrambe le estremità.


Se i due punti finali si sovrappongono in modo che la linea non abbia lunghezza, allora la sfera spazzata lineare diventa semplicemente una sfera regolare. Questo può essere utilizzato per il rendering di particelle accelerate via hardware. Per rendere le sfere convenienti ed efficienti in termini di memoria, questo caso speciale di LSS per le sfere viene esposto come una primitiva sfera separata di prima classe.

Le sfere spazzate lineari non sono normalmente pensate per essere mostrate ingrandite in primo piano, come nella figura sotto 1. Piuttosto, sono pensate per essere piccole sullo schermo, forse larghe un pixel, più o meno.

(@NVIDIA)




Quando molteplici sfere spazzate lineari vengono concatenate in filamenti e la telecamera viene allontanata un po', gli angoli acuti si dissolvono e queste linee spesse diventano curve sottili e morbide.


(@NVIDIA)



Indicizzazione LSS

LSS è dotata di due modalità di indicizzazione: una modalità lista esplicita e una modalità semi-implicita chiamata successive implicit (successiva implicita). In modalità lista, ogni segmento è specificato esplicitamente utilizzando una coppia di indici nel tuo vertex buffer. In modalità successiva implicita, i segmenti di linea sono specificati utilizzando un indice esplicito e un indice implicito, dove si presume che il secondo punto sia il vertice successivo nel vertex buffer.

Poiché i vertici successivi in memoria sono comuni e convenienti, la modalità successiva implicita è un modo semplice per risparmiare il 50% della memoria nel buffer degli indici. La figura sotto mostra un esempio in cui un buffer degli indici esplicito conterrebbe [0,1,1,2,2,3,4,5,5,6]. Con l'indicizzazione successiva implicita, il buffer degli indici sarebbe [0,1,2,4,5].


Un esempio di due filamenti con indici di vertice (Immagini @NVIDIA)

Rendering di curve basate su filamenti utilizzando hardware legacy

Per chi utilizza già il framework API di ray tracing basato su CUDA NVIDIA OptiX, LSS è già disponibile come tipo di curva lineare predefinito e funziona su tutte le GPU supportate da OptiX. La versione OptiX di LSS utilizza automaticamente un fallback software su GPU precedenti alle GPU NVIDIA Blackwell e la nuova primitiva accelerata via hardware sulle GPU GeForce RTX Serie 50, senza necessità di modifiche al codice. Se non stai utilizzando OptiX, è probabile che dovrai utilizzare una primitiva alternativa.

Quando si tratta di prestazioni elevate, le curve tassellate sono la cosa più vicina a LSS. Un'opzione sono i quadrilateri camera-facing (rivolti alla camera) o ray-facing (rivolti al raggio). I quadrilateri ray-facing hanno un ingombro di memoria relativamente basso, anche se potrebbero dover essere orientati ad ogni fotogramma di animazione (sia movimento dei capelli che movimento della camera).


I Disjoint Orthogonal Triangle Strips (DOTS) - Strisce di Triangoli Ortogonali Disgiunte - forniscono una soluzione intelligente per la tassellazione di curve che consente la visualizzazione da qualsiasi angolazione senza dover riorientare i triangoli ad ogni fotogramma per affrontare la telecamera. In questo modo, se si renderizzano curve statiche, non sarà necessario ricostruire la gerarchia del volume di delimitazione (BVH) quando la telecamera o i capelli si muovono. Poiché i triangoli hanno un ampio supporto, DOTS può sfruttare l'hardware RTX esistente.


Chiunque voglia utilizzare LSS sulle GPU GeForce RTX Serie 50 può comunque supportare filamenti ray traced su GPU più vecchie utilizzando DOTS. Alcuni esempi di capelli che utilizzano sia DOTS che LSS saranno disponibili come parte dell'RTX Character Rendering SDK che implementa il path tracing di capelli e pelle umana realistici.


Un vantaggio di LSS è che la geometria è naturalmente rotonda, rendendola facile da ombreggiare e facile da evitare auto-intersezioni quando si lanciano raggi d'ombra e di riflessione. Le curve tassellate come DOTS avranno in genere bisogno che la normale geometrica venga sovrascritta da una normale di shading personalizzata, come mostrato nella figura sotto . Quando vengono utilizzate normali di shading arrotondate, l'aspetto di DOTS può essere simile o persino indistinguibile dall'aspetto di curve realizzate con sfere spazzate lineari.



Le Strisce di Triangoli Ortogonali Disgiunte possono corrispondere all'aspetto delle sfere spazzate lineari quando vengono utilizzate le normali di shading


Vantaggi dell'utilizzo di LSS

Alcuni degli approcci esistenti ai capelli in tempo reale includono:

  • Schede texturizzate

  • Quadrilateri ray-facing, tubi tassellati, quadrilateri ortogonali (DOTS)

  • Primitive curve di ordine superiore software (Bezier cubiche, ad esempio)

Le schede texturizzate sono state un buon modo per ottenere una qualità ragionevole per i capelli nei giochi con un budget molto leggero. Tuttavia, questo tipo di configurazione è estremamente limitata e non consente molto spazio per simulare o animare i capelli. Poiché una scheda texturizzata ha più filamenti per scheda, non c'è controllo sui singoli filamenti, per design. Gli approcci basati sui filamenti sono molto più controllabili e flessibili, e questo è uno dei motivi per cui i filamenti sono chiaramente il futuro del rendering di capelli in tempo reale man mano che l'hardware mondiale migliora nel tempo.


(@NVIDIA)
(@NVIDIA)


Il rendering di capelli animati sugli umani è circa 2 volte più veloce con LSS rispetto a DOTS, richiedendo anche circa 5 volte meno VRAM per memorizzare la geometria

Poiché i triangoli sono ben supportati nell'hardware al giorno d'oggi, la tassellazione di curve in triangoli (tubi, quadrilateri, DOTS) può essere molto veloce da renderizzare. Lo svantaggio è che la tassellazione richiede tempo e può utilizzare molta memoria. Un quadrilatero richiede quattro vertici, anche se due vertici possono essere condivisi con il successivo quadrilatero vicino nella striscia. Quindi, in media, i quadrilateri camera-facing costeranno almeno due vertici per segmento di filamento. Se vengono utilizzati tubi o DOTS, allora il filamento finirà per avere più di due vertici per segmento in media.

LSS ha bisogno solo di un vertice per segmento di filamento in media, quindi utilizza molta meno memoria rispetto alle curve tassellate, ottenendo al contempo velocità di rendering più elevate. E LSS è ovviamente molto più veloce delle primitive di curve di ordine superiore software, come la B-spline cubica. A seconda delle esigenze e della tolleranza per la qualità, queste prestazioni extra possono comportare un compromesso di memoria rispetto alle curve cubiche, ad esempio, se sono necessari più vertici per la fluidità.

Cos'altro si può utilizzare LSS?

La versione RTX della sfera spazzata lineare è stata progettata principalmente pensando a capelli e pellicce, ma può essere utilizzata per altre applicazioni tra cui particelle, modelli molecolari, rendering wireframe, rendering di font e path e qualsiasi altra cosa tu possa immaginare.


Usi alternativi delle sfere spazzate lineari includono wireframe (sinistra), rendering di particelle (centro) e modelli molecolari (destra). Crediti immagine: Bay Raitt, Valve; Stanford Dark Sky Simulations; University of Illinois]


Crediti immagine: Bay Raitt, Valve; Stanford Dark Sky Simulations; University of Illinois





 
 
 

Comments


bottom of page