Il termine rendering fisica realistica (in inglese, Physically Based Rendering , o PBR ) è un insieme di tecniche di rendering di scene 3D , che imitano il modello fisico che descrive il comportamento della luce nel mondo reale. L'obiettivo del rendering fisico realistico è quello di dare agli oggetti virtuali un aspetto simile a quello che avrebbero nella realtà, e di basare la resa dei materiali su un numero ridotto di proprietà fisiche poco interdipendenti, per semplificare il lavoro dei grafici . L' albedo , la ruvidità e la natura metallica sono spesso proprietà dei materiali utilizzati per questo tipo di intonaco. Il rendering fisico realistico non viene utilizzato solo per i rendering fotorealistici e può prestarsi a stili più stravaganti, come evidenziato dal suo utilizzo nel film Ralph Breaks the Internet .
Il nome deriva da un libro del 2004 di Matt Pharr, Wenzel Jakob e Greg Humphreys , per il quale hanno ricevuto un Oscar per la scienza e la tecnologia nel 2013. Questo sistema è originariamente utilizzato nel mondo del cinema di animazione, ma è diventato accessibile per il 3D in tempo reale utilizzare successivamente. Si trova poi nel motore di rendering di alcuni motori di videogiochi e, di conseguenza, nei tanti videogiochi 3D che sono stati progettati con esso.
Affinché un rendering sia considerato un rendering fisico realistico, deve avere tre proprietà.
Innanzitutto, le superfici degli oggetti virtuali sono rappresentate con il modello delle microfaccette. In questo modello, ogni superficie è considerata costituita da un insieme di piccoli specchi microscopici chiamati sfaccettature. Sopra una superficie è liscia o lucida, più sfaccettature sono allineate con essa, e riflette i raggi luminosi nella stessa gestione , che crea riflessi netti (alla maniera di uno specchio ). Al contrario, più la superficie è ruvida , più caoticamente sono orientate le sfaccettature e più i raggi luminosi si diffondono, il che impedisce i riflessi. Pertanto, definiamo una proprietà di rugosità che può essere modificata per rappresentare vari materiali.
In secondo luogo, i calcoli fisici per la luce seguono il principio di conservazione dell'energia . Se consideriamo un oggetto che non è una sorgente luminosa, la luce che esce da questo oggetto (diffusione e riflessione) non dovrebbe trasportare più energia della luce che arriva sulla sua superficie. In altre parole, più intensa è la dispersione della luce (luce diffusa) , minore deve essere la riflessione della luce ( luce speculare ), e viceversa, affinché la somma delle loro intensità non superi l'intensità della luce incidente.
Terzo, la luce viene calcolata con una funzione di riflettività bidirezionale che rispetta i due punti precedenti. Tiene quindi conto della rugosità dei materiali, tramite il modello a microsfaccettature, e della conservazione dell'energia. Ad esempio, l' ombreggiatura di Phong è una funzione di riflettività bidirezionale che non è considerata fisicamente realistica, perché non rispetta il principio di conservazione dell'energia. Al contrario, la funzione Cook-Torrance, che rispetta queste condizioni, viene spesso utilizzata per rendering fisici realistici.
Il rendering fisico realistico ha diversi interessi, nell'ambito del lavoro relativo alla computer grafica , ai film d'animazione o ai videogiochi . Da un lato, generalmente consente di ottenere un rendering più realistico rispetto ad algoritmi di illuminazione come Phong o Blinn-Phong (en) . Dall'altro, mira a migliorare l' usabilità del software di modellazione per i progettisti di computer grafica.
In effetti, un'importante decisione progettuale è che i vari parametri offerti ai grafici non devono essere molto interdipendenti. Ad esempio, se i grafici modificano direttamente gli indici di dispersione e di riflessione, è probabile che violino il principio di conservazione dell'energia, che spesso conferisce agli oggetti rappresentati un aspetto strano. Rimuoviamo così questi parametri, che sono interdipendenti quando si tratta di rispettare questo principio, a beneficio degli altri, a cui possiamo dare qualsiasi valore senza violarlo e portando a un risultato inconsistente. Questa scelta evita inoltre ai grafici di dover ricorrere a trucchi di luce, perché rispettare il principio di conservazione dell'energia implica che gli oggetti virtuali mantengano una luminosità adeguata indipendentemente dal modo in cui vengono illuminati. La resa fisica realistica permette quindi di limitare i test da effettuare prima di raggiungere un risultato soddisfacente.
Nel 2004, Matt Pharr, Wenzel Jakob e Greg Humphreys hanno pubblicato un libro intitolato Physically Based Rendering ; Dalla teoria all'implementazione in cui formalizzano il loro modello di rendering 3D con lo stesso nome. Come suggerisce il sottotitolo, il libro descrive sia la teoria alla base di questo modello che i dettagli di implementazione per poterlo utilizzare in un sistema informatico .
il 8 gennaio 2014, la notorietà del libro e il suo status di punto di riferimento nel campo del cinema d' animazione hanno fatto guadagnare a Matt Pharr, Greg Humphreys e Pat Hanrahan (che ha supervisionato Matt Pharr) uno degli Oscar scientifici e tecnici del 2013. La presentazione del premio afferma: "Il rendering fisico realistico ha trasformato il modo di illuminare nel campo della computer grafica, simulando più precisamente materiali e luce, permettendo così agli artisti digitali di concentrarsi sul cinema piuttosto che sui complessi aspetti del rendering. [...] Physically Based Rendering è sia un manuale che un'implementazione completa del codice sorgente, che ha fornito una tabella di marcia pratica ampiamente accettata per la maggior parte delle ombreggiature basate sulla fisica utilizzate nella produzione di film. "
Durante la preparazione del loro film d'animazione Rapunzel , uscito nel 2010, gli studi di animazione Disney hanno iniziato a sviluppare una propria versione di rendering fisico realistico, al fine di rappresentare sullo schermo i lunghi capelli biondi dell'omonima principessa . Sono contenti del risultato per quanto riguarda i capelli, ma non possono adattare la tecnica ad altri materiali già creati per il film.
È stato quindi per il loro film successivo, The Worlds of Ralph , uscito nel 2012, che hanno utilizzato un rendering fisico realistico per il rendering di tutti i materiali. Durante i loro esperimenti, stabiliscono dei principi da rispettare affinché la tecnica rimanga conveniente per gli artisti:
Allo stesso tempo, gli sviluppatori dello studio di videogiochi Epic Games stanno cercando di modernizzare il motore di rendering 3D del loro motore di gioco , l' Unreal Engine . Se intendono incorporare un rendering fisico realistico basato su materiali per una migliore fedeltà di rendering, è la pubblicazione da parte della Disney dei loro risultati su Ralph's Worlds e dei loro "principi" che li convince che la sua adozione potrebbe essere fatta mantenendo una certa facilità d'uso . Quindi stabiliscono i propri "principi" e il loro approccio a questa tecnica viene quindi aggiunto a Unreal Engine nella sua versione 4.
Sebbene questa pratica fosse considerata troppo impegnativa dal punto di vista computazionale per il 3D in tempo reale, ora può essere estesa al mondo dei videogiochi. Altri motori di gioco lo hanno poi adottato, come Unity nella sua versione 5 pubblicata nel 2014, e poi Godot nella sua versione 3.0 pubblicata ingennaio 2018. Quest'ultimo è descritto dai suoi sviluppatori come il primo motore di gioco ad offrire una funzione di riflettività bidirezionale che segue completamente i "principi" Disney.
Quando i grafici lavorano con un rendering fisico realistico, è probabile che agiscano su vari parametri, da cui dipenderà il rendering dei materiali.
Su un oggetto 3D, è probabile che i valori di questi parametri cambino in punti diversi della sua trama . Ad esempio, se un oggetto che utilizza materiale riflettente viene graffiato dall'usura, i graffi sono più ruvidi del resto della superficie e quindi riflettono meno bene la luce. Allo stesso modo, un oggetto può avere parti metalliche e non metalliche. Per questo motivo i grafici devono prevedere per ogni parametro una texture che indichi il valore del parametro per ogni texel .
La trama dell'albedo indica in ogni texel la quantità di energia, sia della luce riflessa che della luce diffusa dal materiale. In modo più intuitivo, rappresenta semplicemente la trama cromatica del materiale, senza tener conto di ombre o variazioni di rugosità. Il suo utilizzo è conveniente perché, se per un materiale isolante (non metallico) il colore percepito è quello della sua luce diffusa, per i materiali metallici il colore percepito è quello della sua luce riflessa. Pertanto, è sufficiente utilizzare l'albedo per determinare i colori, indipendentemente dal carattere metallico o meno del materiale.
La trama di rugosità è una trama in sfumature di grigio che indica in ogni texel un valore di rugosità. Più luminoso è un texel (vicino al bianco), più ruvido sarà considerato dal renderer, e quindi più disperderà la luce e avrà riflessi sfocati. Al contrario, più scuro è un texel (vicino al nero), più liscio sarà e avrà riflessi chiari.
Piuttosto che una trama di ruvidità, alcuni motori di rendering si aspettano piuttosto, nella loro interfaccia, una trama che ha lo stesso ruolo ma che è "invertita": la trama di levigatezza. In questo caso i texel più chiari vengono interpretati più lisci, ei texel più scuri più ruvidi. Questo modo di fare le cose a volte è considerato più intuitivo dagli utenti.
La trama di distribuzione del metallo indica per ogni texel se deve essere considerato metallico o meno. In teoria, un materiale non è mai sia metallico che isolante in realtà, quindi questa informazione è binaria e la trama da fornire è solo in bianco e nero. Tuttavia, la maggior parte dei renderer preferisce ancora fornire un continuum di valori di "metallicità" tra "metallico" e "non metallico". Ciò consente di simulare in modo soddisfacente le imperfezioni, o la presenza di un deposito di materiale non metallico come la polvere, sulla superficie dei metalli, senza richiedere una migliore risoluzione della trama. In questo caso, la trama da fornire è nei toni del grigio.
Il rendering fisico realistico può generalmente prendere in considerazione altre tecniche di rendering che esistono altrove. Oltre alla suddetta texture, potrebbe essere possibile utilizzare mappe normali in modo che la luce si comporti come se la texture fosse in rilievo texture di bump mapping per simulare il cambiamento nella geometria dell'oggetto durante il rendering, texture di spostamento che modificano la geometria del oggetto durante il rendering, nonché trame di occlusione ambientale per rappresentare ombre che non verranno calcolate in tempo reale.