Скорочування Шуму – Reducing Noise

При здійсненні фінального рендера важливо, наскільки це можливо, скоротити шум. Тут ми обговоримо ряд хитрощів, які, порушуючи закони фізики, особливо важливі при рендерингу анімацій у межах розумного часу. Клацайте для збільшення зображень прикладів, щоб бачити різницю у шумі.

Простеження Шляху – Path Tracing

Cycles використовує простеження шляху з наступною оцінкою подій, яка не є доцільною при рендерингу усіх типів ефектів освітлення, таких як каустика, але має перевагу у тому, що здатна рендерити більш деталізовані та великі сцени, у порівнянні з іншими алгоритмами рендерингу. Це тому, що нам не потрібно зберігати, наприклад, розкладку фотонів у пам’яті, і тому, що ми можемо тримати промені відносно послідовними, щоб використовувати кеш зображення на вимогу, у порівняні з, наприклад, двонапрямним простеженням шляху.

../../../_images/render_cycles_introduction_rays.svg

Ми робимо зворотне до того, що відбувається у реальності, простежуючи світлові промені від камери у сцену та на освітлювачі, а не з джерел світла у сцену, а потім у камеру. Це має перевагу у тому, що ми не витрачаємо світлові промені, які не доходять до камери, однак, це також означає, що важко знайти кілька шляхів світла, що зможуть все зробити. Промені світла будуть надіслані відповідно до поверхні BRDF або у напрямку відомих джерел освітлення.

Дивись також

Детальніше дивіться документацію про Light Paths та Sampling.

Джерело Шуму – The Source of the Noise

Для розуміння, звідки береться шум, візьмемо, наприклад, сцену нижче. Коли ми простежуємо промінь світла у локації, позначеній білим кругом на червоній точці, то друге зображення дає бачення того, що «бачить» шейдер розсіяння.

Для знаходження світла, що відбивається від цієї поверхні, нам необхідно знайти усереднений колір з усіх цих пікселів. Зверніть увагу на глянцеву підсвітку на сфері та на яскраву пляму, яку відкидає освітлювач поблизу на стіну. Ці гарячі плями є набагато яскравішими, ніж інші частини зображення, та робитимуть внесок значно в освітлювання цього пікселя.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-reference.jpg

Сцена.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye.jpg

Випромінювання у точці відтінювання.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-hotspot.jpg

Виявлені підсвітки.

Цей освітлювач є відомим джерелом світла, а тому його локація вже відома, але глянцева підсвітка(и), які він спричиняє – це інше питання. Найкраще, що ми можемо зробити за допомогою простеження шляху, – це розподілити промені світла випадково по півсфері, сподіваючись виявити усі важливі яскраві плями. Якщо для деяких пікселів ми пропустимо якусь яскраву пляму, але ми знаходимо її для інших пікселів, то це спричинить шум. Чим більше вибірок ми візьмемо, тим вища ймовірність того, що ми охопимо усі важливі джерела освітлення.

За допомогою деяких хитрощів ми можемо скоротити цей шум. Якщо ми розмиємо ці яскраві плями, то вони стануть більшими та менш інтенсивними, що полегшить їх знаходження та дасть менше шуму. Це не дасть точно такого ж результату, але часто він буде достатньо близьким при огляді його через розсіяння або м’яке глянцеве відбиття. Нижче наведено приклад використовування Фільтра Глянцю – Glossy Filter та Спаду Освітлення – Light Falloff.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur-reference.jpg

Використання Glossy Filter та Light Falloff.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur.jpg

Випромінювання у точці відтінювання.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur-hotspot.jpg

Виявлені підсвітки.

Відскоки – Bounces

У реальності світло відскакує величезну кількість разів у зв’язку з тим, що швидкість світла є дуже високою. На практиці більше відскоків привнесе більше шуму і може бути доцільно вжити щось на кшталт передустави Limited Global Illumination на панелі Light Paths, яка використовує лише по кілька відскоків для різних типів відтінювачів. Поверхні розсіяння типово можуть потребувати меншої кількості відскоків, тоді як поверхні глянцю потребують їх дещо більше, а шейдери пропускання, такі як скло, зазвичай, вимагають найбільше відскоків.

