Lo studio di animazione Dreamworks ha reso open source il sistema di rendering MoonRay, che utilizza il ray tracing basato sull'integrazione numerica Monte Carlo (MCRT). Il prodotto è stato utilizzato per renderizzare i film d'animazione “Dragon Trainer 3”, “I Croods 2: Housewarming Party”, “Bad Boys”, “Trolls. World Tour", "The Boss Baby 2", "Everest" e "Il gatto con gli stivali 2: L'ultimo desiderio". Il codice è pubblicato sotto la licenza Apache 2.0 e sarà ulteriormente sviluppato come prodotto open source nell'ambito del progetto OpenMoonRay.
Il sistema è stato sviluppato da zero, liberato dalla dipendenza da codice obsoleto ed è pronto per la creazione di opere professionali, come i lungometraggi. L'attenzione iniziale del progetto era rivolta all'elevata efficienza e scalabilità, incluso il supporto per rendering multi-thread, parallelizzazione, istruzioni basate su vettori (SIMD), simulazione realistica dell'illuminazione, elaborazione dei raggi lato GPU o CPU, simulazione realistica dell'illuminazione basata su tracciamento del percorso, rendering strutture volumetriche (nebbia, fuoco, nuvole).
Per organizzare il rendering distribuito, utilizziamo il nostro framework Arras, che ci consente di distribuire i calcoli su più server o ambienti cloud. Il codice Arras sarà open source insieme al codice base MoonRay principale. Per ottimizzare i calcoli dell'illuminazione in ambienti distribuiti, è possibile utilizzare la libreria di ray tracing Intel Embree e il compilatore Intel ISPC per vettorizzare gli shader. È possibile interrompere il rendering in qualsiasi momento e riprendere le operazioni dalla posizione interrotta.
Il pacchetto include anche un'ampia libreria di materiali di rendering basato sulla fisica (PBR) testati in progetti di produzione e il livello USD Hydra Render Delegates per l'integrazione con sistemi familiari di creazione di contenuti che supportano il formato USD. È possibile utilizzare varie modalità di generazione delle immagini, da quelle fotorealistiche a quelle altamente stilizzate. Con il supporto del rendering distribuito, gli animatori possono tenere traccia dei risultati in modo interattivo e eseguire il rendering simultaneo di più versioni di una scena in diverse condizioni di illuminazione, diverse proprietà dei materiali e da diverse prospettive.
Fonte: opennet.ru