Post-render denoising

Един начин да ускорим ренденето на сцени с голямо количество monte-carlo noise е да рендим с относително ниско качество (= noisy резултат), а след това да пуснем отгоре denoiser, който е оптимизиран за offline рендери.

Принципът на работа на този вид денойзери е следният:

  1. Ползва се невронна мрежа, която се тренира например така:
    1. Рендят се разнообразие от сцени, като всеки изглед от всяка сцена се изрендва с ниско и с високо качество (напр., с промяна на numPaths);
    2. Двойката кадри се ползват за самообучение.;
    3. Така невронната мрежа се обучава как да премахва шум, запазвайки максимално детайлите (а не просто да blur-ва);
    4. Цели се denoise-натия нискокачествен кадър да е възможно най-близо до висококачествения;
  2. Полученият модел може да се ползва за denoise-ване на нови изображения, генерирани с нисък брой numPaths

Вашата конкретна задача ще е да интегрирате Intel-ският Open Image Denoise, като:

  1. При започване на рендеринга, трябва да има код, който да проверява дали denoise е изобщо нужен - т.е. има ли поне една RectLight в сценат, дали GI е включен, дали DOF е включен, има ли поне един Reflection с glossiness под 1.0 ...
  2. Кадърът се ренди нормално
  3. След приключване, данните от vfb[][] масива се преобразуват до очаквания формат на OpenImageDenoise, изпълнява се denoising стъпката, преобразуват се обратно до нашия формат, и се показват