Jetzt alles(s) zusammen...
In dieser Definition bestimmen wir den Variablennamen, der verändert werden soll (bright). Anschließend vergeben wir einen Namen für den Regler in Resolve (Helligkeit).
Die übrigen Werte definieren, dass es sich um einen Float-Regler handelt (DCTLUI_SLIDER_FLOAT), der beim Start den Wert 1.0f haben soll. Minimal soll der Regler den Wert 0.0f annehmen können, maximal den Wert 10.0f. Der letzte Wert beschreibt die Schrittweite, was jedoch nur bei Int-Reglern sinnvoll funktioniert. Unser gesamtes Script zur Veränderung der Helligkeit sieht schließlich so aus:
DEFINE_UI_PARAMS(bright, Helligkeit, DCTLUI_SLIDER_FLOAT, 1.0f, 0.0f, 10.0f, 0.01f)
__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 y = (0.299f * p_R + 0.587f * p_G + 0.114f * p_B) * bright;
const float u = -0.147f * p_R - 0.289f * p_G + 0.436f * p_B;
const float v = 0.615f * p_R - 0.515f * p_G - 0.100f * p_B;
const float r = 1.0f * y + 0.0f * u + 1.13983f * v;
const float g = 1.0f * y - 0.39465 *u - 0.58060 * v ;
const float b = 1.0f * y + 2.03211 * u + 0.0f * v;
return make_float3(r, g, b);
}
Das wars erst einmal in aller Kürze und Würze. Mit diesem Wissen könnte man nun schon beispielsweise Probleme zur individuellen Farbraumsättigung angehen, die wir vor einem Jahr auf slashCAM angesprochen hatten. Aber natürlich gibt es auch noch weitaus komplexere Anwendungsfälle. Wer hier Anregungen sucht, sollte unbedingt die OFX-DCTLs von Baldavenger auf Guthub studieren.
Wer nun grundsätzlich Shader-Blut geleckt hat, kann sich auch einmal dieses Einsteiger-Video zu gemüte führen, welches an einem relativ einfachen Beispiel durchgeht, wie man mit Shadern prozedural gestalten kann:
Und wer rund sechs Stunden Zeit entbehren kann, darf im folgenden Video die schier unglaubliche Macht der Shader Programmierung in der Praxis verfolgen (und lernen):
Dort zeigt der Macher Schritt für Schritt, wie er das Shader-Meisterwerk "Happy Jumping" konstruiert hat.
Natürlich konnten wir in diesem Artikel wirklich nur das wesentlichste für die ersten Schritte der DCTL-Programmierung anreißen. Sollte es ein stärkeres Feedback geben können wir diesen Artikel gerne noch detaillierter ausbauen. Wir hätten druchaus noch einige Tricks zu teilen, denn wir haben unter anderem unsere redaktionellen Rolling Shutter Messungen selbst mittels DCTLs implementiert.