Prozedurale stochastische Texturierung in Unity

Haben Sie schon einmal versucht, große Flächen mit kachelfähigen Texturen zu bedecken oder feine Details zu Ihren Meshes hinzuzufügen? Wenn ja, sind Sie wahrscheinlich mit dem sichtbaren Wiederholungsmuster vertraut, das bei höheren Kachelwerten schnell auftritt. In den Unity Labs haben wir eine neue Texturierungstechnik entwickelt, die dieses Problem vermeidet: Procedural Stochastic Texturing.
Kachelbare Texturen sind ein nützliches Werkzeug, um Ihren 3D-Szenen Details hinzuzufügen. Wenn Sie jedoch große Flächen texturieren oder mit kachelbaren Texturen und Detailmaps hochdetaillierte Oberflächen erzielen wollen, werden Kachelmuster sichtbar. Dieser Effekt ist auf der linken Seite der folgenden Abbildung dargestellt. Zur Reduzierung von Wiederholungsmustern werden in der Regel größere Texturen benötigt oder die sichtbaren Wiederholungen durch zusätzliche Objekte verdeckt. In diesem Blogbeitrag stellen wir ein Plugin vor, das dieses Problem für Texturen mit stochastischen Erscheinungsbildern wie Rost, Moos, Rinde usw. löst. Die Auswirkungen sind auf der rechten Seite des folgenden Bildes dargestellt.

Laden Sie das Plugin hier herunter.
Bei einer Eingabetextur wird das Plugin prozedural eine unendliche Textur erzeugen, die dem Aussehen der Eingabe entspricht. Dazu nutzen wir eine hochmoderne Texturüberblendungsfunktion, die mit einer modifizierten Version der Eingabetextur arbeitet und nur drei Textursamples pro Fragment benötigt, sowie eine kleine Nachschlagetabelle abruft. Da das Plugin die Notwendigkeit des Kachelns vermeidet, ist es möglich, größere Flächen mit kleineren Texturen und höherem Detailgrad zu bedecken, ohne dass es zu Wiederholungsartefakten kommt.
Das Plugin bietet eine Variante des Standard-Shaders, der in einem Unity-Paket enthalten ist. Sobald Sie das Paket importiert haben, wählen Sie den StandardStochastic-Shader für Ihr Material. Die Schnittstelle ist die gleiche wie die des Standard-Shaders, mit dem Zusatz von zwei neuen Steuerelementen am oberen Rand, die den zwei erforderlichen Einrichtungsschritten entsprechen:


Im Menü Stochastische Eingaben können Sie angeben, für welche der Eingabetexturen Sie unsere Technik aktivieren möchten (es kann alles oder bestimmte Texturen, z. B. Albedo und/oder Normal Map, eingestellt werden).
Mit der Schaltfläche Anwenden werden die Daten für die ausgewählten stochastischen Eingaben vorberechnet und das Material aktualisiert, wodurch der Prozess abgeschlossen wird. Für jede Eingabetextur erzeugt dieser Schritt zwei Zwischentexturen, die sich im selben Ordner befinden.
Ein paar zusätzliche Bemerkungen:
- Da vorhandene Zwischentexturen geladen werden, wenn festgestellt wird, dass sie die Generierungszeiten überspringen, müssen bei einer Änderung der ursprünglichen Textur beide gelöscht werden, bevor die Schaltfläche "Anwenden" erneut gedrückt wird, um ihre Regeneration zu erzwingen.
- Beim Wechsel zwischen Standard- und Standard-Stochastic-Shadern werden Parameter hin und her übertragen.
- Für Materialien, die den Specular-Workflow verwenden, wird auch ein StandardStochastic-Shader (Specular-Setup) bereitgestellt.
Die folgenden Beispiele zeigen, wie der Prototyp mit verschiedenen Materialien und kleinen (256²) Eingabetexturen arbeitet.



Diese Technik ist nur mit kachelbaren stochastischen und nahezu stochastischen Texturen kompatibel, wie z. B. Texturen, die aus der Ferne betrachtet zufälligem Rauschen ähneln, und typisch natürlich aussehenden Materialien ohne präzise geometrische Formen.

Dies ist ein Forschungsprototyp; er wird nicht aktiv entwickelt. Wir übernehmen keine Garantie für die Wartung oder den Support, aber Sie können in diesem Unity-Forum-Thread gerne Fragen stellen und Feedback geben. Wir arbeiten derzeit an einer ShaderGraph-Implementierung für benutzerdefinierte Shader und Kompatibilität mit den neuen Rendering-Pipelines. Halten Sie Ausschau nach Aktualisierungen im Forumsthread!
Sind Sie neugierig, wie das Plugin funktioniert? Lesen Sie unsere beiden kürzlich veröffentlichten Forschungsarbeiten zu diesem Thema, auf denen unser Plugin aufbaut:
- Papier: Leistungsstarkes By-Example-Rauschen mit einem Histogramm-erhaltenden Überblendungsoperator - Eric Heitz und Fabrice Neyret, HPG 2018
- Technisches Kapitel: Prozedurale stochastische Texturen durch Kacheln und Überblenden - Thomas Deliot und Eric Heitz, GPU Zen 2
- Sehen Sie sich unsere anderen Forschungsarbeiten bei Unity an: Unity Labs Veröffentlichungen
Der mit dem Plugin gelieferte Code enthält Kommentare, die sich auf bestimmte Abschnitte des technischen Kapitels beziehen.
