Pourquoi H (blinn) est-il utilisé à la place de R (phong) dans l'ombrage spéculaire?

22

Je ne trouve nulle part une bonne raison à cela. Le vecteur de réflexion utilisé en phong a une base simple en physique. Mais le demi-vecteur utilisé dans blinn n'a apparemment aucune base rationnelle et ne constitue pas une réflexion appropriée. Et pourtant, il est utilisé dans toutes les fonctions d'ombrage dites "physiques". S'il existe une bonne base physique pour cela, je voudrais savoir.

Ce que j'ai pu trouver sont quelques raisons:

C'est plus rapide - les informations sont mitigées à ce sujet, mais cela aurait quand même été une excellente raison ... en 1998.

Il gère mieux des angles supérieurs à 90 degrés - pour autant que je sache, la seule raison à cela est que le terme phong a été mal utilisé. Le produit scalaire de la réflexion et de la vue donne un angle compris entre -1 et +1. Habituellement, cet angle est fixé à 0 à 1, c'est la cause directe du problème à 90 degrés. Re-normalisez l'angle au lieu de le serrer et vous obtenez la couverture complète à 180 degrés. Je refuse de croire qu'une simple opération x * 0,5 + 0,5 a échappé au monde graphique depuis 40 ans.

il gère mieux les bords - Le "problème" de bord existe également dans la solution blinn, à un moindre degré. La cause principale est une simulation incorrecte de l'éclairage de zone au niveau du terminateur, qui devrait être essentielle pour tout shader "à base physique". Mais même dans des situations plus simples, une fonction sigmoïde peut approximer correctement une ligne de terminaison souple. La multiplication en un terme lambert est incorrecte car elle atténue le terme spéculaire de manière incorrecte, cela pourrait annuler un terme de Fresnel et conduire à d'autres erreurs.

Il a de longues réflexions sur le bord - Il me semble que si les réflexions anisotropes peuvent être réalistes, le blinn n'est pas la bonne façon de les mettre en œuvre, car elles n'apparaissent qu'au bord. Ce n'est qu'une heureuse coïncidence qu'une erreur dans le terme H semble réaliste.

Aucune de ces raisons n'est satisfaisante, je veux régler cette folie.

Je tiens à préciser que je ne parle pas spécifiquement de blinn et de phong , mais plutôt des composants vectoriels H et R, qui sont utilisés comme base pour ces shaders ainsi que pour d'autres.

BmB
la source

Réponses:

24

Pour des surfaces parfaitement réfléchissantes, le modèle Phong a du sens. Cependant, d'où vient le n dans (RV) ^ n du modèle de Phong pour l'approximation des surfaces plus rugueuses? Où est la théorie selon laquelle vous devez élever le résultat du produit scalaire à la puissance, sauf qu'il semble simplement donner empiriquement le résultat approprié?

Pour le modèle de Blinn, il existe une théorie des microfacets basée physiquement pour prendre en charge toutes les composantes de l'équation et il existe également des preuves empiriques que le modèle se rapproche plus des surfaces du monde réel (mais pas parfaitement). Le demi-vecteur dans le modèle de Blinn est utilisé comme entrée dans la fonction de distribution normale (NDF), qui est une approximation de la façon dont les microfacets sont distribués autour de la normale de surface en fonction de la rugosité de surface. C'est-à-dire que lorsque le vecteur H pointe vers la direction normale, la valeur est la plus élevée car la plupart des microfacets pointent vers cette direction, et la probabilité est diminuée en conséquence lorsque l'angle entre la normale et le vecteur H augmente.

Le modèle de Blinn n'est cependant pas parfait du tout et il ne prend pas par exemple en compte le terme de géométrie du modèle de microfacet (c'est-à-dire l'observation et le masquage de microfacets dont l'importance augmente dans les angles de pâturage).

JarkkoL
la source
Je ne parle pas de l'implémentation spécifique de phong qui n'a en effet aucune base physique. Mais je ne vois pas comment la théorie des microfacets supporte mieux H que R comme base pour un vecteur de réflexion. Aucun modèle d'ombrage n'est supporté empiriquement, chacun échoue à reproduire des matériaux réels selon l'addie "Validation expérimentale de BRDF" 2005. Il me semble que les microfacets sont modélisés en phong via le produit scalaire R · V, qui peut servir de base pour une mise en évidence plus correcte physiquement soit par une fonction de remappage ou une rampe. Une fonction de puissance est tout simplement le remappage le plus simple et le plus incorrect.
BmB
2
@BmB Non, les microfacets ne sont pas "modélisés en phong" mais utilisent la distribution de probabilité des microfacets définis avec le NDF, qui est "échantillonné" avec le vecteur H. Le NDF est généralement symétrique par rapport à la normale (isotrope / anisotrope), il est donc logique d'utiliser le vecteur H pour cela. Je l' ai dit , il y a des preuves empiriques que Blinn modèle plus près se rapproche de matériaux du monde réel que Phong.
JarkkoL
Toute réflexion qui ne se trouve pas le long du vecteur de réflexion n'est pas une réflexion miroir parfaite. Le produit scalaire produit une valeur de réflectance pour des angles qui ne sont pas parfaits. Nécessairement, ceux-ci doivent être produits par des microfacets. Le produit scalaire modélise donc les microfacets. Un simple point produit une distribution linéaire. Mais la distribution peut être modélisée par n'importe quelle fonction avec R aussi bien que H. Cela n'explique rien sur la validité de H sur R.
BmB
1
@BmB Je vous suggère de lire sur la théorie des microfacets et en particulier sur la partie NDF pour comprendre le concept. Cela vous aidera à obtenir la réponse à votre question.
JarkkoL
1
Vous devriez ouvrir une nouvelle question sur les microfacets et le NDF car il y a évidemment beaucoup de choses que vous ne comprenez pas sur ces concepts et les commentaires ne sont pas le bon endroit pour les expliquer.
JarkkoL
6

