Per iniziare, consiglio vivamente di leggere la presentazione Siggraph di Naty Hoffman che copre la fisica del rendering. Detto questo, cercherò di rispondere alle tue domande specifiche, prendendo in prestito immagini dalla sua presentazione.
Osservando una singola particella di luce che colpisce un punto sulla superficie di un materiale, può fare 2 cose: riflettere o rifrangere. La luce riflessa rimbalzerà lontano dalla superficie, simile a uno specchio. La luce rifratta rimbalza all'interno del materiale e può uscire dal materiale a una certa distanza da dove è entrata. Infine, ogni volta che la luce interagisce con le molecole del materiale, perde energia. Se perde abbastanza della sua energia, la consideriamo completamente assorbita.
Per citare Naty, "La luce è composta da onde elettromagnetiche. Quindi le proprietà ottiche di una sostanza sono strettamente legate alle sue proprietà elettriche." Questo è il motivo per cui raggruppiamo materiali come metalli o non metalli.
I non metalli esibiranno sia riflessione che rifrazione.
I materiali metallici hanno solo una riflessione. Tutta la luce rifratta viene assorbita.
Sarebbe proibitivamente costoso provare a modellare l'interazione delle particelle di luce con le molecole del materiale. Invece, facciamo alcune ipotesi e semplificazioni.
Se la dimensione dei pixel o l'area di ombreggiatura è grande rispetto alle distanze di entrata-uscita, possiamo supporre che le distanze siano effettivamente zero. Per comodità, abbiamo diviso le interazioni luminose in due termini diversi. Chiamiamo il termine di riflessione superficiale "speculare" e il termine risultante da rifrazione, assorbimento, scattering e ri-rifrazione che chiamiamo "diffuso".
Tuttavia, questo è un presupposto piuttosto ampio. Per la maggior parte dei materiali opachi, questo presupposto è ok e non differisce molto dalla vita reale. Tuttavia, per materiali con qualsiasi tipo di trasparenza, il presupposto fallisce. Ad esempio, latte, pelle, sapone, ecc.
Il colore osservato di un materiale è la luce che non viene assorbita. Questa è una combinazione sia della luce riflessa, sia di qualsiasi luce rifratta che esce dal materiale. Ad esempio, un materiale verde puro assorbirà tutta la luce che non è verde, quindi l'unica luce che raggiunge i nostri occhi è la luce verde.
Pertanto un artista modella il colore di un materiale dandoci la funzione di attenuazione per il materiale, ovvero come la luce sarà assorbita dal materiale. Nel nostro modello diffuso / speculare semplificato, questo può essere rappresentato da due colori, il colore diffuso e il colore speculare. Prima dell'utilizzo di materiali a base fisica, l'artista avrebbe scelto arbitrariamente ciascuno di questi colori. Tuttavia, dovrebbe sembrare ovvio che questi due colori dovrebbero essere correlati. È qui che entra in gioco il colore albedo. Ad esempio, in UE4, calcolano il colore diffuso e speculare come segue:
DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)
dove Metallic è 0 per i non metalli e 1 per i metalli. Il parametro 'Specular' controlla la specularità di un oggetto (ma di solito è una costante 0,5 per il 99% dei materiali)