Einführung in die HeavyM-Shader zur Erstellung eigener VFX

Einführung

Sie sind daran interessiert, Ihre eigenen visuellen Effekte in HeavyM zu erstellen? In diesem Artikel stellen wir Ihnen die spannenden kreativen Möglichkeiten vor, die die Shader bieten. Übrigens, was ist ein Shader?

Ein Shader ist ein Computerprogramm, das auf der Grafikkarte Ihres Computers läuft. Mit ihm können Sie die Daten, die auf Ihrem Bildschirm oder Ihrem Videoprojektor angezeigt werden, schnell manipulieren: die Pixel.

Es handelt sich um eine wenig bekannte, weil als abstrakt angesehene Technologie, aber Shader sind in unserem täglichen Leben sehr präsent. Diese kleinen Computerprogramme simulieren realistisch komplexe visuelle Effekte wie Regen, Nebel, Lichtreflexionen, Objektreliefs usw. Sie werden daher häufig in Videospielen, in Filmen, die Spezialeffekte erfordern, in Fernsehgeräten ... und in der digitalen Kunst, dem Bereich, auf den wir uns hier konzentrieren, eingesetzt.

In der HeavyM-Software bieten die eingebauten Shader viele Möglichkeiten. Es ist auch möglich, Ihre eigenen Shader zu importieren und so die Anzahl der Kombinationen unendlich zu erhöhen!

Beispiel für ein Videospiel, das Shader verwendet: Minecraft

Beispiel für ein Videospiel, das Shader verwendet: Minecraft

Projektionskartierung der Minenleistung

Beispiel für einen Shader, der während einer Projection Mapping Performance verwendet wird

Teil 1: Shader-Technologie

Um die Idee der Shader besser zu verstehen, nehmen wir als Beispiel die Erstellung einer Zeichnung von Hand. Es ist notwendig, die Elemente, aus denen sie besteht, eines nach dem anderen zu zeichnen. Sie würden mit geometrischen Formen wie Kreisen, Rechtecken und Linien beginnen und dann Farben hinzufügen. Sie würden Schritt für Schritt vorgehen, als ob Sie die Zeichnung von Hand kopieren müssten. Mit Shadern geht der Prozess viel schneller, weil alle diese Vorgänge auf einmal ausgeführt werden, wie ein Stempel, der mit einer einzigen Geste auf ein Blatt Papier aufgetragen wird. Und was noch besser ist: Dieser Stempel kann sich je nach den gegebenen Informationen ändern, z. B. nach der Uhrzeit, der Position oder den Farben der bereits auf Ihrem Blatt vorhandenen Elemente.

Warum sind Shader schnell?

Shader sind sehr leichte Programme, denn im Gegensatz zu Softwares wie HeavyM, die mehrere hunderttausend Zeilen Code enthalten, besteht ein Shader im Allgemeinen nur aus höchstens ein paar hundert Zeilen. Die Geschwindigkeit von Shadern ist hauptsächlich auf die Architektur der Hardware zurückzuführen, die ihre Ausführung ermöglicht: die Grafikkarte. Um HeavyM zu verwenden, sollten Sie diesen Aspekt unbedingt berücksichtigen, da er es Ihnen ermöglicht, die Möglichkeiten der Software zu vervielfachen.

Im Gegensatz zur CPU Ihres Computers, die Aufgaben nacheinander abarbeitet, werden die Berechnungen auf Ihrer Grafikkarte parallel durchgeführt. Anstelle eines einzigen Prozessors mit großer Rechenleistung verfügt die Grafikkarte über eine Vielzahl kleiner Prozessoren. Das bedeutet, dass sie Aufgaben gleichzeitig ausführen können. Durch diese Parallelisierung können die Shader komplexe Grafikberechnungen in wenigen Millisekunden durchführen.

Der Vorteil von Shadern: interaktive Kunst