../../../_images/render_cycles_optimizations_reducing-noise_0bounce.jpg

Без відскоків.

../../../_images/render_cycles_optimizations_reducing-noise_2bounce.jpg

Максимум два відскоки.

../../../_images/render_cycles_optimizations_reducing-noise_4bounce.jpg

Максимум чотири відскоки.

Також важливим є використання кольорів для шейдера, що не мають значень 1.0 або близько цього для компонент; намагайтеся зберігати максимальне значення 0.8 або менше для колірних компонент та робіть ваші освітлювачі яскравішими. У реальності, поверхні рідко ідеально відбивають усе світло, але, звичайно, є винятки; зазвичай, скло буде пропускати більше світла крізь себе, тому нам потрібно для нього більше відскоків. Вищі значення для колірних компонент тяжіють уводити шум, оскільки інтенсивність світла далі значно не зменшується при відскакуванні його від кожної поверхні.

Каустика та Фільтр Глянцю – Caustics and Filter Glossy

Caustics are a well-known source of noise, causing Fireflies. They happen because the renderer has difficulty finding specular highlights viewed through a soft glossy or diffuse reflection. There is a No Caustics option to disable glossy behind a diffuse reflection entirely. Many renderers will typically disable caustics by default.

../../../_images/render_cycles_optimizations_reducing-noise_reference.jpg

Стандартні устави.

../../../_images/render_cycles_optimizations_reducing-noise_no-caustics.jpg

Вимкнені каустики.

../../../_images/render_cycles_optimizations_reducing-noise_filter-glossy.jpg

Значення Filter Glossy більше за нуль.

Проте, використання варіанту Без Каустик буде призводити до пропущення освітлення і він все ще не охоплює випадок, коли різке відбиття глянцю переглядається через м’яке відбиття глянцю. Існує опція Filter Glossy для скорочення шуму у таких випадках, але ціною точності. Це буде розмивати різке відбиття глянцю для полегшення його знаходження, збільшуючи шорсткість – Roughness для шейдера.

Вище наведені зображення показують випадки зі стандартними уставами, без каустик та фільтром глянцю, заданим у значення 1.0.

Спад Освітлення – Light Falloff

In reality light in a vacuum will always fall off at a rate of 1/(distance^2). However, as distance goes to zero, this value goes to infinity and we can get very bright spots in the image. These are mostly a problem for indirect lighting, where the probability of hitting such a small but extremely bright spot is low and so happens only rarely. This is a typical recipe for Fireflies.

../../../_images/render_cycles_optimizations_reducing-noise_falloff-hard.jpg

Жорсткий Спад.

../../../_images/render_cycles_optimizations_reducing-noise_falloff-soft.jpg

М’який Спад.

Для зменшення цієї проблеми вузол «Спад Освітлення» – Light Falloff має фактор Smooth, котрий може використовуватися для скорочення максимальної інтенсивності світла, що може бути привнесене для поверхонь поблизу. Зображення вище показують приклади стандартного спаду та спаду зі значенням Smooth як 1.0.

Багатовибірка за Важливістю – Multiple Importance Sampling

Матеріали з шейдером Emission можуть бути сконфігуровані, щоб використовувати Багатовибірку за Важливістю – Multiple Importance Sampling (Устави Матеріалів – Material Settings). Це означає, що вони будуть отримувати промені, послані у напрямку прямо на них, а не вибиратися по залишковому принципу на основі випадкових відскоків навколо. Для дуже яскравих джерел світних сітей (mesh light) це може суттєво скоротити шум. Проте, коли емісія не є особливо яскравою, то це буде відбирати вибірки з інших яскравих джерел світла, для яких важливо виявити їх таким способом.

