Попиксельное освещение - Per-pixel lighting
В компьютерная графика, попиксельное освещение относится к любой технике для освещение изображение или сцена, которые вычисляют освещенность для каждого пикселя визуализированного изображения. Это контрастирует с другими популярными методами освещения, такими как вершинное освещение, который рассчитывает освещенность в каждой вершине 3D модель а потом интерполирует полученные значения по граням модели для расчета окончательных значений цвета для каждого пикселя.
Попиксельное освещение обычно используется с такими методами, как нормальное отображение, рельефное отображение, зеркальность, и теневые объемы. Каждый из этих методов предоставляет некоторые дополнительные данные об освещаемой поверхности или сцене и источниках света, которые вносят свой вклад в окончательный вид и ощущение поверхности.
Большинство современных движков видеоигр реализуют освещение с использованием попиксельных методов вместо вершинного освещения для достижения большей детализации и реализма. В id Tech 4 движок, используемый для разработки таких игр, как Brink и Судьба 3, был одним из первых игровых движков, реализовавших полностью попиксельный движок затенения. Все версии CryENGINE, Обмороженный двигатель, и Unreal Engine, среди прочего, также реализуют методы попиксельного затенения.
Отложенное затенение это недавняя разработка в области попиксельного освещения, известная своим использованием в Frostbite Engine и Battlefield 3. Методы отложенного затенения позволяют недорого рендерить потенциально большое количество небольших источников света (другие подходы к попиксельному освещению требуют полноэкранных вычислений для каждого источника света в сцене, независимо от размера).
История
Хотя только недавно персональные компьютеры и видеооборудование стали достаточно мощными, чтобы выполнять полное попиксельное затенение в приложениях реального времени, таких как игры, многие из основных концепций, используемых в моделях попиксельного освещения, существуют десятилетиями.
Фрэнк Кроу опубликовал статью, описывающую теорию теневые объемы в 1977 г.[1] Этот метод использует трафаретный буфер для определения областей экрана, соответствующих поверхностям, лежащим в «теневом объеме», или форме, представляющей объем пространства, затмеваемый источником света каким-либо объектом. Эти затененные области обычно затемняются после рендеринга сцены в буферы путем сохранения затененных областей в буфере трафарета.
Джим Блинн впервые представил идею нормальное отображение в 1978 году СИГГРАФ бумага.[2] Блинн отметил, что более ранняя идея неосвещенного наложения текстуры, предложенная Эдвин Кэтмелл было нереально для моделирования шероховатых поверхностей. Вместо наложения текстуры на объект для имитации шероховатости, Блинн предложил метод расчета степени освещения, которое точка на поверхности должна получать, на основе установленного «возмущения» нормалей по поверхности.
Аппаратный рендеринг
Приложения реального времени, такие как видеоигры, обычно реализует попиксельное освещение с помощью пиксельные шейдеры, позволяя GPU оборудование для обработки эффекта. Сцена, которая должна быть визуализирована, сначала растрируется на несколько буферов, хранящих различные типы данных, которые будут использоваться при визуализации сцены, такие как глубина, нормальное направление и диффузный цвет. Затем данные передаются в шейдер и используются для вычисления окончательного вида сцены, пиксель за пикселем.
Отложенное затенение - это метод попиксельного затенения, который недавно стал применяться в играх.[3] При отложенном затенении «g-буфер» используется для хранения всех терминов, необходимых для затенения финальной сцены на уровне пикселей. Формат этих данных варьируется от приложения к приложению в зависимости от желаемого эффекта и может включать обычные данные, данные о местоположении и т. Д. зеркальный данные, размытый данные, эмиссионный карты и альбедо, среди прочего. Используя несколько целей рендеринга, все эти данные могут быть визуализированы в g-буфер за один проход, а шейдер может вычислить окончательный цвет каждого пикселя на основе данных из g-буфера в последнем «отложенном проходе».
Программный рендеринг
Попиксельное освещение также выполняется в программном обеспечении во многих коммерческих приложениях рендеринга высокого класса, которые обычно не выполняют рендеринг с интерактивной частотой кадров. Это называется оффлайн-рендерингом или программный рендеринг. NVidia's ментальный луч программное обеспечение для рендеринга, которое интегрировано с такими пакетами, как Autodesk с Softimage это хорошо известный пример.
Примечания
- ^ Кроу, Франклин С: «Алгоритмы теней для компьютерной графики», Компьютерная графика (Материалы SIGGRAPH '77), т. 11, вып. 2, 242-248.
- ^ Блинн, Джеймс Ф. «Моделирование морщинистых поверхностей», Компьютерная графика (Труды SIGGRAPH '78, т. 12, вып. 3, 286-292.
- ^ Харгривз, Шон и Марк Харрис: «6800 лье под водой: отложенное затенение». Ресурсы разработчика NVidia.