Dank der Ausführungsgeschwindigkeit von Shadern ist es möglich, Bilder in Echtzeit zu erstellen, d. h. sie werden in dem Moment erzeugt, in dem sie gesehen werden. Der Begriff "Echtzeit" steht im Gegensatz zum Begriff "vorberechnet", der sich auf eine Videodatei bezieht, die Bild für Bild gerendert wird. Rendering-Berechnungen können sehr zeitaufwendig sein und bis zu mehreren Tagen dauern! Mit Shadern können Sie die Bilder direkt manipulieren, genau wie in einem Videospiel. Interaktive digitale Kunst beruht auf diesem Echtzeit-Prinzip, weil es Ihnen ermöglicht, Bilder zu erzeugen, die auf Musik oder die Bewegungen von Menschen reagieren. Zwei Beispiele für eine Performance, bei der Musik und Bilder kombiniert werden, finden Sie in den Arbeiten von Weirdcore für Aphew Twin's Konzerte oder Nonotaks Leistungen.

Arten von Shadern

Shader sind nichts anderes als Textdateien mit einer bestimmten Erweiterung. Wir werden sehen, dass es verschiedene Arten von Shadern gibt. Gemeinsam ist ihnen, dass sie in der GLSL-Sprache kodiert sind: OpenGL Shading Language. Es gibt noch andere Arten von Shadern, die von der Plattform und der Hardware abhängen, aber hier werden wir uns auf OpenGL-basierte Shader konzentrieren. Um Shader in HeavyM zu verwenden, ist eine Grafikkarte erforderlich, die OpenGL 2.0 unterstützt.

Pixel-Shader oder Fragment-Shader

Der Fragment-Shader oder Pixel-Shader ist ein Shader, dessen Aufgabe es ist, die Farbe jedes einzelnen Pixels zu berechnen. Er nimmt als Eingabe die Daten jedes Pixels des Bildes (Position, Texturkoordinaten, Farbe) und gibt dessen Farbe aus.

Es sind diese Shader, die Sie mit HeavyM verwenden möchten. Es handelt sich dabei in der Regel um .FRAG-Dateien oder .FS-Dateien im Falle des ISF-Formats. Das ISF-Format bietet einen Standard für GLSL-Shader-Fragmente, so dass sie von interaktiven Anwendungen leichter interpretiert werden können.

Vertex-Shader

Vertex-Shader werden verwendet, um die Eingabespitzen in Pixel umzuwandeln. 

Es handelt sich um eine .VS-Datei, die manchmal mit dem Pixel-Shader einhergeht, denselben Namen trägt und sich im selben Ordner befindet.

Wo findet man Shader?

Sie müssen keine Programmierkenntnisse haben, um Shader mit HeavyM zu verwenden. Zusätzlich zu der in der Software integrierten Bibliothek gibt es Plattformen, auf denen Sie neue Shader finden können, ohne sie selbst erstellen zu müssen. Die Gemeinschaft der Shader-Künstler wächst, und Sie können die von ihnen zur Verfügung gestellten Werke oft frei verwenden.

Zum Auffinden von .FRAG: http://glslsandbox.com/ und https://www.shadertoy.com/

Achtung: .FRAG wird in HeavyM nicht unterstützt. Sie müssen in .ISF konvertiert werden, und wir stellen unten eine entsprechende Methode zur Verfügung.

Überprüfen Sie unbedingt die Nutzungsrechte in der Lizenz, die normalerweise am Anfang des Shader-Codes angegeben ist. Wenn es keinen besonderen Hinweis gibt, gilt standardmäßig das Urheberrecht und wir raten Ihnen dringend, mit dem Autor des Programms zu sprechen, wenn Sie es kommerziell nutzen möchten.

Entwickeln Sie Ihre eigenen Shader

Um Ihre eigenen Shader zu erstellen, empfehlen wir Ihnen, direkt das ISF-Format zu verwenden, damit sie mit möglichst vielen Anwendungen kompatibel sind. Ziel dieses Artikels ist es nicht, den GLSL-Code, die vom ISF-Format verwendete Sprache, zu erlernen. Hierfür empfehlen wir die Lektüre der sehr umfassenden Seiten :

Für den Anfang können Sie jedoch die ISF-Website besuchen und bestehende Shader ändern. Auf dieser interaktiven Website können Sie die an den Shadern vorgenommenen Änderungen live sehen. Es ist auch möglich, von einer Basisvorlage auszugehen.

