Pourquoi le demi-vecteur n'est-il pas utilisé dans les calculs de Fresnel BRDF diffus?

8

Je travaille actuellement avec Earl Hammon Jr's Presentation PBR Diffuse Lighting for GGX + Smith Microsurfaces (maintenant mentionné comme [PBR, p.XYZ] et j'ai lu (entre autres) l' ombrage à base physique de Brent Burley à Disney (maintenant appelé [DIS , p. XYZ] pour obtenir un bon composant BRDF diffus. Je suis coincé à combiner les deux avec le terme de Fresnel.

Brève introduction aux vecteurs et aux angles tels que je les utilise:

  • ωi est le vecteur de lumière
  • ωo est le vecteur de vue
  • ωn est la macro géométrie normale

  • θi est l'angle entre ωi et ωn

  • θo est l'angle entre ωo et ωn
  • θh est l'angle entre ωn et ωh
  • αhi est l'angle entre ωi et ωh
  • αho est l'angle entre ωo et ωh (cette distinction est pour clarification)
  • αh est l'un des angles αhi, αho, car ils sont égaux

maintenant étant donné que rs est le terme BRDF du composant spéculaire sans le facteur de Fresnel et rd en conséquence, le terme du composant diffus sans la substance de Fresnel, le facteur de Fresnel est écrit comme F(angle). [PBR, p.105] mentionne que la lumière diffuse est transmise deux fois, une fois à l'intérieur et à l'extérieur. Ainsi, le composant de Fresnel doit être multiplié deux fois. [PBR, p. 106] poursuit en disant que les lois de Fresnel sont symétriques, ce qui signifie que l'entrée et la sortie sont indépendantes de la direction (c'est-à-dire que peu importe qu'une fois que nous entrons dans le matériau à partir de l'air et une fois que nous sortons dans l'air). Maintenant, je suppose (pourF1 est Fresnel pour entrer et F2 est que Fresnel quitte le matériau) à utiliser

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

F1 et F2 sont la même fonction, et αhi et αho sont le même angle, donc

(1F(αh))2

Cela conduirait à un brdf f:

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

Mais [PBR, p.113] et [DIS, p.14] utilisent

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

tout comme le papier original pour utiliser ce type de calcul par Shirely et al. 1997. Je ne comprends tout simplement pas, pourquoi changent-ils des angles microfacets aux angles macro? Les angles du microfacet conduisent à une conversation énergétique

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

cela devrait être réciproque

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)

et ainsi répondre aux exigences BRDF. L'angle microfacet est utilisé pour le terme spéculaire, c'est donc la chose la plus sensée pour interpoler entre composante spéculaire et diffuse (en ignorant le fait de deux transmissions pour cet argument). Au lieu de cela, [PBR, p.113] et [DIS, p. 14] mettez leθh dans un calcul de rugosité et laisser cela plutôt inexpliqué.

En plus de ma confusion à ce sujet, dans les diapositives d'explication [PBR, p.187] utilise le produit scalaire ωhωo (et donc le αhoangle) et plus tard [PBR, p. 191] également le produit scalaireωhωi (αhi).

Tare
la source

Réponses:

5

J'ai finalement trouvé une faille dans mon argumentation pour utiliser le demi-vecteur pour la partie diffuse.

tl; version dr:

αhi et αhone sont pas égaux, cette hypothèse ne fonctionne que pour la partie spéculaire. Par conséquent, la conservation d'énergie n'est pas donnée.

Plus correct: par définition αhi=αho, mais vous n'êtes pas autorisé à les utiliser dans l'équation, vous devez utiliser les normales du microfacet au lieu des demi-vecteurs. La microfacette normale et le demi-vecteur ne sont cependant généralement pas égaux.

version longue:

Le BRDF diffus (comme le spéculaire) est une intégration sur toutes les normales de microfacet possibles. Le formulaire BRDF généralisé est:

(1)

f=ΩρmDGcos(αhi)cos(αho)cos(θi)cos(θo)

