Shader métal réaliste

13

Comment créer un bon shader métal?

Pour différents métaux et dire plus ou moins érodé / rouillé et ainsi de suite.

Je sais qu'une différence par rapport aux matériaux ordinaires est que le métal devrait «colorer» la lumière spéculaire mais quand je le fais avec de l'or par exemple, il a juste l'air «jaune», pas métallique du tout.

Toute aide appréciée!

Valmond
la source
1
Votre question semble être quelque chose de simple et de spécifique, mais ce n'est vraiment pas le cas. Vous ne pouvez pas reproduire un look métallique avec un shader seul. Cela nécessite des textures appropriées, vous avez donc besoin d'une texture de brillance spéculaire, probablement une carte de relief si le métal est irrégulier, etc. Si le métal est poli à un degré quelconque, vous devez refléter l'environnement (ou une caricature de celui-ci) comme bien. Ce n'est pas un simple problème "voici du code de shader métallique".
Nicol Bolas
Regardez aussi le sujet des réflexions anisotropes, un phénomène généralement observé dans les métaux brossés.
David Gouveia
@David: Cela a l'air vraiment cool, c'est peut-être un peu exagéré pour moi en ce moment mais je le vérifie et l'utilise si je peux :-)
Valmond
@Nicol Merci pour le commentaire, je suis tout à fait d'accord avec l'utilisation de textures, mon shader `` normal '' est composé de 3: Diffuse, Glow et une carte de contrôle comprenant Specular, Spec-power et la réflexion (à partir d'une carte de cube)
Valmond
Une recherche rapide révèle de nombreux shaders métalliques différents et directement de la bouche du cheval: developer.download.nvidia.com/shaderlibrary/webpages/…
Patrick Hughes

Réponses:

4

J'ai récemment créé des shaders pour les métaux propres et brossés pour mon jeu en cours et je suis assez satisfait des résultats.

Métal propre: La caractéristique la plus importante de mes expériences était les réflexions de l'environnement avec les cartes de cube. Je les ai implémentés avec des environnements de rendu en texture en temps réel, mais les images statiques donnent souvent de bons résultats et il est plus facile de les estomper. La deuxième caractéristique la plus importante était l'effet Fresnel, ce qui améliore les silhuettes des objets. Cela donne par exemple un look plus rond pour les balles. Un éclairage spéculaire n'est pas nécessairement nécessaire, car la carte du cube peut fournir les reflets directement. Le rendu HDR est également important pour que les réflexions de la carte du cube soient bonnes.

Métal brossé: pour les métaux brossés, vous obtenez assez facilement de bons résultats en utilisant une texture de pinceau, quelque chose comme ceci, avec éclairage anisotrope. Pour l'éclairage anisotrope, vous pouvez trouver des tutoriels sur le Web, mais j'ai implémenté le mien en utilisant blinn-phong comme base, mais du demi-vecteur, j'ai éliminé 80% de la direction tangente. Cela signifie que vous avez besoin de tangentes ou de bitangentes en plus des normales dans vos modèles. Les reflets de l'environnement sont délicats pour le métal brossé. Vous pouvez échantillonner à partir de plusieurs directions à partir de la carte du cube en fonction des directions tangentes / bitangentes, mais vous aurez peut-être besoin de nombreux échantillons pour obtenir de bons résultats. Cependant, cela n'est pas nécessairement nécessaire, car la texture et l'éclairage anisotrope avec plusieurs sources de lumière sont déjà assez agréables. Le résultat final dans mon cas ressemble à ceci:

Matériau en métal brossé

msell
la source
6

Comme l'a dit Nicol dans son commentaire, il y a beaucoup de choses qui entrent dans un shader métallique de haute qualité. Pour de meilleurs résultats, votre moteur de rendu doit être gamma-correct et utiliser des modèles d'ombrage à base physique (voir en particulier les deux articles de Naty Hoffman sur ce lien).

Compte tenu de ces éléments, la façon typique de fabriquer un matériau métallique est d'avoir une couleur diffuse très faible ou inexistante et une réflectance spéculaire élevée, allant de 50% à 100% (dans l'espace colorimétrique linéaire). Comme vous l'avez noté, pour certains métaux, le spéculaire sera coloré.

Parce que l'apparence du métal est entièrement spéculaire avec peu ou pas de diffusion, la réflexion sera extrêmement importante. S'il ne reflète que spéculairement des lumières ponctuelles, vous obtiendrez l'apparence d'un matériau noir car le reste de l'environnement est manquant (même un métal très rugueux reflétera une image floue de son environnement). Une manière typique d'obtenir plus de réflexion est d'utiliser un cubemap. La réflexion réaliste dans les graphiques en temps réel est un sujet énorme, cependant, et il existe de nombreuses approches différentes.

Nathan Reed
la source
Merci, c'est exactement ce que je cherchais! Comme je fais des réflexions avec une carte en cube, peut-être devrais-je utiliser une sorte d'éclairage environnemental comme un éclairage spéculaire très élevé?
Valmond
@Valmond Je ne sais pas trop ce que vous entendez par "utiliser une sorte d'éclairage environnemental comme un éclairage spéculaire très élevé". Tout ce que je voulais dire, c'est que la réflexion spéculaire devrait inclure à la fois les sources de lumière et tout le reste de l'environnement (additionnées), où la partie «tout le reste» pourrait être implémentée sous forme de cubemap. Une manière typique consiste à générer plusieurs cubemaps floues pour différentes rugosités comme illustré ici .
Nathan Reed