Der größte Nachteil bei der Erstellung und Bearbeitung von Shadern ist, dass es keine Fehlerrückmeldung gibt. Wenn ein Designproblem auftritt, läuft der Shader nicht und zeigt auch nichts an. Es ist dann schwierig, die Fehlerursache zu finden. Es ist daher notwendig, den Code genau zu überprüfen.

Teil 2: Shader in HeavyM

Die HeavyM-Software bietet in ihrer integrierten Bibliothek für visuelle Effekte einige hundert native Shader. Je nach den verwendeten Funktionen können verschiedene Arten von Effekten in der Software verwendet werden.

Shader-Effekte auf Formen

Wenn Sie auf die roten Symbole auf der rechten Seite der Benutzeroberfläche klicken, haben Sie Zugriff auf Kategorien von Effekten, die sich automatisch an die gezeichneten Formen anpassen. Diese Effekte sind mit den Gruppen im Ebenenbedienfeld auf der linken Seite verknüpft. Alle Formen in einer Gruppe haben das gleiche Aussehen. Um unterschiedliche Effekte für verschiedene Formen zu erhalten, müssen Sie weitere Gruppen erstellen und ihnen Formen hinzufügen.

HeavyM Shader - Auswirkungen auf Formen

Es ist derzeit nicht möglich, bestehende Effekt-Shader in dieser Kategorie hinzuzufügen oder zu ändern.

Bilderzeugende Shader

Fügen Sie bildgenerierende Shader als Quellen hinzu, und zwar in dem Panel, das über das weiße Symbol in der vertikalen Symbolleiste rechts zugänglich ist. Für diese Shader muss ein Player erstellt werden, damit sie angezeigt werden können. Verknüpfen Sie die Quelle mit dem Player, indem Sie auf das Zielsymbol klicken. Die Bilderzeugungs-Shader haben keine Standarddauer, da es sich um ein Programm handelt, das in einer Schleife läuft. Sie können jedoch die Anzeigedauer der Quelle ändern.

Shader - Generative Effekte

Verarbeitung von Shadern bei Playern

Sie können Bildbearbeitungseffekte auf den Player anwenden. Wählen Sie dazu den Player aus und fügen Sie in den Eigenschaften unten links über die Schaltfläche + Effekte hinzu. Die Effekte werden der Reihe nach hinzugefügt. Jeder Player ist unabhängig, d. h. die Quelle und die Verarbeitungseffekte sind von Player zu Player unterschiedlich, auch wenn sich die Player in derselben Gruppe befinden.

Shader - Effekte für Spieler

Verarbeitung von Shadern auf Sequenzen

Bildverarbeitungs-Shader können auch auf die gesamte Videoausgabe angewendet werden. Diese Effekte sind relativ zu den Sequenzen. Um einen Verarbeitungseffekt zu einer Sequenz hinzuzufügen, klicken Sie auf das Zahnrad und fügen Sie mit der Schaltfläche + einen Shader hinzu. Die Verarbeitungseffekte auf Sequenzen sind die gleichen wie die Verarbeitungseffekte auf Playern.

HeavyM-Shader - Sequenzeffekte

Übergangsshader für Sequenzen

Übergänge sind ebenfalls sequenzbezogen und werden auf die gesamte Videoausgabe angewendet. Standardmäßig wird ein Übergang mit einer Überblendung von 0,20 Sekunden angewendet. Ändern Sie diesen Übergang im Menü, das durch Klicken auf das Zahnrad der Sequenz zugänglich ist. Übergänge werden nur auf den Eingang der Sequenz angewandt.

HeavyM - Übergänge

Shader importieren

Wir haben gesehen, dass es in HeavyM zwei Hauptkategorien von Shadern gibt: Generierungs-Shader und Verarbeitungs-Shader. HeavyM macht es einfach, Shader aus diesen beiden Kategorien zu kombinieren. HeavyM bietet Standard-Shader auf den Registerkarten "Bibliothek" in jedem Shader-Auswahlfenster. Alle diese Shader sind .FS und entsprechen somit dem ISF-Standard. Um Ihre eigenen Shader auf der Registerkarte "Meine Shader" zu importieren, müssen Sie diesen Standard einhalten. Auf diese Weise können die Parameter Ihrer Shader einfach über die Schnittstelle von HeavyM geändert werden.

