Это третья часть перевода подробной статьи о профессиональном рендеринге. Вторая часть была о глобальном освещении.
1.2 Ray tracing против решений на основе облака точек.
Ray tracing (трассировка лучей, рейтрейсинг) – лишь один из подходов к реализации глобального освещения. Его основной конкурент – point based GI (глобалка на основе облака точек, еще по тексту вы встретите название point source). На самом деле, терминология может немного сбивать с толку: решение может быть вообще не основано на ray tracing, но все же содержать какие-то процедуры с испусканием лучей. Однако в этой статье, говоря «ray tracing», мы будем говорить о полностью честных алгоритмах трассировки лучей или путей.
Перед обсуждением ray tracing важно понять, как работает point based GI, поскольку на реальном производстве финальный результат достигается комбинацией способов. К примеру, последний фильм от Pixar Monsters University в основном построен на трассировке лучей и физически корректных текстурах и освещении. Но для подповерхностного рассеяния (SSS) было использовано point based решение (возможно, в следующем фильме это будет по-другому). SSS – это способ просчета мягкого свечения для кожи, которая особенно сильно рассеивает красный цвет, чтоб получить «восковое» ощущение живой кожи, а не гладкого пластика. SSS – ключевой эффект в персонажной анимации, и он не так уж нов. К примеру, Джо Леттери (Joe Letteri, старший VFX супервайзер Weta Digital) усиленно использовал его в трилогии «Властелин колец» (смотрите
Джо Леттери из Weta Digital рассказывает fxguide о приходе в его студию эры освещения и рендеринга на основе реальной физики.
Point-based GI – метод сам по себе относительно новый и быстрый. К тому же, он, в отличие от рейтрейсинга, не подвержен шуму. «Впервые метод был использован для Pirates of the Caribbean 2 и Surf’s Up, и с тех пор – в более чем в 40 других фильмах» (
Point-based GI — это многопроходный метод:
- Первый проход генерирует облако точек из данных о прямом освещении микрополигонов.
- Второй проход рассчитывает n-1 отскоков глобального освещения для облака точек (второй проход может быть пропущен, если нужен только один отскок).
- Третий проход рассчитывает и рендерит непрямое освещение из облака точек.
Многопроходность метода делала его неудобным для интерактивной настройки освещения. Последняя версия от Pixar описана
Для Университета Монстров Pixar изначально планировала использовать решения с неполной трассировкой. Проблемным было производственное использование ray traced GI для сцен с тяжелой геометрией и сложными шейдерами. По оценке команды Pixar, узким местом было не время на трассировку вообще, а время на обработку:
- дисплейсмента,
- источников света и
- поверхностей в точках падения лучей (а последнее, заметим, в свою очередь включает время на наложение текстурных карт, генерацию процедурных текстур, вычисление теней и отражений (BRDF), время на подготовку и выполнение шейдеров, вызов внешних модулей и так далее).
Точечное решение (point solution) означало: «Мы уменьшим время, отделив видонезависимую (к примеру, блики зависят от угла, под которым мы смотрим на материал) часть шейдера (т.е. отделим radosity, которая нужна для GI) и кэшируем ее. При распределенной (сетевой) трассировке GI, radiosity считается по запросу (только когда надо) и используются повторно множество раз. Кстати, при таком кэшировании нужно меньше лучей для теней.»
Кэширование radiosity включено в Pixar-овский PhotoRealistic RenderMan, который поддерживает и прогрессивный ray tracing, и REYES рендеринг. Кэш содержит radiosity для участков поверхности в нескольких разрешениях.
«В результате мы имеем однопроходный метод глобального освещения, быстрый и достаточно гибкий для использования в кинопроизводстве — как для интерактивной настройки материалов и освещения, так и для финального рендеринга. Кэщирование radiosity дает прирост скорости в 3-12 раз для простых сцен, и более чем в 30 раз — для реальных продакшн сцен», говорится в статье. И действительно, сравнение ранних версий RenderMan с его новой версией, продемонстрированное на прошлогоднем RenderMan User Group 2012, было чрезвычайно впечатляющим.
Так зачем мучиться и использовать трассировку? Если другие замечательные методы могут работать в десятки раз быстрее, зачем даже рассматривать решения, полностью основанные на рейтрейсинге? Как заставить рейтрейсер рендерить настолько быстро, насколько вообще возможно? Что еще интересней, даже для собственного мультика Monster University (MU) Pixar использовала точечное решение (point solution) только для просчета SSS (использовался знаменитый теперь дипольный метод Йенсена (Jensen), или его разновидность, когда SSS моделируется рассеянием, то есть вид данной точки определяется интегралом по поверхности от произведения функции рассеяния (diffusion kernel) на плотность облучения (случайное освещение) поверхности). Зачем Pixar вообще смотрела в сторону практически полного рейтрейсинга для MU?
Читайте продолжение - Как получают реалистичные материалы и освещение.
Спасибо Андрею Пшеничному за перевод!
Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.
Извините, в данный момент комметарии закрыты.