ρm est le comportement de la lumière lorsqu'elle atteint un microfacet, D est la fonction de distribution normale, G est la fonction géométrique et le reste est la normalisation [PBR, p.16-25] [HEI, p.61f.]

Maintenant, pour le BRDF spéculaire, le comportement est une réflexion parfaite. Cela signifie que seuls les microfacets où le microfacet normalωm est égal au demi-vecteur ωh entre la lumière (ωi) et afficher (ωo) la direction réfléchit la lumière de la direction de la lumière vers la direction de la vue. Mathématiquement, cela se traduit par une fonction Dirac Deltaδ(ωh). La quantité de lumière réfléchie est déterminée par FresnelF. Avec la prise en compte des changements de domaine d'intégration [PBR, p.31-41], cela conduit à (ρm,s étant la réaction spéculaire spécifique des microfacets pour la partie spéculaire):

(2)

ρm,s=δ(ωh)F4αhiαho

Branchez-le dans (1) et vous intégrez sur n'importe quelωm, mais la fonction delta dirac vous fait ignorer tout ce qui ωmωh. C'est la bonne chose à propos de ces fonctions delta dirac, le "annuler" l'intégrale. Par conséquent, vous arrivez au BRDF connu bien connu [PBR, p.43]

(3)

fs=FDG4cos(θi)cos(θo)