Möchten Sie andere Shader-Formate in HeavyM importieren? Es ist sehr einfach, Shader mit diesem Tool zu konvertieren: Desktop ISF Editor (Windows beta/Mac) mit "Import from GLSL Sandbox" und "Import from Shadertoy" Funktionen.

Wenn Sie schließlich die Architektur des ISF-Formats im Detail verstehen wollen, um Ihr eigenes Format zu erstellen, empfehlen wir Ihnen einen Blick in die ISF-Format-Dokumentation zu werfen: https://docs.isf.video/

Teil 3: Shader steuern

Shader ermöglichen visuelle Effekte in Echtzeit, die live verändert werden können, ohne eine Rendering-Phase durchlaufen zu müssen. Hier sind die verschiedenen Möglichkeiten, Ihre Effekte zu steuern und interaktive Bilder zu erstellen.

Die Shader-Parameter können durch Klicken auf das Zahnrad des Quellensymbols geändert werden. Die Werteskala ist zwischen 0 und 100 normalisiert und entspricht nicht einer bestimmten Einheit. In HeavyM werden verschiedene Modi zur Variation der Parameter angeboten, die Sie durch Klicken auf den Pfeil neben jedem Shader-Parameter finden.

Der Festwertmodus

Dies ist der Standardmodus, in dem Sie den Wert mit der Maus ändern können. Der Nachteil ist, dass Sie immer nur einen Parameter auf einmal ändern können. Sie können einen Wert auch über die Tastatur eingeben.

Die Wertgeneratoren

HeavyM bietet 7 Wertegeneratoren, mit denen Sie die Parameter der Shader automatisch ändern können. Es handelt sich dabei um LFO-Generatoren (Low Frequency Oscillator), wie sie in Musiksoftware oder Synthesizern zu finden sind. Für jeden Generator gibt es zwei Animationsmodi: BPM oder temporal. Der BPM-Modus ist mit dem allgemeinen Tempo unten rechts auf der Oberfläche verknüpft, das durch das Metronom-Symbol symbolisiert wird. Der temporale Modus erlaubt es Ihnen, eine vom allgemeinen Tempo unabhängige Frequenz zu definieren.

HeavyM - LFOs

Kontrolle durch fundierte Analyse

Unten rechts auf der Benutzeroberfläche befindet sich das Modul zur Schallanalyse. Es ermöglicht die Erkennung von Amplitudenschwankungen in 3 verschiedenen Frequenzbereichen: Bass, Mitte, Hoch. Sie können die Variationen dieser Werte in den Variationsmodi der Shader-Parameter finden.

HeavyM-Shader - Klanganalyse

MIDI-Steuerung

Sie möchten mehrere Parameter gleichzeitig manuell steuern? Verwenden Sie das MIDI-Protokoll. Auf dem Markt gibt es eine Vielzahl von MIDI-Controllern für Musik. Sie sind alle mit dem HeavyM kompatibel. Schließen Sie Ihre Hardware im Konfigurationsfenster an, das über das orangefarbene Symbol in der oberen rechten Ecke der Benutzeroberfläche zugänglich ist. Dann können Sie im MIDI-Lernmodus die Verbindung zwischen den Shader-Parametern und den Tasten Ihrer Hardware konfigurieren.

HeavyM Schieberegler - MIDI

Schlussfolgerung

Die kreativen Möglichkeiten, die Shader bieten, sind unendlich. Diese Programme ermöglichen es Ihnen, die Leistung Ihrer Grafikkarte mit nur wenigen Klicks zu nutzen. Ihr Computer bietet Ihnen einen einfachen Zugang zur generativen Kunst, die darin besteht, Werke aus Algorithmen zu schaffen. Viele digitale Künstler nutzen diese Technik, zum Beispiel Antoine Schmidt, Miguel Chevalier, Vera Molnár, Du Zhenjun, Daniel Rozin... 

Mit HeavyM haben wir gesehen, dass es sehr einfach ist, Shader zu verwenden und zu steuern. Kombinieren Sie sie grenzenlos, um Ihr eigenes Bildmaterial und Ihre eigene Identität zu schaffen!