Alla fine ho scoperto un difetto nelle mie argomentazioni sull'uso del mezzo vettore per la parte diffusa.
tl; versione dr:
αhi e αhonon sono uguali, questo presupposto funziona solo per la parte speculare. Pertanto non viene data l'energia di conservazione.
Più corretto: per definizione αhi=αho, ma non ti è permesso usarli nell'equazione, devi usare le normali del microfacet invece dei mezzi vettori. Il microfacet normale e il mezzo vettore non sono tuttavia generalmente uguali.
versione lunga:
Il diffuso BRDF (come quello speculare) è un'integrazione su tutti i possibili normali microfacet. Il modulo BRDF generalizzato è:
(1)
f=∫Ωρm∗D∗G∗cos(αhi)∗cos(αho)cos(θi)∗cos(θo)
dove ρm è il comportamento della luce quando raggiunge un microfacet, D è la normale funzione di distribuzione, G è la funzione geometria e il resto è normalizzazione [PBR, p.16-25] [HEI, p.61f.]
Ora per il BRDF speculare, il comportamento è un riflesso perfetto. Ciò significa che solo i microfacet sono normaliωm è uguale al mezzo vettore ωh tra la luce (ωi) e visualizza (ωo) la direzione riflette la luce dalla direzione della luce alla direzione della vista. Matematicamente, questo si traduce in una funzione Delta di Diracδ(ωh). La quantità di luce riflessa è determinata da FresnelF. Con la contabilizzazione delle modifiche al dominio di integrazione [PBR, p.31-41], ciò porta a (ρm,s essendo la reazione specifica speculare dei microfacet per la parte speculare):
(2)
ρm,s=δ(ωh)∗F4∗αhi∗αho
Collegalo a (1) e ti integri su qualsiasiωm, ma la funzione delta dirac ti fa ignorare qualsiasi cosa ωm≠ωh. Questa è la cosa bella di quelle funzioni dirac delta, il "cancella" l'integrale. Pertanto, vieni al noto BRDF [PBR, p.43]
(3)
fs=F∗D∗G4∗cos(θi)∗cos(θo)
e qui puoi tranquillamente supporre αhi=αho. La parte di Fresnel rende questo lato di un'interpolazione lineare (visto che questo è il rapporto tra la luce riflessa in modo speculare).
D'altro canto, hai ancora un integrale e non puoi "annullarlo" con nulla. Permettereθmi essere l'angolo tra il microfacet normale e la dir luce, theta_mo tra il microfacet normale e la vista view (al contrario di αhi e αho, che sono specificamente definiti per il mezzo angolo!). Ciò significa 2 cose importanti:
(4)
θmi≠αhi=αh=αho≠θmo∀ωm≠ωh
e ρm,d (poiché la reazione diffusa della luce quando si raggiungono i microfacet) dipende da Fresnel, può usare solo parti non riflesse, ma non si può semplicemente supporre che OGNI diffusore normale di microfacet rifletta tutta la luce che non è stata specularmente riflessa (es. (1−F(αh))).
Quindi il problema ora è che hai un lato di quella interpolazione lineare che è il BRDF speculare risolvibile analiticamente senza un integrale. D'altra parte, hai il fattore di interpolazione all'interno dell'integrale, e quindi lo useresti per qualsiasi normale microfacet. Questo non è più un risparmio energetico, se si modellaρm,d con un termine lambertiano.
Se riesci a tirare il 1−F parte dall'integrale, quindi e solo allora puoi usare il mezzo vettore per BRDF sia speculari che diffusi, altrimenti devi gestirlo diversamente.
Se si desidera ancora utilizzare il mezzo vettore per "Interpolazione di Fresnel", è necessario normalizzare.
f=F(αh)∗rs+(1−F(αh))∗rd∗k
Con k essere scelto, tale che
rd∗k=1
Nota che rd include ancora un integrale su tutte le normali normali di microfacet.
utilizzando θi e θo
Immagino che dovrei aggiungere una frase sugli angoli effettivamente utilizzati, perché la domanda che inizialmente mi ponevo non era solo "perché no αh"ma anche" perché θi e θo". Quindi per il popolo chiedersi se questo è corretto: No. È solo un'approssimazione.
Invece, possiamo modificare il termine opaco per essere una semplice approssimazione che cattura l'importante comportamento angolare qualitativo [...].
[SHI, p.46]
Discussione sul perché è così difficile da capire
Ora [DIS, p.14] e [PBR, p.100.184] hanno citato [SHI] e [ASH] su questo, dove [ASH] usa [SHI], quindi si riduce al modello di quest'ultimo. E visto che [DIS] e [PBR] sono pubblicazioni non scientifiche (anche se abbastanza ben ponderate), non posso criticare troppo, ma davvero, un modo migliore di citare documenti o una spiegazione aggiuntiva potrebbe aver aiutato e salvato me circa 2 settimane di pensiero, lettura e quasi inizio di un articolo sul perché (presumibilmente) tutti hanno torto.
Inoltre, nessuno dei due spiega davvero le loro approssimazioni diffuse, [PBR, p.193] menziona solo il tentativo di funzioni diverse fino a quando non ne vede una che gli piace.
Inoltre, [SHI, p.46] ha effettivamente citato [SCH, p.10f.] Che ha utilizzato l'interpolazione lineare tra F(αh) e 1−F(αh). Tuttavia, [SHI, p.46] lo ha citato in modo errato, hanno detto che ha usatoF(θi) e 1−F(αh). Supponendo questo, hanno ovviamente ragione nel pensare che [SCH] non sia un risparmio di energia, ma questo mi porta a crederloF(αh) e 1−F(αh)sarebbe. Il loro errore potrebbe essere derivato da loro usandoF(θi) loro stessi, non posso dire.
Letteratura
- [ASH] Un modello BRDF phong anisotropico, in Journal of Graphics Tools Vol. 5, n. 2, Michael Ashikhmin e Peter Shirley, 2000
- [SCH] Un modello BRDF poco costoso per il rendering basato sulla fisica, nel forum di computer grafica Vol. 13, n. 3, Christophe Schlick, 1994
- [SHI] A Practitioners 'Assessment of Light Reflection Models, in the Fifth Pacific Conference on Computer Graphics and Applications, 1997. Atti, Peter Shirley, Helen Hu, Brian Smits ed Eric Lafortune, 1997
- [DIS] Shading a base fisica a Disney, al corso SIGGRAPH 2012: Shading a base fisica nella produzione di film e giochi, Brent Burley, 2012
- [HEI] Comprensione della funzione di mascheramento dell'ombreggiatura nei BRDF basati su Microfacet, nel Journal of Computer Graphics Techniques Vol. 3, n. 2, Eric Heitz, 2014
- [PBR] Illuminazione diffusa PBR per GGX + Smith Microsurfaces, a GDC2017, Earl Hammon Jr., 2017