Идея заключается в том, что для неподвижного объекта в неизменных условиях освещения совсем необязательно производить расчет освещения, распределения теней и так далее в каждом кадре - ведь ничего не меняется! Гораздо эффективнее сохранить эту информацию в текстуру и в дальнейшем использовать ее для визуализации (что дешево) вместо повторного расчета освещенности (что дорого).

После запекания освещения объекта в текстуру (или в цвет вершин) в дальнейшем можно исключить запеченный объект из расчета освещения, что существенно ускоряет процесс визуализации без потери качества. То есть, в итоге получается текстура, в которой уже записано все освещение и шейдинг. Часто запекание используется для записи сложного освещения, полученного, например, с помощью Global Illumination, Final Gather или Area Lights для того чтобы не делать эти просчеты на каждом кадре и тем самым увеличить скорость рендера. Также запекание используется при визуализации разного рода пролета (camera fly) по интерьерам, где объекты неподвижны, но алгоритм освещения чрезвычайно дорогой - с использованием большого количества источников света, глобального освещения мягких теней. Запись информации об освещении и тенях в файловую текстуру (baking) позволит существенно сократить время просчета.

Для примера представим себе интерьер комнаты, освещенный с помощью Global Illumination, Final Gather’a и множества источников света с размытыми тенями. Один кадр считается, допустим, 2 часа. Нам нужно визуализировать анимацию с камерой, пролетающей по комнате, скажем, кадров на 100200. И что же теперь, ставить на рендер и ждать две недели? В данной ситуации как раз очень уместно воспользоваться запеканием и записать в текстуру освещение на основных объектах, например, на полу, стенах и так далее, результате, потеряв немного времени на настройку сцены и сам процесс запекания, мы в десятки раз сокращаем время визуализации. А если постараться и запечь все объекты, то получим рендер кадра за считанные секунды при совершенно одинаковом качестве картинки.

Примечание: Если вы планируете визуализацию длинной анимации и понимаете что простой рендер будет очень долгим, то лучше заранее подготовить обьекты для запекания соответствующим образом - это в последствии сэкономит много времени и облегчит вам работу.

В общем, имеет смысл запекать все, что не изменяется от кадра к кадру и при этом долго просчитывается. Единственное, что обычно не подлежит запеканию, - это реальные отражения, преломления и блики. Так как эти компоненты зависят от положения камеры и, записав их, скажем, на первом кадре, мы получим корректный результат только в этом кадре, а на всех остальных блики и отражения/преломления останутся на месте и не будут реагировать на движение камеры. Сам процесс запекания поддерживает все элементы шейдера, включая отражение, преломление и блики, но результат будет корректный только в том случае, если камера не движется.

Отдельным пунктом стоит отметить запекание оклюжена (occlusion), так как он является достаточно частым предметом для запекания, потому что он не зависит от освещения, и объект с запеченным оклюженом может быть даже потом анимирован.


⇐ вернуться назад | | далее ⇒