четверг, 16 июня 2011 г.

Объёмное рассеяние света в пост-процессе. (перевод)

Kenny Mitchell
Electronic Arts

В этой главе, мы представляем простой метод post-process, который производит эффект объемного рассеяния света от источника к тени в атмосфере. Мы улучшили существующую аналитическую модель рассеяния дневного света, с целью добавить эффект объемного затемнения, и представляем его реализацию в построении пиксельного шейдера. Демо-версия, которая имеется на DVD, сопровождающем эту книгу, показывает, как данный технический метод может быть применён к анимационному изображению любой сложности. Демонстрация из демо-версии отображается на рисунке 13-1.
clip_image001
Рис. 13-1 Объёмное рассеивание света в анимации реального времени.

13.1 Вводная часть

В реальной жизни мы редко можем видеть вещи в вакууме, где ничего не существует между объектом и наблюдателями. В режиме реального времени визуализации, эффект присутствия при распределении света, часто является субъектом с низким уровнем сложности однородных допущений. Это объясняется неразрешимым характером радиационного уравнения переноса (Дженсон и Кристенсен 1998 года), вычисляющего выбросы, поглощения и рассеяния в сложных интерактивных анимационных средах. В этой главе мы рассматриваем эффект объемных теней в атмосфере на рассеивании света, и мы покажем, как этот эффект можно рассчитать в режиме реального времени с post-process построением пиксельного шейдера GPU. Построение данного шейдера применяется к одному или более изображению источников света.

13.10 Ccылки

Dobashi, Y., T. Yamamoto, and T. Nishita. 2002. "Interactive Rendering of Atmospheric Scattering Effects Using Graphics Hardware." Graphics Hardware.
Hoffman, N., and K. Mitchell. 2002. "Methods for Dynamic, Photorealistic Terrain Lighting." In Game Programming Gems 3, edited by D. Treglia, pp. 433–443. Charles River Media.
Hoffman, N., and A. Preetham. 2003. "Real-Time Light-Atmosphere Interactions for Outdoor Scenes." In Graphics Programming Methods, edited by Jeff Lander, pp. 337–352. Charles River Media.
James, R. 2003. "True Volumetric Shadows." In Graphics Programming Methods, edited by Jeff Lander, pp. 353–366. Charles River Media.
Jensen, H. W., and P. H. Christensen. 1998. "Efficient Simulation of Light Transport in Scenes with Participating Media Using Photon Maps." In Proceedings of SIGGRAPH 98, pp. 311–320.
Karras, T. 1997. Drain by Vista. Abduction'97. Available online at http://www.pouet.net/prod.php?which=418&page=0.
Max, N. 1986. "Atmospheric Illumination and Shadows." In Computer Graphics (Proceedings of SIGGRAPH 86) 20(4), pp. 117–124.
Mech, R. 2001. "Hardware-Accelerated Real-Time Rendering of Gaseous Phenomena." Journal of Graphics Tools 6(3), pp. 1–16.
Mitchell, J. 2004. "Light Shafts: Rendering Shadows in Participating Media." Presentation at Game Developers Conference 2004.
Nishita, T., Y. Miyawaki, and E. Nakamae. 1987. "A Shading Model for Atmospheric Scattering Considering Luminous Intensity Distribution of Light Sources." In Computer Graphics (Proceedings of SIGGRAPH 87) 21(4), pp. 303–310.

13.2 Сумеречные лучи

При правильных условиях, когда пространство содержит достаточно плотную смесь рассеивающегося света, как, например, при молекулах газа и аэрозолей, объекты перекрывающие свет, будут отклонены объемами тени и появятся с целью создания лучей, от источника света. Данные феномены известны как сумеречные лучи, солнечные пучки, солнечные импульсы или звездные вспышки. В солнечных лучах, такие объёмы являются параллельными, но используются с целью рассредоточить их от солнца в перспективе.
Изменения сумеречных лучей было впервые зафиксировано не в реальном времени визуализации, а при использовании алгоритма изменения объёма тени (1986 год) и вскоре после этого, был разработан подход для нескольких источников света (Nishita et al. 1987 года). Данный вопрос повторно возник в реальном времени визуализации, при частичном использовании метода разделения объёма (Dobashi et al. 2002) и недавно применяется с использованием аппаратных теневых карт (Mitchell 2004). Вместе с тем, частичное использование методов разделения объёма могут демонстрировать образцы анимации, которые требуют установки дополнительных сцен. В то время как метод теневых карт увеличивает эффективность, он также требует в дальнейшем большие ресурсы видео памяти и визуализации синхронизации. Другой метод реального времени, основанный на работе Радомиру Кхамбу (2001), использует полигональные объёмы (Джеймс 2003), в которых перекрывающиеся объёмы накапливаются, используя буфер смешивания кадра с глубиной удаления слоя. Аналогичным методом (Джеймс 2004) удаляет необходимую глубину среза, используя накопленную толщину объёма. В нашем подходе мы применяем операцию пост-обработки каждого пикселя, не требуя предварительной обработки или других установок сцен, что предоставляет более детальное рассмотрение лучей света в анимационных сценах произвольной сложности.
В предыдущей работе (Хоффман и Preetham 2003) осуществляется GPU построение шейдера для рассеяния лучей в однородном пространстве. Мы выражаем это с шагом пост-обработки для учета объемных теней. Основным проявлением этого post-process может быть отпечаток операции обработки изображения, радиальное размытие, которое отображается во многих CG демо продуктах (Karras 1997). Хотя такие демонстрации используют программное обеспечение разрешающее применять эффект пост-обработки, мы используем аппаратный ускоритель построения шейдера. Пост-обработка позволяет более сложные метод, на основе аналитической модели дневного света.

