Введение
Техника рендеринга компьютерной графики В компьютерной графике, освещение на пиксель относится к любой технике освещения изображения или сцены, которая рассчитывает освещение для каждого пикселя на рендеринговом изображении. Это отличается от других популярных методов освещения, таких как вертикальное освещение, которое рассчитывает освещение на каждой вершине 3D-модели, а затем интерполирует полученные значения на поверхности модели, чтобы рассчитать конечные цветные значения на пиксель. Освещение на пиксель обычно используется с такими методами, как смешивание, альфа-смешивание, альфа-покрытие, анти-алиазинг, фильтрация текстуры, обрезка, определение скрытой поверхности, буфринг Z, буфринг штемпеля, затенение, мип-картирование, нормальное отображение, нанесение на карту ударов, отображение смещения, параллаксное отображение, отображение теней, зеркальное отображение, объемы теней, рендеринг высокого динамического диапазона, окклюзия окружающей среды (окклюзия пространства экрана, направленная окклюзия пространства экрана, окклюзия окружающей среды с трассировкой лучей), трассирование лучей, глобальное освещение и тесселяция. Каждый из этих методов предоставляет некоторые дополнительные данные о освещаемой поверхности или об источниках света, которые способствуют окончательному внешнему виду поверхности. Большинство современных движков видеоигр реализуют освещение с использованием методов по пикселю вместо вертикального освещения для достижения большей детализации и реализма. Двигатель id Tech 4, используемый для разработки таких игр, как Brink и Doom 3, был одним из первых игровых движков, реализовавших полностью по пикселю движок затенения. Все версии CryENGINE, Frostbite Engine и Unreal Engine, среди прочих, также реализуют технику затенения на пиксель. Отложенное затенение - это недавнее развитие в освещении на пиксель, известное своим использованием в Frostbite Engine и Battlefield 3. Отложенные методы затенения способны создавать потенциально большое количество небольших огней недорого (другие подходы к освещению на пиксель требуют расчетов на полный экран для каждого света в сцене, независимо от размера).
In computer graphics, per pixel lighting refers to any technique for lighting an image or scene that calculates illumination for each pixel on a rendered image. This is in contrast to other popular methods of lighting such as vertex lighting, which calculates illumination at each vertex of a 3D model and then interpolates the resulting values over the model's faces to calculate the final per pixel color values. Per pixel lighting is commonly used with techniques, such as blending, alpha blending, alpha to coverage, anti aliasing, texture filtering, clipping, hidden surface determination, Z buffering, stencil buffering, shading, mipmapping, normal mapping, bump mapping, displacement mapping, parallax mapping, shadow mapping, specular mapping, shadow volumes, high dynamic range rendering, ambient occlusion (screen space ambient occlusion, screen space directional occlusion, ray traced ambient occlusion), ray tracing, global illumination, and tessellation. Each of these techniques provides some additional data about the surface being lit or the scene and light sources that contributes to the final look and feel of the surface. Most modern video game engines implement lighting using per pixel techniques instead of vertex lighting to achieve increased detail and realism. The id Tech 4 engine, used to develop such games as Brink and Doom 3, was one of the first game engines to implement a completely per pixel shading engine. All versions of the CryENGINE, Frostbite Engine, and Unreal Engine, among others, also implement per pixel shading techniques. Deferred shading is a recent development in per pixel lighting notable for its use in the Frostbite Engine and Battlefield 3. Deferred shading techniques are capable of rendering potentially large numbers of small lights inexpensively (other per pixel lighting approaches require full screen calculations for each light in a scene, regardless of size).
История
Хотя только недавно персональные компьютеры и видеоаппаратное обеспечение стали достаточно мощными, чтобы выполнять полное затенение на пиксель в приложениях реального времени, таких как игры, многие из основных концепций, используемых в моделях освещения на пиксель, существуют уже десятилетия. Фрэнк Кроу опубликовал статью, описывающую теорию теневых томов в 1977 году. Эта техника использует буфер штемпеля для указания областей экрана, которые соответствуют поверхностям, которые лежат в "теневом объеме" или форме, представляющей собой объем пространства, затворенный от источника света каким-то объектом. Эти затененные области обычно затеняются после того, как сцена отображается в буферах, путем хранения затененных областей с буфером штемпеля. Джим Блинн впервые представил идею нормального картографирования в статье SIGGRAPH 1978 года. Блинн указал, что ранее идея неосвещенной текстуры, предложенная Эдвином Кэтмуллом, была нереалистичной для моделирования шероховатых поверхностей. Вместо того, чтобы наносить на объект текстуру, чтобы имитировать шероховатость, Блинн предложил метод расчета степени освещения, которую должна получить точка на поверхности, основанный на установленной "пертурбации" нормальных значений по всей поверхности.
Рендаринг на аппаратном уровне
Приложения в режиме реального времени, такие как видеоигры, обычно реализуют освещение на пиксель с помощью пиксельных сенсоров, позволяя аппаратному обеспечению GPU обрабатывать эффект. Сцена, которая должна быть отображена, сначала растрируется на ряд буферов, хранящих различные типы данных, которые будут использоваться при отображении сцены, такие как глубина, нормальное направление и диффузный цвет. Затем данные передаются в шейдер и используются для вычисления окончательного вида сцены, пиксель за пикселем. Отложенное затенение - это техника затенения на пиксель, которая недавно стала возможной для игр. При отложенном затенении "g-буфер" используется для хранения всех терминов, необходимых для затенения финальной сцены на уровне пикселей. Формат этих данных варьируется от приложения к приложению в зависимости от желаемого эффекта и может включать в себя нормальные данные, позиционные данные, спекулярные данные, диффузные данные, карты излучения и альбедо, среди прочего. Используя несколько целевых реендеров, все эти данные могут быть отображены в буфер g с помощью одного прохода, а шейдер может рассчитать окончательный цвет каждого пикселя на основе данных из буфера g в окончательном "отложенном прохождении".
Рендаринг программного обеспечения
Освещение на пиксель также выполняется в программном обеспечении на многих высококлассных коммерческих приложениях рендеринга, которые обычно не рендерируют с интерактивными частотами кадров. Это называется оффлайн-рендерингом или программным рендерингом. Хорошо известным примером является программное обеспечение для рендеринга ментальных лучей NVIDIA, которое интегрировано с такими пакетами, как Softimage от Autodesk.