En fait, je pense que vous avez vous-même énuméré les raisons pour lesquelles Blinn est la valeur par défaut par rapport à Phong.

Chaque raison que vous avez mentionnée là-bas est, en fait, un domaine où Blinn se révèle supérieur à Phong.

Dans l'ensemble, tout cela fait de Blinn un meilleur défaut que Phong.

Blinn est-il parfait? Est-ce mieux que Phong?

Non.

Mais il est un défaut raisonnable. N'hésitez pas à remplacer Phong par Blinn dans n'importe quel rendu / shader que vous écrivez.

John
la source
D'accord, c'est exactement ça. Aucun des deux modèles n'est parfait. L'approximation de Blinn était avant tout une optimisation des performances à l'époque, car le calcul du demi-angle est beaucoup moins cher. Il s'est avéré que la plupart du temps, il semble mieux aussi.
Damon
-2

J'ai découvert la raison pour laquelle le vecteur H devait être utilisé. Malheureusement, ce n'est pas la façon dont il est utilisé dans la plupart des modèles d'ombrage, ce qui peut être conclu comme incorrect.

Pour un ombrage basé physiquement, la lumière réfléchie doit obéir aux équations de Fresnel. (La plupart des shaders "à base physique" ne le font pas) Les microfacets doivent également obéir aux équations de Fresnel, qui dépendent de l'angle d'incidence de la lumière ainsi que de l'indice de réfraction de l'interface pour produire un résultat correct.

Selon la loi de réflexion, l'angle d'incidence doit être reflété par l'angle de réflexion le long de la normale de surface. Pour qu'un rayon de lumière ait frappé la caméra - ce que nous savons qu'il a fait - il doit avoir été réfléchi par la lumière - dont nous connaissons la direction. Ainsi, la normale de surface doit par déduction être l'axe du miroir pour ces deux directions. Cela nous donne le demi-vecteur H qui est entre eux. Calculé en normalisant la somme des deux.

Maintenant, en calculant l'angle entre la direction de la lumière L et le demi-vecteur H, nous acquérons l'angle d'incidence de la réflexion spéculaire d'un microfacet et pouvons l'atténuer correctement en utilisant le terme de Fresnel.

Notez que la direction de la vue est égale à R pour ce microfacet, H n'est pas un terme de réflexion. Blinn, Cook, Torrance et Sparrow peuvent le sucer. Phong et Fresnel avaient raison.

BmB
la source
Le terme de Fresnel fait partie de l'équation BRDF du microfacet et le microfacet individuel n'en tient pas compte car ils sont modélisés comme des réflecteurs parfaits. De plus, vous ne calculez pas l'angle entre les vecteurs L et H mais les vecteurs N et H. Cela devrait vous donner une idée de la raison pour laquelle H est utilisé. Vous avez besoin d'un peu plus de connaissances sur le sujet pour conclure qui avait raison ou "plus raison";)
JarkkoL
Un microfacet d'un matériau a les mêmes propriétés que le matériau. Par conséquent, un microfacet d'un réflecteur imparfait ne peut pas être lui-même un réflecteur parfait. Votre logique est malsaine et inutile. N point H n'a aucune signification physique.
BmB
4
Non, ce n'est pas ainsi que fonctionne le modèle microfacet. Ma logique est parfaitement solide, comme peut le confirmer toute personne qui comprend même les bases du modèle microfacet. Chaque microfacet est un réflecteur parfait (c'est-à-dire optiquement plat) et la réflexion imparfaite d'un matériau provient de la variance des normales du microfacet telles que définies par le NDF. Votre persévérance à défier des conseils parfaitement valables est plutôt amusante;)
JarkkoL
Vous n'avez donné aucun conseil, tout ce que vous avez fait, c'est de continuer à affirmer que vous avez raison sans rien pour le soutenir et à lancer des insultes. H est la normale d'un microfacet, pas la réflexion. La réflexion peut être calculée avec la normale. La physique de base n'est pas d'accord avec vous.
BmB