Nachdem wir uns länger mit der 4K-Performance unter Resolve auseinandergesetzt haben sind wir auf einen kleinen, aber durchaus geschwindigkeitsrelevanten Workflow-Trick aufmerksam geworden, der mehr Leistung bringen kann, als die meisten GPU-Updates. Es geht dabei um den manuellen Einsatz des Render Caches. Hierfür müssen wir jedoch vorher etwas ausholen.
Clips durchlaufen in DaVinci Resolve verschiedene Stufen. Eventuell müssen sie zuerst debayert werden, dann kommen Optimierungen wie Denoising, Farbraumlinearisierung oder auch Scaling hinzu. Erst danach kommt in der Regel die eigentliche Farbkorrektur.
Für eine Echtzeitvorschau sind in 4K sämtliche Farbkorrektur-Operationen -sogar mit bewegten Masken- eigentlich Pillepalle. Selbst einfache Grafikkarten ab 200 Euro schaffen hier in der Regel einige Nodes in Echtzeit.
Richtig rechenaufwändig sind dagegen alle Optical Flow-Berechnungen. Dies ist die Echtzeit-Königsklasse. Will man hier eine Noise-Reduction oder ein Retiming in Echtzeit begutachten, geraten auch gerne 3 Titan-GPUs ins Schwitzen. Kommt dann noch ein OFX-Effekt obendrauf, kann man das ruckelfreie 4K-Echtzeit-Grading in der Regel vergessen. In so einem Fall schaltet man gerne auf 2K herunter, jedoch lässt sich dann nicht mehr die Effektivität und Wirkung einer Noise Reduction oder eines Motion-Blurs richtig einschätzen. Solbald es ruckelt und damit die Echtzeit-Preview reißt, ist es auch in unseren Augen egal, ob man 12 oder 20 fps sieht. Nur in Echtzeit erkennt man zuverlässig, wie die Noise Reduction oder der Motion Blur wirklich wirken. Und dafür muss man rendern oder in einen heftigen GPU-Ausbau investieren.
Oder eben den Render Cache manuell zu nutzen wissen. Denn ist das Denoising einmal richtig eingestellt, muss es ja eigentlich nicht jedes Mal neu berechnet werden, wenn sich in den anschließenden Nodes etwas ändert. Wenn man also einer Node sagen könnte, dass sie sich ihre aufwändigen Berechnungen auf einer SSD “merken” sollte, könnte man dahinter munter in Echtezeit weitergraden, ohne dass die Noise Reduction oder andere Effekte jedes weitere Mal aufwändig berechnet werden müssen. Resolve besitzt zwar auch eine Smart Cache Funktion, jedoch kann diese niemals so genau ahnen, wo sie “einhaken” soll. Der aufgeklärte Anwender hat dagegen den Überblick, welche Nodes sehr rechenaufwändig sind. Platziert er diese Rechenlast in den ersten Nodes der Kette, kann er DaVinci anweisen, diese einmalig im Hintergrund zu berechnen und ab dann die berechneten Kopien von der SSD für die weitere Nodebearbeitung zu nutzen.
In der Praxis funktioniert das ganze so:
Als erstes müssen wir Resolve sagen, wo das Programm die geacheten Frames ablegen soll (1).
Am besten eignet sich hierfür eine dezidierte Cache-SSD die möglichst schnell an den Rechner angebunden sein sollte. Ob dafür eine günstige SATA 6-SSD mit ca. 550MB/s ausreicht, hängt davon ab, welchen Codec man für die Speicherung der Zwischenframes benutzen will. Wir haben beispielsweise gute (und vor allem platzsparende) Erfahrungen mit Avids DNxHR in der HQX-Einstellung (2) gemacht. Dieser speichert in 4K/10Bit/4:2:2 pro Einzelframe ca. 3,5 MB ab. Bei 24 Bildern/s landet man ungefähr bei 85MB/s, was selbst unfragmentierte Festplatten noch gut ausgeben könnten. Doch je schneller die Datenübertragung und die Zugriffszeit, desto schneller geht auch das Backgroundrendering (3).
Anschließend müssen wir den RenderCache von der Automatik oder dem ausgeschalteten Modus auf den USER-Modus stellen. Dies gelingt über Playback/Render Cache/User (1):
Um nun einen Node im Hintergrund zu cachen, kann man diesen mit der rechten Maustaste in der Node-Ansicht anstellen (1).
Ab diesem Zeitpunkt wird Resolve nur noch bei jeder Veränderung versuchen diesen Node im Hintergrund zu berechnen und die berechneten Bilder auf der SSD zu speichern. Ist die Berechnung fertig, so werden der Timeline-Streifen und die Node-Nummer blau (2). Ab diesem Zeitpunkt greift Resolve statt einer erneuten Berechnung nur noch auf die gespeicherten Frames zu und entlastet somit meistens deutlich die GPU, die sich nun ganz auf die nachfolgenden Nodes konzentrieren kann. Erst wenn man wieder einen Parameter im blauen Node ändert, muss Resolve den ganzen Node-Baum neu berechnen (und wird danach auch wieder die Einzelbilder des Nodes im Cache-Verzeichnis zwischenspeichern).
Seitdem wir diesen Trick kennen ist Resolve für uns noch einmal eine andere Welt. Denn die aufwendigen Nodes für Debayering, Denoising oder Motion Blur lassen sich hiermit einmal einstellen und sind ab dann vergessen. Sind die Node-Daten anschließend im Cache berechnet lässt sich auch mit Mittelklasse-GPUs in voller 4K-Auflösung ruckelfrei graden.