Praxis Die bunte Welt der DCTLs in Resolve - Teil 2: DCTL-Scripting

Die bunte Welt der DCTLs in Resolve - Teil 2: DCTL-Scripting

Wen es nach unserem ersten Teil schon in den Fingern juckt einmal eigene DCTLs zu erstellen, dem helfen vielleicht die folgenden ersten Schritte beim Einstieg...

// 10:52 Do, 22. Jul 2021von

Im ersten Teil unseres Artikels haben wir kurz vorgestellt, was die DCTL eigentlich ist und wie man DCTL-Scripte in Resolve einsetzen kann. Wen es danach in den Fingern gejuckt hat, einmal selber Hand anzulegen, dem helfen vielleicht die folgenden ersten Schritte beim Einstieg...



Ganz ohne Vorkenntnisse geht es allerdings nicht. Man sollte schon einmal etwas gescriptet haben und etwas von der C-Syntax mitbekommen haben. Darunter versteht man ein paar typische Regeln, wie man Script-Strukturen formuliert. Eine C-ähnliche Syntax kommt in zahlreichen Programmiersprachen (wie auch in Java oder Javascript) zum Einsatz. Funktionsblöcke werden beispielsweise in geschweiften Klammern zusammengefasst oder Befehle enden mit einem Strichpunkt.




Die erste Funktion

Die Haupteingabefunktion (transform) sollte als unterstes - also nach allen anderen Funktionen - im Programmtext definiert werden und laut Handbuch einen float3-Vektor zurückgeben. Dieser float3-Rückgabewert enthält als Ergebnis der Funktion die drei Farbkanäle des transformierten Pixels, also in der Regel Rot, Grün und Blau.



Schauen wir uns einfach einmal eine einfache DCTL mit einer einzigen (Haupteingabe)-Funktion an. Diese wird (wie Main() in anderen Programmiersprachen) als erstes vom Programm ausgeführt und muss wie jede Funktion in einem DCTL-Script mit "__DEVICE__" beginnen:




__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)


{

const float r = p_R * 1.0f;


const float g = p_G * 2.0f;


const float b = p_B * 1.0f;



return make_float3(r, g, b);


}



Zum Ausprobieren speichert man dieses Script in einem Editor mit der Dateiendung *.DCTL ( also zum Beispiel "test.dctl" ) in folgendes Verzeichnis:




Mac OS X:


Bibliothek/Anwendungssupport/Blackmagic Design/DaVinci Resolve/LUT



Windows:


C:/ProgrammDaten/Blackmagic Design/DaVinci Resolve/Support/LUT



Linux:


/home/resolve/LUT




Wie man eine solche DCTL ausprobiert haben wir im ersten Teil dieses Artikels bereits erklärt. Sehen wir uns einmal detaillierter an, was in unserem Script passiert:




__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)




In dieser ersten Zeile wird die Hauptfunktion (transform) definiert. Unser Script bekommt dabei ein paar Variablen von Resolve auf den Weg, die wir mit unserem Script im Anschluss nutzen können.



Dies sind Höhe und Breite des gesamten Frames (int p_Width, int p_Height), die exakte Position des zu bearbeitenden Pixels (int p_X, int p_Y) sowie dessen Rot, Grün und Blau-Wert (float p_R, float p_G, float p_B).



Int-Variablen fassen dabei ganzzahlige Werte und Float-Variablen sind Gleitkommawerte, die IMMER mit einem Punkt und NIE mit Komma getrennt werden. Damit man konstante Zahlenwerte im Script unterscheiden kann, hängt man bei Fließkommazahlen ein kleines f an die Zahl, um sie als float zu nutzen.



Im Funktionsblock schnappen wir uns die übergebenen Farbwerte des Eingangs-Pixels (p_R, p_G und p_B):




const float r = p_R * 1.0f;


const float g = p_G * 2.0f;


const float b = p_B * 1.0f;




Wir definieren also in einem Rutsch gleichzeitig drei neue lokale Variablen r, g und b in denen wir die Veränderungen durch unsere Funktion speichern wollen. Im unserem Beispiel multiplizieren wir einfach alle Pixel im grünen Kanal mit dem Faktor 2. Den roten und blauen Kanal lassen wir unverändert, indem wir mit 1 multiplizieren. Wir schreiben 1.0f, statt 1, damit der Computer weiß, dass wir mit Fließkommazahlen arbeiten.





Die letzte Zeile fasst die drei Variablen (r, g, b) zu einem dreidimensionalen Float-Vektor zusammen, den Resolve als Rückgabefunktion erwartet:




return make_float3(r, g, b);





Ähnliche Artikel //
Umfrage
    Was hältst du von den neuen Bild/Video-KIs?





    Ergebnis ansehen
RSS Facebook Twitter slashCAM-Slash