Войти
ПрограммированиеСтатьиГрафика

Объемы распространения света для непрямого освещения в режиме реального времени. (3 стр)

Автор:

5. Качественный анализ предложенной схемы распространения

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

a_dom_2sh_8d | Объемы распространения света для непрямого освещения в режиме реального времени. a_dom_2sh_4dhl | Объемы распространения света для непрямого освещения в режиме реального времени. a_our_2sh_4dhl | Объемы распространения света для непрямого освещения в режиме реального времени.
МДО8, 2 СФМДО4, 2 СФОРС, 2 СФ
l_dom_2sh_8d | Объемы распространения света для непрямого освещения в режиме реального времени. l_dom_2sh_4d | Объемы распространения света для непрямого освещения в режиме реального времени. l_our_2sh_4d | Объемы распространения света для непрямого освещения в режиме реального времени.
Рис.6.1. Две простых сцены на плоскости (верхний ряд: 1 протяжённый источник света; нижний ряд: 2 протяжённых источника света углом). Для сравнения приведены результаты расчёта интенсивности методом дискретных ординат с 4 и 8 направлениями распространения (зелёным и синим соответственно), предложенным методом распространения (красным), и аналитически (серым).

a_dom_8sh_8d | Объемы распространения света для непрямого освещения в режиме реального времени. a_dom_8sh_4d | Объемы распространения света для непрямого освещения в режиме реального времени. a_our_8sh_4d | Объемы распространения света для непрямого освещения в режиме реального времени.
МДО8, 8 СФМДО4, 8 СФОРС, 8 СФ
l_dom_8sh_8d | Объемы распространения света для непрямого освещения в режиме реального времени. l_dom_8sh_4dhl | Объемы распространения света для непрямого освещения в режиме реального времени. l_our_8sh_4dhl | Объемы распространения света для непрямого освещения в режиме реального времени.
Рис.6.2. Две простых сцены на плоскости (верхний ряд: 1 протяжённый источник света; нижний ряд: 2 протяжённых источника света углом). Для сравнения приведены результаты расчёта интенсивности методом дискретных ординат с 4 и 8 направлениями распространения (зелёным и синим соответственно), предложенным методом распространения (красным), и аналитически (серым).

Результаты рассчитаны как аналитически (показано серым), так и с использованием стандартного МДО (по направлению на все 8 возможных соседних ячеек, МДО8, зелёным) и предлагаемым методом (ОРС, красным). Для сравнения мы так же включили метод МДО4 (по четырём осевым направлениям, обозначен синим), аналогично предлагаемой схеме, чтобы показать преимущество расчёта светового потока через грани в сравнении с обычным распространением от центра к центру.

Для малого числа порядков СФ, все три приведённых метода дают сравнимые результаты с ожидаемо размытым распределением интенсивности. Предложенная схема распространения рассчитывает доминирующие направления интенсивности точнее, чем МДО4. Например, свет точнее распространяется под острыми углами от источника (выделенные ячейки в верхней строке рисунка), однако решение также является размытым. Для большего количества СФ, МДО4 демонстрирует ярко выраженный лучевой эффект, тогда как в расчётах с ОРС нежелательные эффекты отсутствуют (выделено в нижней строке рисунка). Однако МДО8 распространяет распределение гораздо точнее. Резюмируя, предложенная схема хорошо подходит для небольшого числа весов СФ (от двух до четырёх) и протяжённых источников (размером более, чем 1 ячейка сетки). При таких условиях метод предоставляет хорошее приближение, сохраняя главные направления светопереноса и используя лишь 4 (6 в трёх измерениях) соседние ячейки, по сравнению с 8 (26 в трёх измерениях) ячейками для МДО8.

6. Подробности реализации

