Sistema di rendering centrale in Nuke, Fusion o simili — elabora alberi di nodi in tempo reale o farm. Determina velocità e precisione di output.
Il motore di compositing è il cuore di ogni software di compositing professionale: è il motore che esegue la tua struttura di nodi in tempo reale o durante il rendering finale. È meglio immaginarlo come un calcolatore intelligente che traccia ogni connessione tra i nodi, ottimizza i flussi di dati e decide quali calcoli devono avvenire e in quale ordine. In Nuke lavori con il motore DAG (Directed Acyclic Graph), che è estremamente efficiente perché riconosce calcoli ridondanti e memorizza i risultati tra i frame. In Fusion, una logica simile è in esecuzione, solo che l'integrazione 3D è più profondamente integrata nel motore.
La velocità del tuo lavoro dipende direttamente dall'ottimizzazione del motore, e questo lo noti immediatamente scorrendo lunghi shot o durante il rendering di complessi stack di keyer. Un motore efficiente dà priorità a ciò che vedi al momento (ottimizzazione del viewport) e posticipa i calcoli più complessi. Ecco perché la riproduzione è fluida, anche se hai collegato sette nodi di rotoscoping, quattro qualifier e un tracker 3D in sequenza. Non è magia, è un'allocazione intelligente delle risorse da parte del motore. Riconosce anche che certi nodi possono essere memorizzati nella cache perché non cambiano, ad esempio un nodo di correzione colore statico prima di un'animazione di rotoscoping.
Durante il rendering su farm, il motore diventa ancora più critico. La tua struttura di nodi deve poter essere interpretata dal motore in modo che possa essere distribuita su centinaia di CPU. È un atto di bilanciamento: troppe dipendenze tra i nodi e il motore non può parallelizzare; troppa poca struttura e incontrerai colli di bottiglia, specialmente con lavori a 4K-60fps. Ecco perché è importante capire dove il motore individua i colli di bottiglia nel tuo script: nodi che bloccano tutto.
In pratica, ciò significa: mantieni i tuoi flussi lineari ed evita dipendenze circolari (che il motore rifiuta immediatamente). Utilizza intelligentemente il collegamento tramite espressioni: ogni espressione costa tempo CPU durante il rendering. E quando lavori con alta profondità di bit (16 o 32 bit), il motore consuma più memoria, ma diventa più preciso. La maggior parte degli errori non deriva da un uso improprio, ma dal fatto che il tuo script sovraccarica il motore: troppi nodi di lettura contemporaneamente, sequenze non compresse o un loop che non volevi.