13.3 Объёмное распределение света

Чтобы вычислить освещенность в каждом пикселе, мы должны рассчитать рассеяние от источника света, к пикселю и тот случай когда лучи не рассеиваются в пространстве. В случае с солнечными лучами мы начинаем с нашей аналитической модели рассеивания дневного света (Хоффман и Preetham 2003). Запишем следующим образом:
Уравнение 1
clip_image002
где s — расстояние прохождения через пространство и q-это угол между лучом и солнца. E sun - источник освещения от солнца, b ex — константа, составляющая абсорбцию света, и свойства рассеивания во внешнюю среду, b sc - угловое рассеяние, состоит из свойства рассеяния Уильям и Миэ. Важный аспект этого уравнения состоит в том, что первый термин вычисляет количество света поглощенного из точки выброса в нужную точку. Второй термин вычисляет аддитивный объем рассеяния света на пути видимого луча. Как и Хоффман и Митчелл 2002, такой же эффект мы можем получить за счёт облаков, зданий и других объектов, моделированных здесь, как источников освещения.
Уравнение 2
clip_image003
где D(f) объединённые объекты солнечной непроходимости для целевого местонахождения f.
Данное утверждение вводит сложность определения окклюзии источника света для каждой точки в изображении. В экранированном пространстве у нас нет полного объема информации для определения непроходимости окклюзии. Вместе с тем мы может оценить вероятность непроходимости света для каждого пикселя, суммированием образцов вдоль луча по направлению источника света в пространстве изображения. Соотношение образцов, которые сталкиваются с регионом выброса, оцениваются таким образом, что данное проникновение даёт нам желаемый процент непроходимости D(f). В главе 13.5 мы описываем методы для работы с данными явлениями.
Если мы разделим образец освещенности на количество образцов n, то пост-процесс просто разрешит аддитивный образец изображения:
Уравнение 3
clip_image004
13.3.1 Управление суммированием
Мы представляем коэффициент для параметризации контроля суммирования:
Уравнение 4
clip_image005
где месторасположение (по отношению к солнечному свету) полностью контролирует интенсивность пост-процесса, вес управляет силой света каждого образца и распад (для диапазона [0, 1]) рассеивает каждый образец луча вдали от источника света. Показатель степени – фактор, практически позволяющий, для каждой вспышки света плавно удаляться от источника света.
Месторасположение и вес это упрощённые факторы шкалы. Увеличение хотя бы одного из этих параметров увеличивает общую яркость результата.
Поскольку образцы являются производными исключительно от исходного изображения, полупрозрачные объекты обрабатываются без дополнительных усилий. Несколько источников света могут быть переданы через последующее экранированное пространство пучком лучей для каждого источника света. Хотя для этого объяснения мы использовали нашу аналитическую модель дневного света, фактически, любой источник изображения может использоваться.
Для расположения солнца a каждого экранированного пространства месторасположения изображения f, мы осуществляем суммирование с последовательными образцами из исходного изображения через регулярные интервалы вдоль лучевых векторов, DF = (f-a)/n(density). Здесь мы представляем плотность, позволяющую контролировать разделения между образцами для случаев, в которых мы хотели бы сократить общее число итераций, сохраняя достаточную плотность. Если мы увеличиваем коэффициент плотности, то мы уменьшаем разделения между образцами, что приведёт к более ярким вспышкам света, которые охватят более короткий диапазон.
На рисунке 13-2, не образцы из f 1 являются затемнёнными, приводящими к максимальному рассеиванию освещенности под регулярной оценкой L(s,q). На f 2 количественное соотношение луча образцов на протяжении луча сталкиваются со зданием, и происходит более слабое рассеяние освещенности. Суммируя лучи для каждого пикселя в изображении, мы генерируем объёмы, содержащие затемнённое рассеивание света.
clip_image007
Рис. 13-2 Ограничение луча в экранированном пространстве
Мы может снизить требования к пропускной способности исходного изображения. Использование фильтрации уменьшит образцы изображения и следовательно введёт рассеивание соседними образцами. В демо основного билинейного фильтра достаточно.

13.4 Пост-процесс построения пиксельного шейдера

