Master Material

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Master Material und für was man so etwas gebrauchen kann.
    Hier ein kleines Tutorial, was ein Master Material und seine Funktionen angeht.

    Ein Master Material ist ein Material, dass alle Funktionen als Parameter hat, und somit während des Spiels änderbar sind.
    Von einem Master Material werden wir alle Materialien, die wir in einer Szene anwenden, als Instanz nutzen.
    Das hat den Vorteil, dass wir nur einmal eine ShaderCompile Zeit haben und zum anderen wirkt es sich Positiv auf die Gesamt Performance aus.
    Es gibt verschiedene Meinungen darüber, ob dass ganze auch die DrawCalls senkt oder nicht.

    Artful3D scheint hier auch noch eine Info gefunden zu haben.

    Zitat Artful3D:
    „Das wesentliche beim Instancing, scheint zu sein, dass zwar die einzelnen Calls immer noch abgerufen werden,
    die "Füll- Informationen" jedoch kostengünstig aus einem bestehenden bestehenden Pool (Instance, Master Material etc. )
    bedient werden.Jetzt hat man zwar noch den nackten Call, der jedoch an sich relativ Informationsarm ist.“

    Es kann auf jeden Fall nicht schaden, sich das ganze einmal anzuschauen. Mein Master Material ist darauf ausgelegt, dass sich im Alpha Channel
    der Albedo Textur eine Emissive Map befindet und in einer extra Textur der Blaue Channel als Metalness der Grüne Channel als Roughness und Alpha als AO.
    Ihr könnt euch in z.B. In Photshop eine Placeholder Textur erstellen, oder einfach meine nehmen, die ich dann hier zur Verfügung stelle.

    Hier sind die Texturen zum Download, die ich für dieses Tutorial verwende: Texturen

    Wir starten mit einem einfachen Material „Rechtsklick im Content Browser und Material anklicken“. Als Namen MasterMaterial eingeben, oder was ihr sonst gerne hättet.
    Öffnet das Material und zieht die Placeholder Textur in den Material Editor.Danach Rechtsklick auf den Textur Sample Node und „Convert to Parameter“ anklicken.
    Den Parameter Namen ändern und einer Gruppe zuweisen. Für die Gruppe einfach bei Group das Feld anklicken und einen Namen Eintragen.
    In meinem Fall beides „Diffuse“.



    Als nächstes erstellen wir ein „Vector Parameter“. Entweder suchen wir den im Context Menü oder halten die
    Taste 4 gedrückt und machen einen Linksklick im Material Editor.Wählt man Methode 2 muss man hier auch wieder rechtsklick auf den node und in Parameter umwandeln.
    Danach Doppelklick auf den Diffuse Tint node und unter R, G, B und A jeweils eine 1 setzen, damit wir einen weisen Hintergrund haben.
    Hier geben wir auch wieder einen Namen ein, in meinem Fall „Diffuse Tint“ und bei Group klicken wir auf den kleinen Pfeil und
    nehmen hier die vorher erstellte Gruppe, also auch wieder „Diffuse“ Als nächstes nehmen wir einen Multiply node „Taste M halten und
    Linksklick im Material Editor“ und verbinden beide. In A die Diffuse bzw. Albedo Map und in B Diffuse Tint. Das ganze verbinden wir nun mit BaseColor.
    Mit Diffuse Tint, können wir später die Farbe der Albedo Textur anpassen. Wenn ihr alles gemacht habt, sollte das ganze so ungefähr aussehen.



    Als nächstes kümmern wir uns um das Setup für für Emissive.Wir erstellen wieder einen Vector Parameter, nennen das ganze EmissiveColor
    und erstellen eine neue Gruppe namens Emissive. Bei EmissiveColor Doppelklick und bei R, G, B jeweils eine 0 eintragen, damit wir einen schwarzen
    Hintergrund haben.Jetzt brauchen wir auch zum ersten mal einen Parameter, den wir jederzeit ändern und anpassen können.
    Dazu halten wir die S Taste gedrück und linksklick in den Material Editor.Wir nennen das ganze EmissivePower und packen es in die Emissive Group.
    Als nächstes benötigen wir 2 Multiply nodes.Im ersten node packen wir unter A den Alpha Channel aus unserer Diffuse Textur und in B packen wir EmissiveColor.
    Im 2ten Multiply node werden wir mit A die EmissivePower verbinden und unter B kommt der erste Mutliply node. Das ganze verbinden wir nun mit EmissiveColor
    Hier ein Screen wie das ganze nun aussehen sollte.



    Als nächstes kümmern wir uns um Metalness, Roughness und AO.Hier ziehen wir wieder unsere Placeholder Textur in den Editor, Convert to Parameter und nennen das
    ganze Metal/Rough/Alpha. Das ganze kommt unter die Gruppe Diffuse. Für Metal brauchen wir einen „Static Component Mask Parameter“,
    mit dem können wir den gewünschten Channel einer Textur ansprechen.Rechtsklick im Browser und einfach danach suchen. Als Namen geben wir MetalnessSelection
    ein und erstellen eine neue Gruppe mit dem Namen Metalness. Über den Kästchen wo ihr den Namen und Gruppe eintragen konntet, habt ihr nun eine Auswahl an Channels,
    welchen ihr nutzen möchtet. Hier bitte bei Default B einen haken setzen.



    Als nächstes brauchen wir wieder einen Scalar Parameter „S halten und links klicken“.
    Den nennen wir MetalnessStrength und packen ihn unter die Gruppe Metalness. Erstellt einen Multiply node, verbindet MetalnessSelection mit A und MetalnessStrength mit B.
    Das ganze dann mit Metallic verbinden. Roughness erstellen wir ähnlich, wir nehmen hier allerdings 2 Scalar Parameter. Nennt einen davon RoughnessMin und gebt eine DefaultValue von 0.1 ein
    und den anderen RoughnessMax mit DefaultValue 0.9. Packt die beiden unter den Gruppennamen Roughness. Jetzt brauchen wir noch einen Static Component Mask Parameter,
    nennen ihn Roughness Selection und stecken ihn in die Gruppe Roughness. Wir setzen hier einen haken bei Default G. Für Roughness benutzen wir einen Lerp Node, „L taste gedrückt halten und linksklick“.
    Unter A kommt RoughnessMin unter B RoughnessMax und unter Alpha kommt die RoughnessSelection.

    Für AO brauchen wir vorerst nur einen Mask Parameter. Nennt ihn AmbientOcclusion und erstellt eine Gruppe namens AO. Hier nehmen wir den Alpha Channel unserer
    Metal/Roughness Textur und verbinden das ganze mit Ambient Occlusion. Habt ihr soweit alles richtig gemacht, sollte das ganze so oder so ähnlich aussehen.



    Noch eine kleine Anmerkung zum Specular. Hier könnt ihr auch einfach einen Scalar Parameter nehmen und den Wert auf 0.5 setzen. Nennt ihn SpecularStrength
    und packt ihn in die gruppe Specular. Der Wert 0.5 scheint der Standard Wert der Engine zu sein.

    Für die Normal Map hab ich nichts besonderes.
    Hier die Placeholder Textur für die Normalmap reinziehen, auch wieder Convert to Parameter und den Namen Normal geben. Die Gruppe sollte demnach auch klar sein, Normal.
    Wir erstellen uns wieder einen Vector Parameter, Convert to Parameter, nennen diesen NormalStrength und packen ihn unter die Gruppe Normal.
    Doppelklick und als Wert bei R, G und A eine 1 eintragen und bei B 0.9.Wir brauchen auch hier wieder einen Multiply Node, verbinden A mit Normal und B mit NormalStrength.
    Das ganze wird mit Normal verbunden.



    Jetzt zum letzten Teil des Materials, UV Tiling.Wir steuern das Tiling über einen Vector Parameter, gleichnamigen bitte auch erstellen.
    Wir nennen ihn MainTiling und geben ihn die Gruppe TilingSettings.Da wir nur 2 Channels benötigen, brauchen wir als nächstes eine „Component Mask“.
    Hier bitte auch kontrollieren ob nur bei R und G ein haken ist.Das ganze verbinden wir nun mit einem Multiply Node in A.Eine letzte Sache brauchen wir noch, einen „Texture Coordinate“ Node.
    Den verbinden wir bei Multiply mit B. Vom Multiply Node aus, verbinden wir jeweils die Diffuse, Metal/Rough/Alpha und Normal Texture.



    So euer Master Material sollte soweit Fertig sein. Wir machen einen Rechtsklick auf unser Master Material und ganz oben finden wir „Create Material Instance“.
    Unsere ganzen Materialien werden immer direkt vom Master Material aus erstellt. Wenn das ganze so aussieht, habt ihr alles richtig gemacht.



    Im Parameter Groups Fenster, findet ihr nun alle Paramter unterteilt in den Gruppen wie wir sie angelegt haben (Macro Texture werdet ihr bei euch nicht finden).
    Wir können hier alles ändern, indem wir einen haken setzen, wo wir etwas ändern wollen.Setzt also eure Texturen richtig und spielt mit den Werten bis ihr das gewünschte Ergebniss erzielt habt.
    Die Farben die wir bei MainTiling und bei der NormalMap Strength haben einfach abändern. Bei Maintiling entspricht R-x und G-Y.

    Zum Abschluss gibt es noch folgendes zu sagen. Denkt immer daran, dass hier alles berechnet wird, auch wenn ihr das ganze nicht braucht. Emissive z.B. wird selten gebraucht,
    ob er im Master Material sinnvoll ist oder nicht, müsst ihr entscheiden, dass selbe gilt für AO.

    Das ist mein erstes Tutorial überhaupt und ich hoffe das alles verständlich ausgedrückt wurde. Ich bin nicht so der große schreiber.
    Für Konstruktive Kritik bin ich natürlich offen.

    Ich wünsche euch viel Spass mit dem Material und ich würde mich freuen wenn der ein oder andere seine Ergebnisse postet, ob es was gebracht hat, oder auch nicht.

    Gruß
    Inmatic

    900 mal gelesen

Kommentare 2

  • alvis179 -

    Hi,
    danke für dieses ausführliche Tutorial, ich konnte den einzelnen Schritten gut folgen und das MasterMaterial problemlos erstellen.
    Wie sieht das aus, wenn man noch den Tessalation Effekt haben möchte, fügt man dann eine weitere Placehold Texture hinzu?

    Gruß Alvis

    • Inmatic -

      Hiho,
      Freut mich das dir das Tutorial gefällt ;)
      Du kannst das ganze ohne Probleme erweitern, je nachdem was gewünscht wird.
      Placeholder Textur muss nicht sein, kannst du aber zwecks Übersicht einfügen.
      Auch hier wieder einen Gruppennamen wählen und Scalar Parameter benutzen, damit du das alles ohne große Probleme anpassen kannst.

      Gruß Inmatic

Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.