Предлагаемый метод был реализован и прошёл боевое крещение в кросс-платформенном (с поддержкой DirectX 9, 11 на ПК, Sony Playstation 3 и Microsoft Xbox 360) игровом движке реального времени CryENGINE 3. Из-за требований производительности в реализации ОРС используются лишь 2 веса СФ (4 коэффициента) на каждый цветовой канал (R, G, B). Иерархия состоит из трёх сеток. Каждая сетка хранится в трёх RGBA текстурах 16-битных чисел с плавающей запятой размером 323 (на игровых консолях используется формат QUVW8, то есть 8-битные дробные числа со знаком в диапазоне [-1; 1]). Для геометрических сеток используется те же формат и разрешение, что и для ОРС (однако лишь с одной текстурой для хранения монохромной информации затенения). Элементы поверхности для таких сеток выбираются из геометрического буфера вида из камеры и из имеющихся ОТК. Для буферов высокого разрешения (таких как геометрический буфер главной камеры) используется уменьшение разрешения для инжекцией элементов поверхности.

ОТК хранится в текстурах глубины (16- или 32-битные числа с плавающей запятой), нормали и светового потока (каждая формата RGBA, 8-битная) с разрешением 2562 (1282 на консолях). Таким образом, насчитывается до 216 (214 на консолях) ВИС на каждый первичный источник света. ВИС инжектируются в каждый ОРС при помощи рендеринга точечных примитивов. Для этого используется либо выборка из текстур ОТК в шейдере вершин (рекомендуется для DirectX 9/11 и Xbox 360) либо рендеринг в буфер вершин (рекомендуется для PS3).

Для распространения света мы используем более предпочтительную для ГП схему сбора (вместо распространения) с использованием двойной буферизации: для каждой ячейки (в каждом каскаде) мы выбираем распределения интенсивности из шести соседних осевых ячеек. После чего мы рассчитываем световой поток, падающий на грани текущей ячейки, производим репроекцию в центр и суммируем результат в текстуру. В большинстве сцен 8 итераций распространения достаточно для получения хороших результатов. Заметим, что это ограничивает максимальное расстояние распространения и может являться причиной дефектов изображения в больши́х, разреженных сценах (рис. 14 и рис. 15). Требуемое количество памяти ГП для предлагаемого метода с числом каскадов [cht]\kappa[/cht] (включая двойную буферизацию) составляет [cht]32^3\times (2\times 4)\times 3\times (\kappa + 2)=3.75[/cht]МБ для трёх каскадов ОРС и [cht]32^3\times (2\times 4)\times \kappa=0.75[/cht]МБ для ГС (для консолей в два раза меньше из-за использования формата QUVW8). Также заметим, что при использовании цветного представления для ГС, количество требуемой памяти и данных для распространения возрастает втрое. Мы используем цветные ГС только в примерах с множественными отражениями для последующих переотражений. В таблице показаны замеры производительности различных этапов предлагаемого метода.

ЭтапGTX285Xbox 360PS3
Рендеринг ОТК0,160,50,8
Инжекция ВИС0,050,20,4
Инжекция в ГС0,020,150,15
Распространение0,8/1,1/1,40,8/1,1/1,50,7/1,1/1,5
Освещение2,42,01,5
Всего3,4/3,7/4,03,5/3,8/4,23,4/3,8/4,2
Таблица 1. Производительность метода в сцене «Crytek Sponza», представленная в миллисекундах, для каждого этапа метода (для одной сетки 323 и 8 итераций). Три замера в строке «Распространение» соответствуют распространению: (1) без затенения (2) с затенением (3) с затенением и множественными отражениями. Отметим, что лишь производительность рендеринга ОТК зависит от сложности сцены. Также лишь этап освещения зависит от разрешения экрана. Все замеры проведены при разрешении экрана 1280x720 (без MSАА) и разрешении ОТК 2562 (=количество инжектируемых ВИС) на ГП NVIDIA GTX285 (1282 на консолях).

Сцена Crytek Sponza | Объемы распространения света для непрямого освещения в режиме реального времени.
Сцена Crytek Sponza (262 тыс. треугольников).
Доступна на http://www.crytek.com/cryengine/cryengine3/downloads/
Страницы: 1 2 3 4 Следующая »

#global illumination, #глобальное освещение

6 января 2014 (Обновление: 8 янв. 2014)

Комментарии [78]