Comment puis-je créer un shader qui reproduira cet effet d'éclairage sur le terrain?

8

Voir la lumière tomber de la collonade sur les pavés réfléchissants

Notez comment la réflexion est la plus forte là où l'angle entre le soleil, le sol et le viseur est le plus aigu

Remarquez la manière dont la principale source lumineuse de chaque image se reflète sur le sol, en fonction de la distance entre la source lumineuse et le spectateur (?).

Est-ce une carte spéculaire (bumpée)? L'effet est visible partout dans World of Warcraft; Je m'en souviens particulièrement sur la neige de Dun Morogh et sur les rives du lac Darrowmere. Il faut regarder directement vers le soleil. L'effet est également commun à la surface de l'eau en RL et en CG. Plus précisément, je veux créer l'effet là où la réflexion est plus intense sur la surface du sol, plus près de la source de lumière, et tombe à mesure qu'elle s'approche du spectateur.

Ingénieur
la source
2
phong sur une surface cartographiée par bosse
ratchet freak

Réponses:

14

J'imagine que si j'allais construire un tel shader, je commencerais par certains phénomènes.

D'abord, la lumière du soleil est directionnelle, ce qui signifie qu'elle n'a ni position ni atténuation.

Deuxièmement, la composante diffuse est simplement calculée en prenant un produit scalaire entre la direction du soleil et les normales de surface, l'ajout d'une cartographie normale pourrait ajouter au détail.

La partie délicate est la modélisation de la composante spéculaire directionnelle du soleil. Donc, pour obtenir un effet similaire, je le diviserais en petits problèmes:

  • Le premier est les microfacets de la surface qui peuvent être simulés en utilisant n'importe quelle variation de bosse ou de cartographie normale, cela peut être appliqué à la fois à la composante diffuse et à la composante spéculaire.
  • La deuxième partie est la répartition inégale de l'éclairage spéculaire. Cela peut être fait en utilisant une sorte de cartes spéculaires.
  • Maintenant, la partie la plus délicate est la carte spéculaire directionnelle qui peut être obtenue en utilisant le modèle d'éclairage Ward Anisotropic , qui vous donne deux paramètres pour contrôler l'anisotropie de la réflexion spéculaire, à savoir Ax, Aydans l'équation Wards suivante.

Équation de Ward

Où:

  • Le terme spéculaire est nul si le point ( N , L ) <0 ou le point ( N , R ) <0.
  • Le vecteur R est la réflexion miroir du vecteur de lumière sur la surface.
  • L est la direction du point de surface à la lumière.
  • H est la direction du demi-angle.
  • N est la surface normale.
  • X et Y sont deux vecteurs orthogonaux dans le plan normal qui spécifient les directions anisotropes, les vecteurs tangents et bitangents peuvent être utilisés comme X,Yvecteurs, surtout que l'espace tangent est si commun dans les graphiques informatiques qui pourrait être calculé dans n'importe quel moteur (généralement calculé basé sur les coords de texture).

entrez la description de l'image ici

Remarquez dans l'image, comment l'éclairage spéculaire est directionnel contrairement à la lumière spéculaire Phong commune. Voici un article sur le modèle Ward et comment obtenir différents effets. EDIT Pour plus d'informations sur l'aptitude de BRDF à réduire l'intensité lumineuse plus près du spectateur, cliquez ici .

Spéculaire anisotrope de Ward

Enfin, deux autres points (facultatifs) qui, je suppose, pourraient ajouter à l'image finale,

  • Tout d'abord, je suis sûr que l'occlusion ambiante aidera à obtenir des résultats plus crédibles.
  • La seconde est que la mise en œuvre d'une sorte de réflexion de Fresnel pourrait ajouter un bel effet à l'image, en particulier dans les scènes d'eau et de glace.
concept3d
la source
1
+1 Bonne réponse concept3d, et je suis un peu désolé que vous ayez fait tout l'effort pour l'écrire - @JoshPetrie a modifié le titre de ma question de "QUOI (est-ce shader)" en "COMMENT (est-ce que je le construis) ". Vos efforts peuvent donc être un peu vains, mais cela semble avoir fait du bien à votre représentant, et c'est une bonne ressource.
Ingénieur
@NickWiggill pas de problème, il restera ici comme une bonne ressource :)
concept3d
@JoshPetrie même si la modification a invalidé ma réponse, la question dans sa forme actuelle est un peu plus raisonnable.
concept3d
1
Je vais plutôt accepter le vôtre. La raison en est que vous mentionnez BRDF et c'est exactement le genre de concept que j'avais en tête, et après l'avoir lu, je peux voir que c'est précisément ce dont j'ai besoin. J'ai édité votre réponse avec plus de détails sur BRDF.
Ingénieur
1
@NickWiggill Merci d'avoir ajouté plus de détails. Plus d'infos n'est jamais mauvaise :)
concept3d
3

La réflexion elle-même n'est que la réflexion spéculaire que vous obtenez en sortie des fonctions de votre modèle d'éclairage spécifique.

Il existe de nombreux modèles d'éclairage différents de niveaux de complexité différents qui produiront une forme de réflexion similaire à celle-ci, mais un aspect similaire à celui-ci peut déjà être obtenu avec un modèle d'éclairage blinn-phong à os nus simple , qui est (maintenant) probablement le plus modèle d'éclairage de base utilisé par les moteurs graphiques, et très probablement également utilisé par World of Warcraft.

Il ne sera pas physiquement correct et complètement égal à vos images, mais il sera très similaire . L'exemple de Concept3D du modèle Ward est plus correct physiquement et fonctionne pour des types de surfaces plus complexes (à savoir, les matériaux où les bosses microscopiques dans leurs surfaces ne sont pas uniformément réparties, mais ont des distributions de probabilité différentes), mais je ne connais aucun exemple concret de rendus en temps réel qui l'utilisent, en raison de faibles gains en termes de qualité / performances.

En pratique, ces types de réflexions sur les surfaces sont complétés par des textures spéculaires / brillantes et normales supplémentaires, qui modifient respectivement la brillance / rugosité d'une surface et la direction des normales de la surface, qui sont toutes deux des entrées dans les équations d'éclairage. des modèles d'éclairage typiques. Cela est dû au fait que dans le monde réel, les propriétés physiques de la surface le plus souvent (sauf peut-être quelque chose comme le plastique ou un miroir) ne restent pas les mêmes sur toute la surface, mais peuvent varier énormément d'un pixel à l'autre.

TravisG
la source
D'accord, merci Travis. Prévoyez-vous qu'il y ait des problèmes avec l'utilisation de blinn + phong avec une sorte de texture de masque pour rendre les pixels uniquement lorsque cela est nécessaire sur le terrain, créant ainsi le grain sous-jacent à la réflexion spéculaire?
Ingénieur
Si ces pixels ne sont pas allumés du tout après avoir été jetés en raison de la texture du masque, cela semblera probablement faux / bizarre. La manière habituelle est en effet une combinaison d'une carte de relief et d'une carte spéculaire pour la surface qui modifie certaines des entrées de l'équation d'éclairage.
TravisG
0

Cartographie de relief spéculaire (cartographie normale) ou cartographie de parallaxe.

Celestis
la source
7
Compléter cela avec des preuves ou des références en ferait une bien meilleure réponse.
MichaelHouse