Сущностью данного метода является пост-процесс построения пиксельного шейдера, заданной в главе 13-1, который реализует простое суммирование уравнения 4.
Учитывая первоначальные изображение, выборки с координатами формируются вдоль луча приведеного из расположения, пикселя к позиции света в пространства экрана [1]. Позиции света в экранируемом пространстве вычисляются путем стандартного world view-проекта преобразования, и масштабируется для получения координат в диапазоне от [-1, 1]. Сменившие друг друга образцы L (s, q, fi) в суммировании уравнение 4 являются масштабированием константы, веса и коэффициента Демпфирования экспоненциальным распадом с целью проведения параметризации контроля над эффективностью. Разделение между плотностью образца может быть скорректировано, как финальный контрольный фактор.
Пример 13-1. Пост-процесс создания шейдера
   float4 main(float2 texCoord : TEXCOORD0) : COLOR0
{   
// Calculate vector from pixel to light source in screen space.
   half2 deltaTexCoord = (texCoord - ScreenLightPos.xy);   
// Divide by number of samples and scale by control factor.
  deltaTexCoord *= 1.0f / NUM_SAMPLES * Density;   
// Store initial sample.
   half3 color = tex2D(frameSampler, texCoord);   
// Set up illumination decay factor.
   half illuminationDecay = 1.0f;   
// Evaluate summation from Equation 3 NUM_SAMPLES iterations.
for (int i = 0; i < NUM_SAMPLES; i++)   
  {   
// Step sample location along ray.
    texCoord -= deltaTexCoord;   
// Retrieve sample at new location.
   half3 sample = tex2D(frameSampler, texCoord);   
// Apply sample attenuation scale/decay factors.
    sample *= illuminationDecay * Weight;   
// Accumulate combined color.
    color += sample;   
// Update exponential decay factor.
    illuminationDecay *= Decay;   
  }   
// Output final color with a further scale control factor.
return float4( color * Exposure, 1);   
}  
float4 main(float2 texCoord : TEXCOORD0) : COLOR0
{
// Calculate vector from pixel to light source in screen space.
half2 deltaTexCoord = (texCoord - ScreenLightPos.xy);
// Divide by number of samples and scale by control factor.
deltaTexCoord *= 1.0f / NUM_SAMPLES * Density;
// Store initial sample.
half3 color = tex2D(frameSampler, texCoord);
// Set up illumination decay factor.
half illuminationDecay = 1.0f;
// Evaluate summation from Equation 3 NUM_SAMPLES iterations.
for (int i = 0; i < NUM_SAMPLES; i++)
{
// Step sample location along ray.
texCoord -= deltaTexCoord;
// Retrieve sample at new location.
half3 sample = tex2D(frameSampler, texCoord);
// Apply sample attenuation scale/decay factors.
sample *= illuminationDecay * Weight;
// Accumulate combined color.
color += sample;
// Update exponential decay factor.
illuminationDecay *= Decay;
}
// Output final color with a further scale control factor.
return float4( color * Exposure, 1);
}

13.5 Методы затемнения экранированного пространства


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

13.5.1 Метод затемнения пред-процесса

Если мы оказываем затемнение объектов тёмной текстурой в буфер кадра источника, обработка сформирует лучи света представленные на данном изображении. Затем затемнённые участки объектов подготавливаются к просмотру с очередной заливкой, а пост-обработки результата аддитивно смешиваются в участке. Этот подход переплетается с общим методом предоставления unshaded глубины пред-процесса ограничения глубины сложности полностью затемненных пикселов.

Рис. 13-3 Примеры.

clip_image009

13.5.2 Образец метода затемнения

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

13.5.3 Метод контрастного затемнения

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

13.6 Примечания


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

Figure 13-4 Иллюстрация одного ограничения

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

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

13.7 Демонстрация


Демо на DVD этой книги использует текстуры моделей 3.0, чтобы применять их в пост-процессе, поскольку количество образцов текстуры, должно превышать ограничения моделей 2.0. Вместе с тем эффект был внедрен эффективно с более ранней графической аппаратурой с использованием аддитивного кадра буфера смешивания нескольких проходов с методом образцового затемнения, как показано на рис. 13-5

clip_image013.

Рис. 13-5 Сумеречные лучи на основе множественных дополнений кадра буфера на функционально ограниченной аппаратуре

13.8 Выдержки


Наш метод представляет post-process в выполнении одного прохода построения шейдера. Один из нескольких подходов, суммирование пиксельных шейдеров может быть представлено таким образом, где результаты пучков извлекают из источников света и могут быть представлены под следующими наружными пучками, где L ( s , q , f ) = Li - 1(s, q, f) + Li (s, q, f). Хотя это может и не быть наиболее подходящим для нынешнего оборудования. Этот подход является минимальным требованием.

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

13.9 Выводы


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



Исходный текст http://http.developer.nvidia.com/GPUGems3/gpugems3_ch13.html

Комментариев нет:

Отправить комментарий