Wer die Funktionalität seines Programms zur Videobearbeitung erweitern will, findet in der Regel mehrere Möglichkeiten. Der Klassiker ist wohl die Erweiterung eines Programms über sogenannte Plugins. Wer jedoch nur gelegentlich kleine Probleme lösen will, ist meistens mit der Plugin-API überfordert. Ohne längere Einarbeitung ist hier selten mit schnellen Ergebnissen zu rechnen. Dazu ist es nicht jedermanns Sache, wegen eines kleinen Problems eine Compiler-Umgebung für die Entwicklung in einer Hochsprache wie C++ einzurichten.
Auf der anderen Seite - beispielsweise wenn man wiederkehrende Aufgaben automatisieren will - lassen sich viele Programme über Scripte fernsteuern. Erste Schritte gelingen hier in der Regel sehr schnell. Allerdings erlauben die meisten Scripting-Implementationen in Videobearbeitungs-Programmen keine Veränderungen auf der Pixelebene, sondern allenfalls die Kombination von integrierten Effekten. Für Veränderungen auf Pixelebene sind Scriptsprachen zudem in der Regel zu langsam, da aufgrund der Pixelmassen effektives Number-Crunching gefragt ist, wie es heutzutage am besten GPUs erledigen können.
In den letzten Jahren ist deswegen immer wieder ein neuer, dritter Weg aufgetaucht. Und zwar Pixel-Shader-Filter, die per GPU-Code in der Video-Applikation erzeugt werden. Einen sehr vielversprechenden Versuch gab es in dieser Richtung schon früh mit Adobes Pixel Bender. Hiermit ließen sich (in einer vom GPU-Hersteller unabhängigen Sprache) Shader entwickeln, die sogar anschließend wie ein normales Plugin in After Effects funktionierten. Leider stellte Adobe die Entwicklung von Pixel Bender schon vor ein paar Jahren wieder ein.
Weitaus erfolgreicher (zumal nicht auf Apps zur Videobearbeitung beschränkt) ist dagegen ShaderToy. Hierbei handelt es sich um eine Webseite, auf der man mit einem Live-Editor eigene Shader entwickeln kann. Diese laufen unter anderem sogar 1:1 im Compositing-Programm Natron.
Das tollste an Shader Toy ist jedoch, dass man von allen hochgeladenen Shadern den Quellcode "live" studieren und dabei extrem viel lernen kann. Und dieses Wissen kann man gut gebrauchen, sobald man sich in Resolve einmal näher mit DCTLs befasst...
Was ist eigentlich DCTL?
DCTL steht für "DaVinci Colorspace Transform Language". Diese Sprache ist eine erweiterte Implementierung der 2007 definierten "Colorspace Transform Language" / CTL, mit der eigene Farbraumtransformationen programmiert werden können und die die Grundlage der Mathematik hinter ACES bildet.
Die CTL war ursprünglich als Verbesserung der typischen LUTs gedacht. Statt einer Tabelle mit Wertzuweisungen sollten mit der CTL Farbraum-Transformationen über echte Formeln definiert werden, die dann für jedes Pixel exakte Berechnungen ermöglichen - im direkten Gegensatz zu den geschätzten Interpolationen zwischen den quantisierten Werten in einer LUT.
Wofür nutze ich die DCTLs?
DCTLs können genau wie LUTs in den Nodes verwendet werden, clippen jedoch im Gegensatz zu einer LUT nicht zwingend am Tabellenende (es sei denn man programmiert sie so). Jede Berechnung/Verarbeitung in den DCTLs findet zudem unter Resolve im 32-Bit-Fließkomma-Format statt, was für jegliche Farbraumkonvertierung in der Regel mehr als ausreichend Reserven bereithält.
Blackmagic hat die DCTL gegenüber der CTL jedoch noch um ein paar interessante Aspekte erweitert. So können DCTLs zusätzlich einstellbare OpenFX-Slider nutzen und damit in Ansätzen wie ein Plugin fungieren, das sich über Keyframes steuern lässt.
Wenn es sich um nicht allzu komplexe Probleme handelt, lassen sich DCTLs damit sehr schnell erstellen und wie ein Plugin in Resolve nutzen. Da DCTLs immer im Quelltext vorliegen, lassen sie sich auch gut einsehen und für die eigenen Anforderungen modifizieren...
Wo finde ich die DCTLs?
Resolve bringt nach der Installation erst einmal keine eigenen DCTL-Scripte mit. Diese muss man aus dem Internet besorgen oder selbst schreiben. Das Resolve Manual 17 gibt dabei nur sehr rudimentäre Einblicke (aktuell in Kapitel 191).
Eine wahre Goldgrube sind dagegen die kostenlosen DCTLs von Baldavenger auf Guthub. Dieser Programmierer hat die erstaunlichsten Sachen nach DCTL portiert (unter anderem auch viele abgehobene Shader Toy Filter).

Wir wollen im zweiten Teil des Artikels noch etwas näher auf die Programmierung solcher DCTLs eingehen.
Wie installiere ich DCTLs?
Will man selber ein paar DCTL ausprobieren, so muss man diese vor dem Start von DaVinci Resolve in ein spezielles Verzeichnis kopieren, das vom genutzten Betriebssystem abhängig ist. Im speziellen findet man dieses Verzeichnis an folgenden Orten:
Mac OS X:
Bibliothek/Anwendungssupport/Blackmagic Design/DaVinci Resolve/LUT
Windows:
C:/ProgrammDaten/Blackmagic Design/DaVinci Resolve/Support/LUT
Linux:
/home/resolve/LUT
Wie wende ich DCTLs an?
Alle beim Start vorgefundenen DCTLs können an drei verschiedenen Orten in Resolve genutzt werden:
Zuerst einmal finden sich die DCTLs in allen "normalen" LUT-Dropdown Listen. Hier aufscheinende DCLTs können exakt wie LUTs verwendet werden.
Zur visuellen Auswahl kann man die DCTLs auch im LUT-Browser (auf der Color Page) sehen. Hier können die DCTLs auch als Vorschau-Piktogramme dargestellt werden:

Letzteres ist besonders praktisch, wenn man viele unbekannte OFX-DCTLs in seinem Verzeichnissen hat, da man hier auch Effekte sehen kann, die keine Farbtransformation erzeugen.
Will man spezielle OFX-DCTLs mit Parametern einsetzen, so muss man diese obligatorisch über den dritten Weg aktivieren: Genauer gesagt über "OpenFX/Library/DCTL...".

Nur hier können anschließend gefunde DCTLs über ein Dropdown-Menü ausgewählt werden...

... und anschließend mit Parametern eingestellt werden:

Wie funktionieren DCTLs?
Wie bereits angedeutet, laufen DCTLs am besten in den Shadern einer GPU. Da Resolve jedoch glücklicherweise die DCTL GPU/CPU agnostisch konzipiert hat, sollten DCTLs auf jeder Resolve-Plattform, unabhängig von der zugrunde liegenden Hardware funktionieren. Hat man keine dedizierte GPU im System werden DCTLs allerdings in der Regel deutlich langsamer berechnet, was gerade bei komplexen OFX-Konstruktionen auffällt. Einfache Farbtransformationen laufen dagegen selbst auf CPUs mit integrierter Grafik flott.
Wer selber mehr über die Erstellung von DCTLs lernen will, den bitten wir noch um etwas Geduld und verweisen hiermit auf den zweiten, kommenden Teil dieses Artikels...