et ici, vous pouvez assumer αhi=αho. La partie de Fresnel fait de ce côté une interpolation linéaire (vu que c'est le rapport de lumière réfléchie spéculairement).

De l'autre côté cependant, vous avez toujours une intégrale et vous ne pouvez pas "l'annuler" avec quoi que ce soit. Laisserθmi être l'angle entre la normale de microfacet et le dir de lumière, theta_mo entre la normale de microfacet et le dir de vue (par opposition à αhi et αho, qui sont spécifiquement définis pour le demi-angle!). Cela signifie 2 choses importantes:

(4)

θmiαhi=αh=αhoθmoωmωh

et ρm,d (comme la réaction diffuse de la lumière en atteignant les microfacets) dépend de Fresnel, il ne peut utiliser que des parties non réfléchies, mais vous ne pouvez pas simplement supposer que CHAQUE microfacet diffusley normal réfléchit toute la lumière qui n'a pas été réfléchie spéculairement (c.-à-d. (1F(αh))).

Donc, le problème est maintenant, vous avez un côté de cette interpolation linéaire étant le BRDF spéculaire solvable analytiquement sans intégrale. De l'autre côté, vous avez le facteur d'interpolation au sein de l'intégrale, et donc vous l'utiliseriez pour n'importe quelle microfacette normale. Ce n'est plus une économie d'énergie, si vous modélisezρm,d avec un terme lambertien.

Si vous parvenez à tirer le 1F partie de l'intégrale, alors et seulement alors vous pouvez utiliser le demi-vecteur pour les BRDF spéculaires et diffus, sinon vous devez le gérer différemment.

Si vous souhaitez toujours utiliser le demi-vecteur pour l '"interpolation de Fresnel", vous devez alors normaliser.

f=F(αh)rs+(1F(αh))rdk

Avec k étant choisi, de telle sorte que

rdk=1

Notez que rd comprend toujours une intégrale sur toutes les normales de microfacet possibles.

En utilisant θi et θo

Je suppose que je devrais ajouter une phrase sur les angles réellement utilisés, car la question que j'ai posée à l'origine n'était pas simplement "pourquoi pas αh"mais aussi" pourquoi θi et θo". Donc pour les gens qui se demandent si c'est correct: Non. C'est juste une approximation.

Au lieu de cela, nous pouvons modifier le terme mat pour être une simple approximation qui capture l'important comportement angulaire qualitatif [...].

[SHI, p.46]

Discussion sur la raison pour laquelle cela est si difficile à comprendre

Maintenant [DIS, p.14] et [PBR, p.100,184] ont cité [SHI] et [ASH] à ce sujet, où [ASH] utilise [SHI], donc cela se résume au modèle de ce dernier. Et vu que [DIS] et [PBR] sont des publications non scientifiques (bien que bien réfléchies), je ne peux pas trop les blâmer, mais vraiment, une meilleure façon de citer des articles ou une explication supplémentaire aurait pu aider et sauver moi environ 2 semaines de réflexion, de lecture et presque de commencer un article sur pourquoi tout le monde a (soi-disant) tort.

De plus, aucun d'eux n'explique vraiment leurs approximations diffuses, [PBR, p.193] mentionne juste d'essayer différentes fonctions jusqu'à ce qu'il en voie une qu'il aime.

De plus, [SHI, p.46] a en fait cité [SCH, p.10f.] Qui a utilisé l'interpolation linéaire entre F(αh) et 1F(αh). Cependant, [SHI, p.46] l'a mal cité, ils ont dit qu'il avait utiliséF(θi) et 1F(αh). En supposant cela, ils ont bien sûr raison de penser que [SCH] ne consomme pas d'énergie, mais cela m'amène à croire queF(αh) et 1F(αh)serait. Leur erreur pourrait provenir d'eux en utilisantF(θi) eux-mêmes, je ne peux pas dire.

Littérature

  • [ASH] Un modèle anisotrope de BRDF phong, dans Journal of Graphics Tools Vol. 5, no 2, Michael Ashikhmin et Peter Shirley, 2000
  • [SCH] Un modèle BRDF peu coûteux pour le rendu basé sur la physique, dans Computer Graphics Forum 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. Actes, Peter Shirley, Helen Hu, Brian Smits et Eric Lafortune, 1997
  • [DIS] Ombrage à base physique à Disney, au cours SIGGRAPH 2012: Ombrage à base physique dans la production de films et de jeux, Brent Burley, 2012
  • [HEI] Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs, in Journal of Computer Graphics Techniques Vol. 3, n ° 2, Eric Heitz, 2014
  • [PBR] PBR Diffuse Lighting for GGX + Smith Microsurfaces, au GDC2017, Earl Hammon Jr., 2017
Tare
la source
1

Nous examinons actuellement ce document pour notre propre modèle GGX BRDF métallique et edge_tint, et nous avons repéré un problème crucial.

Hammon utilise toujours l'approximation de Fresnel Schlick pour son tracé de rayons de champ microfacet qui en réalité ne fonctionne que pour les diélectriques (et les conducteurs mais avec un hack).

Mais nous avons tout fait sur Fresnel (rejet de la polarisation) et fait le calcul complet, nous permettant de définir F0=0 quand on ne souhaite pas du tout spéculaire sur une surface.

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

Le problème est que Schlick s'effondre pour F0<0.02, de sorte que le GGX diffus serait trop sombre pour ces matériaux (car il suppose toujours une faible transmittivité à des angles de vue).

Soit dit en passant, quelque chose qui me pue est que DIS et PBR utilisent (1F(θi))(1F(θo)) qui est une approximation à somme fractionnée (fresnel avec une facette moyenne normale) au lieu du calcul correct qui serait une moyenne pondérée de fresnel avec chaque facette normale possible, pondérée bien sûr par la fonction de distribution normale.

En PBR la smoothcomposante pourrait rester en l' état (sauf que le Schlick aurait besoin d'être remplacé par Fresnel appropriée) mais je me demande ce que roughet multidevrait devenir avec unF0<0.02 .

Je suppose que roughcela changerait probablement très peu, mais suffisamment pour faire la différence (car avecα=1 GGX NDF est une constante) si F0=0.

J'espère que nous pourrons envoyer un e-mail à E. Hammon et voir si la simulation pourrait être réexécutée pour Fresnel complet et la plage IoR (F0) étendue, 1.0 (0.0) inclus.

EDIT: Seb. Lagarde a également la même préoccupation que moi à propos du Fresnel utilisé http://openproblems.realtimerendering.com/s2017/02-PhysicallyBasedMaterialWhereAreWe.pdf

Devsh
la source