Perché il mezzo vettore non viene utilizzato nei calcoli diffusi di Fresnel BRDF?


8

Attualmente sto lavorando con la presentazione PBR dell'illuminazione diffusa di Earl Hammon Jr per GGX + Smith Microsurfaces (ora menzionata come [PBR, p.XYZ] e ho letto (tra gli altri) Brent Burley's Physically-Based Shading at Disney (ora menzionato come [DIS , p. XYZ] per ottenere un buon componente BRDF diffuso. Sono bloccato nel combinare i due con il termine di Fresnel.

Breve introduzione per vettori e angoli mentre li uso:

  • ωi è il vettore leggero
  • ωo è il vettore vista
  • ωn la macro geometria è normale

  • θi è l'angolo tra ωi e ωn

  • θo è l'angolo tra ωo e ωn
  • θh è l'angolo tra ωn e ωh
  • αhi è l'angolo tra ωi e ωh
  • αho è l'angolo tra ωo e ωh (questa distinzione è per chiarimento)
  • αh è uno degli angoli αhi, αho, poiché sono uguali

ora dato quello rs è il termine BRDF del componente speculare senza il fattore di Fresnel e rd di conseguenza il termine del componente diffuso senza roba fresnel, il fattore fresnel è scritto come F(angle). [PBR, p.105] menziona che la luce diffusa viene trasmessa due volte, una volta dentro e una volta fuori. Pertanto, il componente Fresnel deve essere moltiplicato due volte. [PBR, p. 106] continua dicendo che le leggi di Fresnel sono simmetriche, il che significa che entrare e uscire è indipendente dalla direzione (cioè non importa che una volta che andiamo nel materiale dall'aria e una volta che andiamo nell'aria). Ora suppongo (perF1 è Fresnel per entrare e F2 è per Fresnel che lascia il materiale) da usare

(1F1(αhi))(1F2(αho))

F1 e F2 hanno la stessa funzione e αhi e αho hanno lo stesso angolo, quindi

(1F(αh))2

Ciò porterebbe a un brdf f:

f=F(αh)rs+(1F(αh))2rd

Ma entrambi [PBR, p.113] e [DIS, p.14] usano

f=F(αh)rs+(1F(θi))(1F(θo))rd

così come il documento originale per utilizzare questo tipo di calcolo di Shirely et al. 1997. Semplicemente non capisco, perché cambiano dagli angoli di microfacet agli angoli di macro? Gli angoli del microfacet conducono alla conversazione energetica

F[0,1] (1F)[0,1] (1F)2[0,1] e (1F(αh))>=(1F(αh))2)

dovrebbe essere reciproco

f(θi,θo)=F(αhi)rs+(1F(αhi))(1F(αho)rd=F(αh)rs+(1F(αh))2rd=F(αho)rs+(1F(αho))(1F(αhi))rd=f(θo,θi)

e quindi soddisfare i requisiti BRDF. L'angolo del microfacet è usato per il termine speculare, quindi è la cosa più sensata interpolare tra componente speculare e componente diffuso (ignorando il fatto di due trasmissioni per questo argomento). Invece, [PBR, p.113] e [DIS, p. 14] metti ilθh in un calcolo di rugosità e lasciarlo piuttosto inspiegabile.

Inoltre, per la mia confusione al riguardo, nelle diapositive della spiegazione [PBR, p.187] usa il prodotto punto ωhωo (e quindi il αhoangolo) e successivamente [PBR, p. 191] anche il prodotto puntoωhωi (αhi).

Risposte:


5

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=ΩρmDGcos(α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=FDG4cos(θ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. (1F(α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 1F 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+(1F(αh))rdk

Con k essere scelto, tale che

rdk=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 1F(αh). Tuttavia, [SHI, p.46] lo ha citato in modo errato, hanno detto che ha usatoF(θi) e 1F(αh). Supponendo questo, hanno ovviamente ragione nel pensare che [SCH] non sia un risparmio di energia, ma questo mi porta a crederloF(αh) e 1F(α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

1

Stiamo effettivamente esaminando quel documento per il nostro modello GGX BRDF metallic & edge_tint e abbiamo individuato un problema cruciale.

Hammon sta ancora usando l'approssimazione di Fresnel Schlick per la sua ray-trace di campo in microfacet che in realtà funziona solo per dielettrici (e conduttori ma con un hack).

Ma abbiamo fatto tutto il possibile su Fresnel (scartando la polarizzazione) e facendo il calcolo completo, permettendoci di impostare F0=0 quando non desideriamo affatto speculare su una superficie.

https://github.com/Crisspl/IrrlichtBAW/commit/914b50d7238fc4a30f23fc2a4ea570e467f4ab75#r34031272

Il problema è che Schlick cade a pezzi F0<0.02, quindi la GGX diffusa sarebbe troppo scura per quei materiali (perché sta ancora assumendo una bassa trasmittività agli angoli dell'occhio).

A parte questo, qualcosa che mi puzza è l'uso di DIS e PBR (1F(θi))(1F(θo)) che è un'approssimazione a somma divisa (fresnel con facet medio normale) invece del calcolo corretto che sarebbe la media ponderata di fresnel con ogni facet normale possibile, ponderato ovviamente dalla normale funzione di distribuzione.

In PBR il smoothcomponente potrebbe rimanere così com'è (tranne per il fatto che Schlick avrebbe bisogno di essere sostituito da Fresnel corretto) ma mi chiedo cosa roughe multidovrebbe diventare con unF0<0.02 .

Immagino che roughprobabilmente cambierebbe molto poco, ma abbastanza da fare la differenza (dal momento che conα=1 GGX NDF è una costante) se F0=0.

Spero di poter inviare un'e-mail a E. Hammon e vedere se la simulazione può essere rieseguita per l'intero Fresnel e l'intervallo IoR (F0) esteso, 1,0 (0,0) incluso.

EDIT: Seb. Lagarde ha anche la stessa preoccupazione che ho fatto per il Fresnel usato http://openproblems.realtimerendering.com/s2017/02-PhysicallyBasedMaterialWhereAreWe.pdf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.