Post-render denoising
Един начин да ускорим ренденето на сцени с голямо количество monte-carlo noise е да рендим с относително ниско качество (= noisy резултат), а след това да пуснем отгоре denoiser, който е оптимизиран за offline рендери.
Принципът на работа на този вид денойзери е следният:
- Ползва се невронна мрежа, която се тренира например така:
- Рендят се разнообразие от сцени, като всеки изглед от всяка сцена се изрендва с ниско и с високо качество (напр., с промяна на numPaths);
- Двойката кадри се ползват за самообучение.;
- Така невронната мрежа се обучава как да премахва шум, запазвайки максимално детайлите (а не просто да blur-ва);
- Цели се denoise-натия нискокачествен кадър да е възможно най-близо до висококачествения;
- Полученият модел може да се ползва за denoise-ване на нови изображения, генерирани с нисък брой numPaths
Вашата конкретна задача ще е да интегрирате Intel-ският Open Image Denoise, като:
- При започване на рендеринга, трябва да има код, който да проверява дали denoise е изобщо нужен - т.е. има ли поне една RectLight в сценат, дали GI е включен, дали DOF е включен, има ли поне един Reflection с glossiness под 1.0 ...
- Кадърът се ренди нормално
- След приключване, данните от vfb[][] масива се преобразуват до очаквания формат на OpenImageDenoise, изпълнява се denoising стъпката, преобразуват се обратно до нашия формат, и се показват