
Neuer Library Effect in Evergine

Das neueste Evergine-Release bringt eine leistungsstarke neue Funktion: das Library Effect-Asset. Dieser neue Effekttyp soll die Lesbarkeit des Codes verbessern und die Wiederverwendung in Ihren Projekten ermöglichen. Wenn Sie mehrere Effekte entwickeln, stoßen Sie möglicherweise auf sich wiederholende Muster oder gemeinsam genutzte Hilfsfunktionen, die Sie wiederverwenden möchten. Mit Library Effects ist das jetzt nicht nur möglich, sondern auch ganz einfach.
Was ist ein Library Effect?
Ein Library Effect ist eine Sammlung statischer Variablen, Konstanten, Direktiven und wiederverwendbarer Funktionen, auf die Sie aus Ihren Graphics und Compute Effects verweisen können. Indem Sie die Bibliothek einfach in Ihre Effektdateien einbinden, können Sie gemeinsam genutzte Logik zentralisieren und die Codebasis Ihrer Effekte übersichtlich und wartbar halten.
Einen Library Effect erstellen
Sie können einen neuen Library Effect über das Asset-Menü von Evergine Studio erstellen oder indem Sie mit der rechten Maustaste in das Asset Details Panel klicken und die entsprechende Option auswählen.

Einen Library Effect definieren
Jeder neue Library Effect muss mit dem Metatag [Begin_Library] beginnen und mit dem Metatag [End_Library] enden. Library Effects werden genauso kompiliert wie jeder andere Effekt. Daher müssen Sie die Version des Kompilierungsprofils angeben, wie Sie es auch bei der Definition von Passes tun. So lassen sich mögliche Probleme frühzeitig erkennen und beheben, noch bevor die Bibliothek in anderen Effekten verwendet wird.

Ihre Bibliotheken strukturieren
Innerhalb eines Library Effect können Sie gemeinsame Variablen, Konstanten und Funktionen definieren, die Sie in Ihren Graphics oder Compute Effects wiederverwenden möchten. Im folgenden Beispiel wird eine Tonemapping-Bibliothek mit der Logik für eine ACES-Farbanpassung erstellt.

Einen Library Effect in anderen Effekten verwenden
Um einen Library Effect in Ihren Graphics oder Compute Effects zu verwenden, binden Sie ihn einfach mit dem folgenden Metatag ein:
[Include_Library LibraryName LibraryIdentifierNumber]
- LibraryName: Ein gut lesbarer Name für Ihre Bibliothek.
- LibraryIdentifierNumber: Eine eindeutige GUID, die das Library-Effect-Asset identifiziert.
Der Vorteil der GUID besteht darin, dass sie unabhängig vom relativen Pfad des Assets ist. Sie können Ihre Bibliotheks-Assets also innerhalb der Content-Ordner des Projekts verschieben, ohne dass die Verweise ungültig werden.
Um das Einbinden einer Bibliothek in Ihre Effekte zu erleichtern, können Sie das Library-Effect-Asset per Drag-and-drop aus dem Asset Details Panel in einen anderen, im Effect Editor geöffneten Effekt ziehen. Dadurch wird der Verweis automatisch in Ihrem Code erstellt.

Beispiel: Die Tonemapping-Bibliothek in einem Graphics Effect verwenden
Im Folgenden sehen Sie ein Beispiel dafür, wie die zuvor definierte MyLibrary in einem Graphics Effect verwendet wird.

Abhängigkeiten von Library Effects und rekursive Includes
Library Effects können auch auf andere Library Effects verweisen. So können Sie komplexere Effekte erstellen, indem Sie mehrere Bibliotheken kombinieren. Dieser Ansatz hilft Ihnen, Ihren Code in einem logischen Abhängigkeitsbaum zu organisieren, und sorgt für bessere Modularität und eine klare Trennung der Zuständigkeiten.

Direktiven in Ihren Library Effects verwenden
Sie können Direktiven in Ihren Library Effects nutzen, um den Ablauf Ihres HLSL-Codes zu steuern. So lassen sich je nach Wert dieser Direktiven mehrere Varianten Ihrer Bibliothek erstellen.

Wenn Sie einen Library Effect in Ihren Graphics oder Compute Effect importieren, werden auch seine Direktiven importiert und mit den Direktiven des Effekts selbst sowie aller abhängigen Bibliotheken zusammengeführt. Das Ergebnis ist eine einzige, einheitliche Gruppe von Direktiven, die der Effekt nutzen kann.

Fehlerbehandlung mit dem Effect Analyzer
Der Evergine Effect Editor wurde um einen neuen Effect Analyzer erweitert, der detaillierte Informationen zu den neuen [Include_Library]-Metatags liefert und Ihnen hilft, Probleme bei der Arbeit mit Library Effects zu beheben. Hier einige typische Szenarien und wie der Effect Analyzer damit umgeht:
- Nicht aufgelöster Verweis: Wenn eine eingebundene Bibliothek eine falsche Library Identifier Number hat, meldet der Analyzer, dass der Verweis auf die Bibliothek nicht aufgelöst werden kann.

- Kompilierungsfehler in der Bibliothek: Wenn Ihr Library Effect einen Fehler im Code enthält, hebt der Analyzer die Include-Zeile in Ihrem Haupteffekt hervor und zeigt den Fehler in der Bibliothek selbst an.

- Probleme mit Querverweisen: Wenn ein Effekt eine Bibliothek einbindet, die ihrerseits eine andere Bibliothek einbindet, und dabei eine zyklische Abhängigkeit erkannt wird, meldet der Analyzer ein Querverweisproblem.

Fazit
Mit Library Effects eröffnen sich in Evergine neue Möglichkeiten für die Effektentwicklung: Sie können Ihren HLSL-Code besser strukturieren, optimieren und wiederverwenden. Mit der Unterstützung für rekursive Includes, Direktiven und einer verbesserten Fehlerbehandlung bieten Library Effects ein leistungsstarkes Instrumentarium für den Aufbau anspruchsvoller Rendering-Pipelines.
Probieren Sie es aus und erleben Sie, wie es Ihre Shader-Entwicklung vereinfacht!
