Уменьшение шума (reducing noise)¶
При выполнении окончательного рендеринга важно максимально снизить уровень шума. Здесь мы обсудим ряд приёмов, которые, хотя и нарушают законы физики, особенно важны при визуализации анимации в разумные сроки. Нажимайте на примеры изображений для их увеличения и для того, чтобы хорошо увидеть разницу уровней шумов.
Трассировка путей (path tracing)¶
Cycles использует трассировку путей с последующей оценкой событий, которая не очень хорошо подходит для визуализации всех видов световых эффектов, например каустики, но имеет преимущество в том, что в состоянии визуализировать более детальные и большие сцены по сравнению с некоторыми другими алгоритмами визуализации. Это происходит потому, что нам не нужно, например, хранить в памяти фотонную карту, а так же потому, что мы можем сохранять лучи относительно последовательными для использования в кэше изображений «по требованию», по сравнению с, например, двунаправленной трассировкой пути.
Мы делаем обратное тому, что происходит в реальности, трассируя световые лучи от камеры в сцену и на источники света, а не от источников света в сцену и затем в камеру. Это имеет то преимущество, что мы не тратим световые лучи, которые не попадают в камеру, это также означает, что трудно находить некоторые световые пути, которые могли бы внести большой вклад. Световые лучи будут отправлены либо в соответствии с BSDF поверхности, либо в направлении известных источников света.
См. также
Более подробную информацию смотрите в документации по световым путям и сэмплированию.
Источник шума (the source of the noise)¶
Чтобы понять, откуда может взяться шум, возьмём, к примеру, сцену изображённую ниже. Когда мы прослеживаем луч света в месте, отмеченном белым кругом на красной точке, второе изображение ниже даёт представление о том, что «видит» диффузный шейдер.
Чтобы найти свет, отражённый от этой поверхности, нам нужно найти средний цвет всех этих пикселей. Обратите внимание на глянцевую подсветку на сфере и яркое пятно, которое отбрасывает свет на близлежащую стену. Эти горячие точки намного ярче других частей изображения и будут вносить значительный вклад в освещение этого пикселя.
Лампа является известным источником освещения, так что её местоположение уже известно, но вызываемый ей глянцевый блик(и) – это совсем другое дело. Лучшее, что мы можем сделать с трассировкой пути, – это распределить световые лучи случайным образом по полусфере, надеясь найти все важные яркие пятна. Если для некоторых пикселей мы пропускаем какое-то яркое пятно, но находим его для другого, это приводит к шуму. Чем больше сэмплов мы берём, тем выше вероятность того, что мы охватываем все важные источники света.
Используя некоторые приёмы, мы можем уменьшить этот шум. Если мы размоем яркие пятна, они станут больше и менее интенсивными, так что их станет проще найти и это уменьшит шум. Это не даст нам в точности тот же самый результат, но часто он достаточно близок, если смотреть на него через диффузное или мягкое глянцевое отражение. Ниже приведён пример использования фильтра глянца и сглаживающего спада света.
Отскоки (bounces)¶
В реальности свет отскакивает огромное количество раз, поскольку его скорость очень велика. На практике – большее количество отскоков порождает большее количество шума, и может быть полезно использовать что-то вроде предустановки, вроде «ограниченного глобального освещения» в разделе «пути света», которая использует меньше отскоков для разных типов шейдеров. Рассеивающие поверхности обычно могут обойтись меньшим количеством отскоков, в то время как глянцевые поверхности нуждаются в немного большем, а шейдеры пропускания, такие как стекло, обычно нуждаются в наибольшем количестве отскоков.
Также важно использовать цвета шейдера, которые не имеют компоненты со значением 1.0 или близкими к нему; постарайтесь сохранить максимальное значение 0.8 или меньше и сделайте свои источники света ярче. В действительности, поверхности редко полностью отражают весь свет, но есть, конечно, исключения; как правило, через стекло проходит больше света, поэтому для него нужно больше отскоков. Высокие значения для цветовых компонентов, как правило, вносят шум, поскольку при отскоках от каждой поерхности интенсивность света уменьшается не сильно.
Каустика и фильтр глянца (caustics and filter glossy)¶
Каустика – это известный источник шума, вызывающий «светлячки». Они возникают из-за того, что рендереру сложно найти зеркальные блики, видимые через мягкое глянцевое или диффузное отражение. Существует опция «без каустики», которая полностью отключает глянец за диффузным отражением. Многие рендереры обычно отключают каустику по умолчанию.
Однако использование параметров с отключёнными галочками т.е. без каустики приведёт к потере света, кроме того, он не покрывает случай, когда резкое глянцевое отражение рассматривается сквозь мягкое глянцевое отражение. Существует параметр «фильтр глянца», уменьшающий шум в таких случаях за счёт точности. Он размывает резкое глянцевое отражение, чтобы его было проще найти, увеличивая шероховатость шейдера.
Изображения выше показывают разницу между настройками «по умолчанию», с отключённой каустикой и с фильтром глянца, установленным на 1.0.
Спад света (light falloff)¶
В действительности свет в вакууме всегда будет падать со скоростью 1/(расстояние^2). Однако, когда расстояние стремится к нулю, это значение стремится к бесконечности, и мы можем получить очень яркие пятна на изображении. В основном это проблема для непрямого освещения, у которого вероятность попадания в небольшое, но очень яркое пятно довольно низка и оно случается редко. Это типичный пример возникновения светлячков.
Для уменьшения данной проблемы, нода «спад света» имеет фактор «сглаживания», который можно использовать для уменьшения максимальной интенсивности света, которую свет может внести по отношению к близлежащим поверхностям. Изображения выше показывают разницу между спадом «по умолчанию» и сглаживанием со значением 1.0.
Сэмплирование множественной значимости (multiple importance sampling)¶
Материалы с шейдерами излучения можно настроить на использование «сэмплирования множественной значимости» (настройки материала). Это означает, что они будут получать лучи, направленные прямо на них, а не попадать туда на основе лучей, случайно отражающихся повсюду. Для очень ярких мешей-источников света это может значительно снизить шум. Однако, если излучение не является особенно ярким, оно будет отбирать сэмплы от других ярких источников света, для которых важно, чтобы их нашли таким образом.
В данном случае довольно трудно угадать оптимальную настройку; она может быть установлена путём проб и ошибок, но часто становится ясно, какой светящийся объект влияет только на своё ближайшее окружение, а когда свет от меша используется как лампа и для него нужно включать этот параметр. Ниже приведён пример, в котором сферы с излучением мало способствуют общему освещению, и изображение визуализируется с чуть меньшим шумом при отключении у них «множественной значимости».
Фон мира также имеет опцию (настройки) множественной значимости. В основном это полезно для карт окружения, которые имеют небольшие яркие пятна более, чем являются сглаженными. Затем эта опция в предварительной обработке определит яркие пятна и направит лучи света прямо на них. Опять же, включение этой опции может отнять сэмплы от более важных источников света, когда это совершенно не нужно.
Стекло и прозрачные тени (glass and transparent shadows)¶
При отключении каустики, тени от стекла могут казаться слишком тёмными, а при фильтре глянца каустика может быть слишком мягкой. Мы можем создать шэйдер стекла, который будет использовать «BSDF стекла» если смотреть прямо и «прозрачный BSDF» при просмотре отражений. Прозрачный BSDF можно использовать для прозрачных теней, чтобы находить источники света прямо через поверхности, и он даст правильно окрашенные тени, но без каустики. Для определения того, когда какой шэйдер использовать, используется нода «путь света».
Выше мы видим структуру нод, используемую для приёма с прозрачностью стекла; слева рендер имеет тёмные тени из-за отсутствия каустики, а справа – рендер с использованием приёма.
Световые порталы (light portals)¶
При рендеринге дневной сцены в помещении, где большая часть света поступает через оконные и/или дверные проёмы – интегратору сложно находить к ним путь. Чтобы это исправить, используйте «световые порталы». Затем вам нужно будет изменить их форму, чтобы они соответствовали форме проёмов, которые вы пытаетесь заполнить.
Шумоподавление (denoising)¶
Даже при всех настройках, описанных выше, всегда будет оставаться некоторый шум рендеринга, независимо от того, сколько сэмплов вы используете. Чтобы это исправить, есть метод постобработки, который очищает оставшийся шум. Чтобы его использовать – включите «шумоподавление» на вкладке «рендер» в свойствах.
Ниже представлен пример рендеринга от The Pixelary.
Подавление светлячков (clamp fireflies)¶
В идеале, используя все предыдущие приёмы, cветлячки должны быть устранены, однако они всё ещё могут возникнуть. Чтобы с ними справиться, интенсивность, которую любой отдельный сэмпл светового луча будет вносить в пиксель, может быть «ограничена» до максимального значения с помощью интегратора «отсечения».
Если параметр установлен в слишком низкое значение, это может привести к отсутствию бликов на изображении, которые могут быть полезны для сохранения эффектов камеры, таких как засветка или блики. Чтобы смягчить это противоречие, часто бывает полезно отсекать только отражённые отскоки, оставляя нетронутыми блики, непосредственно видимые камерой.