Оптимальну уставу тут важко вгадати; це може бути справою проб і помилок, але часто ясно, що якийсь яскравий об’єкт може привносити світло тільки локально, тоді як світна сіть (mesh light) як освітлювач, потребує увімкнення цієї опції. Ось приклад, де емісійні сфери привносять мало в освітлення, і рендери зображень з дещо меншим шумом при вимкненій опції Multiple Importance.

../../../_images/render_cycles_optimizations_reducing-noise_sample-lamp.jpg

Multiple Importance вимкнуто.

../../../_images/render_cycles_optimizations_reducing-noise_no-sample-lamp.jpg

Multiple Importance увімкнуто.

Фон світу також має опцію Multiple Importance (Устави – Settings). Це здебільшого корисно для розкладок середовища, що мають малі яскраві плями в них, а не є плавними. Ця опція потім буде, при попередній обробці, визначати ці яскраві плями та посилати промені світла прямо на них. Знову ж, вмикання цієї опції може відбирати вибірки з більш важливих джерел світла, з яких не потрібно брати.

Скло і Прозорі Тіні – Glass and Transparent Shadows

При вимкненні каустик скло буде пропускати тіні, і з фільтром глянцю вони можуть бути надто м’якими. Ми можемо зробити шейдер скла, що буде використовувати Glass BSDF при перегляді прямо та Transparent BSDF при перегляді побічно. Transparent BSDF може використовуватися для прозорих тіней для знаходження джерел світла прямо крізь поверхні та буде давати належно забарвлені тіні, але без каустик. Вузол Light Path використовується для визначення того, коли використовувати який з цих двох шейдерів.

../../../_images/render_cycles_optimizations_reducing-noise_glass-group.png

Оптимізований шейдер скла.

Вище ми могли бачити уклад вузлів, що використовується для хитрості прозорості скла; зліва рендер має надто багато тіні через відсутність каустик, а справа рендер з цією хитрістю.

../../../_images/render_cycles_optimizations_reducing-noise_glass-too-much-shadow.jpg

Default Glass BSDF.

../../../_images/render_cycles_optimizations_reducing-noise_glass-trick.jpg

Оптимізований Шейдер Скла.

Портали Освітлення – Light Portals

При рендерингу інтер’єрної сцени, освітленої денним світлом, в якій більшість світла входить крізь вікно або відкриті двері, інтегратору важко знаходити шлях до джерел світла. Для виправлення цього використовуйте Портали Освітлення – Light Portals. Далі вам необхідно модифікувати форму освітлювача відповідно до форми отвору, через яке світло надходить і джерело якого ви намагаєтеся заповнити.

../../../_images/render_cycles_light-settings_portals2.jpg
../../../_images/render_cycles_light-settings_portals.jpg

Знешумлення – Denoising

Навіть з усіма описаними вище уставами на рендері завжди зрештою буде шум, не залежно від того, скільки вибірок ви використовуєте. Для виправлення цього є техніка після оброблення для очищення фінального шуму. Для використання цього увімкніть «Знешумлення» – Denoising у вкладці «Шари Рендера» – Render Layers Редактора Властивостей – Properties editor.

Нижче наведено приклад рендера від The Pixelary.

../../../_images/render_layers_denoising_example1.jpg

Приклад рендера перед знешумленням.

../../../_images/render_layers_denoising_example2.jpg

Приклад рендера після знешумлення.

Затиск Світлячків – Clamp Fireflies

Ideally with all the previous tricks, Fireflies would be eliminated, but they could still happen. For that, the intensity that any individual light ray sample will contribute to a pixel can be clamped to a maximum value with the integrator Clamp setting.

Якщо ця устава буде задана надто низькою, це може спричинити пропуск підсвіток на зображенні, що може бути корисно для збереження ефектів камери, таких як свічення та відблиск. Для послаблення цієї загадки часто корисно затискати тільки побічні – indirect відскоки, залишаючи підсвітки, що прямо (directly) видимі для камери, неторканими.

../../../_images/render_cycles_optimizations_reducing-noise_no-clamp.jpg

Без затиску – Clamp на 0.

../../../_images/render_cycles_optimizations_reducing-noise_clamp4.jpg

Із затиском – Clamp на 4.