Realistischer Metal-Shader

13

Wie schafft man einen guten Metal-Shader?

Für verschiedene Metalle und sagen mehr oder weniger erodiert / rostig und so weiter.

Ich weiß, dass ein Unterschied zu gewöhnlichen Materialien darin besteht, dass Metall das spiegelnde Licht "färben" sollte, aber wenn ich das zum Beispiel mit Gold mache, sieht es nur "gelb" aus, überhaupt nicht metallisch.

Jede Hilfe dankbar!

Valmond
quelle
1
Ihre Frage klingt wie es ist etwas einfach und spezifisch, aber es ist wirklich nicht. Sie können einen metallischen Look nicht allein mit einem Shader reproduzieren. Um dies zu erreichen, sind geeignete Texturen erforderlich, daher benötigen Sie eine spiegelnde Glanztextur, wahrscheinlich eine Reliefkarte, wenn das Metall überhaupt unregelmäßig ist usw. Wenn das Metall in irgendeinem Maße poliert ist, müssen Sie die Umgebung (oder eine Karikatur davon) als widerspiegeln Gut. Es ist kein einfaches Problem mit "Here's Some Metal Shader Code".
Nicol Bolas
Betrachten Sie auch das Thema anisotroper Reflexionen, ein Phänomen, das normalerweise bei gebürsteten Metallen auftritt.
David Gouveia
@ David: Das sieht wirklich cool aus, vielleicht ist es im Moment ein bisschen übertrieben für mich, aber ich checke es auf jeden Fall aus und benutze es, wenn ich kann :-)
Valmond
@Nicol Danke für den Kommentar, die Verwendung von Texturen ist völlig in Ordnung. Mein "normaler" Shader besteht aus 3: Diffuse, Glow und einer Kontrollkarte mit Specular, Spec-Power und Reflection (von einer Würfelkarte)
Valmond,
Eine schnelle Suche ergibt viele verschiedene Metal-Shader und direkt aus dem Maul des Pferdes: developer.download.nvidia.com/shaderlibrary/webpages/…
Patrick Hughes

Antworten:

4

Ich habe kürzlich Shader für saubere und gebürstete Metalle für mein laufendes Spiel erstellt und bin mit den Ergebnissen ziemlich zufrieden.

Sauberes Metall: Das wichtigste Merkmal in meinen Experimenten waren die Umgebungsreflexionen mit Würfelkarten. Ich habe sie in Echtzeit-Rendering-to-Texture-Umgebungen implementiert, aber auch statische Bilder liefern oft gute Ergebnisse und es ist einfacher, sie zu verwischen. Das zweitwichtigste Merkmal war der Fresnel-Effekt, der die Silhouetten der Objekte verbessert. Dies gibt zum Beispiel einen runderen Look für Bälle. Eine spiegelnde Beleuchtung ist nicht unbedingt erforderlich, da die Würfelkarte die Highlights direkt bereitstellen kann. HDR-Rendering ist auch wichtig, damit die Cube-Map-Reflexionen gut aussehen.

Gebürstetes Metall: Bei gebürsteten Metallen erzielen Sie recht einfach gute Ergebnisse, wenn Sie eine Bürstentextur wie diese verwendenzusammen mit anisotroper Beleuchtung. Für anisotrope Beleuchtung finden Sie Tutorials aus dem Internet, aber ich habe meine eigenen implementiert, indem ich Blinn-Phong als Basis verwendet habe, aber aus dem Halbvektor habe ich 80% der Tangentenrichtung eliminiert. Dies bedeutet, dass Sie Tangenten oder Bitangenten zusätzlich zu Normalen in Ihren Modellen benötigen. Die Umgebungsreflexionen sind für gebürstetes Metall schwierig. Sie können von der Würfelkarte ausgehend von der Tangente / Bitangente aus mehreren Richtungen abtasten. Für gute Ergebnisse benötigen Sie jedoch möglicherweise viele Beispiele. Dies ist jedoch nicht unbedingt erforderlich, da die Textur und anisotrope Beleuchtung mit mehreren Lichtquellen bereits sehr gut aussieht. Das Endergebnis sieht in meinem Fall so aus:

Material aus gebürstetem Metall

msell
quelle
6

Wie Nicol in seinem Kommentar sagte, gibt es eine Menge Dinge, die in einen hochwertigen Metal-Shader einfließen. Für die besten Ergebnisse Ihrer Renderer Bedürfnisse zu Gamma-korrekt und verwenden physikalisch basierten Shading - Modelle (siehe insbesondere die beiden Papiere von Naty Hoffman zu diesem Link).

Unter diesen Umständen besteht der typische Weg, ein Metallmaterial herzustellen, darin, eine sehr geringe oder nicht vorhandene diffuse Farbe und ein hohes spiegelndes Reflexionsvermögen im Bereich von 50% bis 100% (im linearen Farbraum) zu haben. Wie Sie bereits bemerkt haben, ist das Spiegelbild bei einigen Metallen farbig.

Da das Metall nur spiegelnd oder nicht diffus erscheint, ist die Reflexion äußerst wichtig. Wenn es nur spiegelnd Punktlichter reflektiert, erhalten Sie das Aussehen eines schwarzen Materials, da der Rest der Umgebung fehlt (selbst ein sehr raues Metall reflektiert ein unscharfes Bild seiner Umgebung). Eine typische Methode, um mehr Reflexion zu erzielen, ist die Verwendung einer Cubemap. Realistische Reflexion in Echtzeitgrafiken ist jedoch ein großes Thema, und es gibt viele verschiedene Ansätze.

Nathan Reed
quelle
Danke, genau das habe ich gesucht! Wenn ich Reflexionen mit einer Würfelkarte mache, sollte ich vielleicht eine Art Umgebungsbeleuchtung als sehr hohe spiegelnde Beleuchtung verwenden?
Valmond
@Valmond Ich bin mir nicht sicher, was Sie unter "Verwenden einer Art Umgebungsbeleuchtung als sehr hochglänzende Beleuchtung" verstehen. Alles, was ich damit meinte, war, dass die Spiegelreflexion sowohl Lichtquellen als auch alles andere in der Umgebung (addiert) umfassen sollte, wobei der Teil "alles andere" als Cubemap implementiert werden könnte. Eine typische Methode besteht darin, mehrere verschwommene Cubemaps für verschiedene Rauheiten zu erstellen, wie hier gezeigt .
Nathan Reed