Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Статьи / Детали использования сферических функций для интерактивного рендеринга. (2 стр)

Детали использования сферических функций для интерактивного рендеринга. (2 стр)

Автор:

5. Рендеринг

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

24_yarkost_tochki | Детали использования сферических функций для интерактивного рендеринга.

где:
k – коэффициент диффузного отражения (k < l)
l  – коэффициент полного отражения.

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

5.1. Расчёт диффузной составляющей

Для каждой вершины геометрии в сцене заранее рассчитываются 36 коэффициентов ДФРС:

25_koefficienti_BRDF | Детали использования сферических функций для интерактивного рендеринга.

где
cos(γ) — указанное выше распределение,
γ — угол между направлением и нормалью к поверхности,
V(Θ, f) - функция видимости в направлении (Θ, f).

Таким образом, коэффициенты даются формулой:

26_koefficienti | Детали использования сферических функций для интерактивного рендеринга.

Так же для всей сцены рассчитываются коэффициенты для окружающих источников света:

27_koefficienti_okrujeniya | Детали использования сферических функций для интерактивного рендеринга.

где:
L(wi) — суммарная энергия источников, поступающая в сцену с направления wi.

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

Замечание: в связи с тем, что коэффициенты cm(d)l целесообразно упаковывать в 16-битное представление при передачи в ускоритель, мощность множества Ω не имеет смысла делать больше, чем:
65536 * 2 = 131 072 элементов.

Тогда, диффузная составляющая будет рассчитываться следующим образом:

28_diffuse | Детали использования сферических функций для интерактивного рендеринга.

или, если сделать замену i=l2+l+m:

29_diffuse_end | Детали использования сферических функций для интерактивного рендеринга.

5.2. Расчёт зеркальной составляющей

Для зеркальной составляющей алгоритм разбивается на 3 этапа:

1.  Генерация ДФРС

Зная позицию наблюдателя в сцене, вычисляем нужное исходящее направление wi. Поворачиваем заранее вычисленный вектор коэффициентов путём умножения на матрицу поворота, формируемую из 3-х матриц вышеизложенным методом.

2.  Вычисление скалярного произведения

30_scalar_mult | Детали использования сферических функций для интерактивного рендеринга.

3.  Вычисление самозатенения

Так как вектор коэффициентов c(s) представляет собой ни что иное, как направление wi, приближенное с помощью 36 базисных функций, то вычисление функции видимости производится по приближённой формуле, получаемой из ДФРС:

31_function_visibility | Детали использования сферических функций для интерактивного рендеринга.

где: n — угол между направлением wi и нормалью к поверхности.

В итоге имеем:

32_function_vidimosti | Детали использования сферических функций для интерактивного рендеринга.

6. Результаты

Результаты рендеринга для модели «Bunny» представлены в таблице 1.

Количество вершин 34834
Время предрасчёта 320 мин
Частота кадров для идеально диффузного материала 120 Гц
Частота кадров для идеально зеркального материала 67 Гц
Частота кадров для комбинированного материала 64 Гц

Таблица 1. Результаты. Приведены: время предрасчёта ДФРС, результаты рендеринга с различными материалами на аппаратном ускорителе nVidia GeForce 6800.

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

7. Примеры использования

Детальное описание примеров использования, включая использование оператора поворота для освещения сцены неточечными локальными источниками света, вы сможете найти в [49].

BRDF Hazen | Детали использования сферических функций для интерактивного рендеринга.
Рис. 6. Результаты рендеринга модели с самозатенением. Столбцы слева направо соответственно: идеальный диффузный материал; идеальный зеркальный материал; комбинированный материал.

Lambert function | Детали использования сферических функций для интерактивного рендеринга.
Рисунок 8: Сравнение представления ламбертовой функции в базисах сферических функций, обрезанных до веса n. Тени отбрасываются на плоскую поверхность от прямоугольника. Угловой радиус статического круглого источника света, освещающего сцену, показан слева. Более высокий порядок обеспечивает большую аккуратность для малых источников света, но даёт неприятные артефакты на границах (которые уменьшаются фильтрацией во втором столбце справа). Для представление в неполном базисе до веса n включительно, необходимо n2 коэффициентов.

Lambert objects | Детали использования сферических функций для интерактивного рендеринга.
Рис. 9. Ламбертовы и матовые отражающие объекты. Без самозатенения (a, c). С внутренними отражениями (b,d) включают так же самозатенение.

37_internal_refraction | Детали использования сферических функций для интерактивного рендеринга.
Рис. 10. Внутренние отражения. В верхней строчке ламбертовы объекты без затенения; в нижней строчке – отражающие матовые объекты. Отражения отчётливо видны над носиком чайника, а также от ручки крышки на самой крышке. Скорость интерактивного рендеринга не зависит от порядка отражении; зависит лишь время предварительного расчета модели. Отражения более высокого порядка, как правило, не вносят существенных изменений в картину.

Страницы: 1 2 3 Следующая »

12 октября 2009

#BRDF, #global illumination

2001—2018 © GameDev.ru — Разработка игр