Комбинация теней и света необходима для визуализации фотореалистичного 3D-объекта на 2D-экранах. Тени - это не что иное, как недостаток света, поэтому обсуждение источника света кажется идеальным началом нашего путешествия.

Источники света

Практически любая 3D-сцена содержит один или несколько независимых источников света. Яркость пикселей рассчитывается для каждого источника света отдельно и суммируется, чтобы получить количество света, отраженного в сторону камеры. Мы обсудим пять типов источников света:

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

  • Направленный свет - это простейший тип света, способный создавать тени. Учитывается только направление источника света и экспонируемой поверхности. В реальной жизни нет аналога этому типу света, но во многих случаях его можно использовать для простого и дешевого моделирования определенных световых эффектов. Это правильный выбор для моделирования очень мощного и удаленного источника света. Солнечный свет - прекрасный пример направленного света.

  • Точечный свет излучается во всех направлениях от его центра. Помимо направлений, он также принимает во внимание расстояние между поверхностью и источником света. Солнце в масштабе Солнечной системы - ближайший реальный пример точечного света.
  • Spotlight - это ограниченная версия точечного света. Светит только под определенным углом. Лампа - прекрасный реальный пример этого типа источника света. Чаще всего используется для создания фотореалистичных изображений.

  • Area light - это усовершенствованная версия точечного света. В этом случае свет излучается произвольной формой вместо точки. Световой меч - самый известный пример локального света, в то время как хорошим примером локального света в реальной жизни может быть неоновый свет.

Свет и взаимодействие с поверхностью

Чтобы получить окончательное изображение, свет, излучаемый источниками света, должен правильно отражаться от поверхностей. Есть несколько разных способов взаимодействия.

  • Эмиссионное освещение - самый простой вид освещения. Он игнорирует все источники света и определяет самую низкую яркость объекта. В некоторой степени это похоже на окружающий свет, который применяется к отдельному объекту. Усовершенствованный механизм рендеринга может обрабатывать объект с Emission Lighting как источник света Area. Эмиссионное освещение - это именно то, что доктор прописал для визуализации светового меча. Его также можно использовать для нимба и многих других мистических блестящих объектов.
  • Рассеянное освещение - это часть света, которая отражается от идеальных матовых поверхностей. Это наиболее важный вид освещения для точного восприятия формы. Он рассчитывается как скалярное произведение между вектором нормали к поверхности и вектором светового луча. Векторная нормаль - это вектор, перпендикулярный поверхности в определенной точке. На этот тип отражения не влияет соотношение между положением камеры и поверхности. На рисунке ниже показано, что луч, создаваемый источником света, одинаково отражается в обе камеры в случае диффузного отражения.

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

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

Вычисление на GPU

Расчет освещения - очень дорогостоящая часть рендеринга, поэтому важно понимать, как это можно сделать эффективным способом. Также важно обсудить агрессивные подходы к оптимизации процесса и связанные с ними компромиссы.

Есть два основных варианта вычислений с ускорением на GPU. Он может выполняться во фрагментном / пиксельном шейдере или в вершинном шейдере. Подробнее о шейдерах можно прочитать здесь.

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

Резюме

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