Расчет глобальной освещенности в реальном масштабе времени

advertisement
Расчет глобальной
освещенности в реальном
масштабе времени
автор:
Безгодов Алексей Алексеевич
Научный руководитель:
Стародубцев Э.В.
Предметная область
• Тренажеры и
симуляторы
• Игры
• Интерактивные
галереи
• Особенности:
– Время расчета
кадра
< 30-50 мс
2
Глобальная освещенность
• Global Illumination (GI)
• Методы конечных
элементов:
– Radiosity
• Методы Монте-Карло:
–
–
–
–
Path tracing
Photon mapping
Metropolis Light Transport
Instant Radiosity
• Высокая трудоемкость
•
Существуют реализации в
реальном масштабе времени
3
Изображение,
полученное
без учета
глобальной
освещенности
… и с учетом
глобальной
освещенности
4
Цели и задачи
Цель
• Улучшить алгоритм построения глобальной
освещенности в реальном масштабе времени
Задачи
• Проанализировать существующие алгоритмы
• Выявить недостатки:
– По качеству изображения
– По производительности
• Модифицировать алгоритмы для устранения
выявленных недостатков
• Реализовать данные алгоритмы
5
План работы
1. Обзор алгоритмов
2. Программная реализация алгоритмов
3. Качественная оценка получаемых
изображений
4. Замер производительности операций на:
1. GPU (Графический процессор)
2. CPU (Центральный процессор)
5. Улучшение алгоритмов
6. Повторная реализация
6
Обзор работ, посвященных вопросу
расчета глобальной освещенности
• A. Keller (1997): “Instant Radiosity”
• B. Segovia (2006): “Non-interleaved Deferred
Shading of Interleaved Sample Patterns”
• S. Laine (2007): “Incremental Instant Radiosity
for Real-time Indirect Illumination”
7
Программная реализация
• A. Keller
• B. Segovia
• id Software Quake2
Open Source, GPL
• Разработка новой
графической системы
для Quake2
• Visual C++ 7.0
• Direct3D 9
• QRadiant 1.0
• «Реализация модели
освещения Кука-Торренса с
использованием технологии
Deferred Shading»
• Конференция молодых ученых
2008
• 10 000 строк кода С++
• ~2000 строк кода пиксельных и
вершинных программ
• Время разработки: ~6 месяцев
8
Замер производительности
(профилирование)
GPU
nVidia GeForce 8600 GT
CPU
Intel Core 2 Duo 6420
• nVidia Shader Perf 2.0
• nVidia Perf HUD 5.1
• Встроенный профайлер для
указанной функции
позволяет определить:
– Кол-во вхождений
– Среднее и общее время
выполнения
– % от общего времени
выполнения
9
Instant Radiosity (A. Keller)

I ВИС ω   f r d cos 
Ф 4I
dФ  
n
n
n – число частиц
I – сила первичного источника света
IВИС – сила вторичного источника света
fr – коэффициент отражения
Ф – световой поток
10
Пакетная обработка источников
света: GPU G70 и G80
GeForce 8600 GT (G80)
350
350
300
300
250
250
Время, мс
Время, мс
GeForce 7800 GT (G70)
200
150
200
150
100
100
50
50
0
0
1
3
5
7
9
11
13
15
17
19
21
23
25
Кол-во вторичных источников света в пакете
27
29
31
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20
Кол-во вторичных источников света в пакете
N

t   t выборки  t подготовки  m  t расчета  t записи

m
данных
освещения
результата 
11
Использование расслоения
геометрического буфера (B. Segovia)
256 вторичных
источников
света
Обычный
способ:
160 мс
Используя
расслоение:
15 +11 мс
12
Недостатки реализованного
алгоритма
• Мерцание получаемого изображения
– Изменение освещенности во времени
• Линейная зависимость времени расчета
глобальной освещенности от числа
первичных источников света
• Трудоемкая трассировка частиц (CPU)
10-20 мс
13
Предлагаемый способ расстановки
вторичных источников света
j 1
I ВИС ω r   f r cos отраж.dA I j
N
V x j , dA 
phit
p
cos падения  V x j , dA
x  xj
2
 функция видимости
xj, x – позиция первичного и вторичного источника света
dA – площадь расс. элемента сцены
I – сила первичного источника света
IВИС – сила вторичного источника света
fr – коэффициент отражения
14
Преимущества и недостатки
нового подхода
• Число вторичных источников
света всегда постоянно для
заданной сцены,
– независимо от количества
первичных источников света
• Полное отсутствие мерцания
• Упрощение расчета
множественных
последовательных
отражений света
• Число вторичных источников
света зависит от сложности
сцены:
– Сложность сцены
контролируется на этапе ее
создания и не меняется в
процессе отображения
– Уменьшение степени
детализации объектов
сцены
• Расчет видимости на CPU:
– 150-1500 мс!!!
15
Расчет видимости рассеивающих
элементов сцены на GPU
• Использование карты
глубины
(Depth map)
• Для 28 световых зондов:
0.12 мс
• В ~1000 раз быстрее
чем расчет на CPU!
16
Множественное отражение света


cos  r cos  i



j 1
j

1
I

V
x
,
dA
,
j

k
j
k
Ij


2
 max
j


I max  f r dAk 
cos


V
x
,
dA

x

x



i
j
k
k
j
2
k
k
N
M

 xk  x j

0
,
j

k



j 1
Ij
j 1



bk  f r dAk 
cos


V
x
,
dA
i
j
k
2
I max  b1   a1 j I max
k

N x x
k
j
j
M
 1

 ...
cos  r cos  i



f
dA

V
x
,
dA
,
k

j
j
k
2
 rk k

j 1
a kj  
xk  x j
 I max  bM   a Mj I max

 M
j
M
0
,
k

j

 I max 
 1 
 I max 
I 2 





 I max 
 M 
b1 
b 
B 2 
 
 
bM 
 a11
a
A   21
 

a M 1
a12
a 22

aM 2
 a1M 
 a 2 M 



 

 a MM 
I  B  AI
17
Расчет множественных
отражений на GPU
Итерационный метод Якоби
I = B + AI
4.00 мс на CPU FPU
1.00 мс на CPU SSE
0.18 мс на GPU
18
Результаты работы
• Предложен способ расстановки вторичных источников света
(ВИС), позволяющий:
– устранить мерцание изображения
– устранить существенную зависимость трудоемкости расчета
глобальной освещенности от числа первичных источников света
• Определено оптимальное число ВИС для пакетной обработки
• Перенесено на GPU с целью ускорения расчета глобальной
освещенности решение следующих задач:
– определение степени видимости элементов сцены
– решение системы уравнений применительно к задаче
множественного отражения света
• Улучшено качество изображения
• Достигнуто время расчета кадра ~50 мс, независимо от числа
первичных источников света, причем ~30 мс требуется на расчет
глобальной освещенности
19
20
Вопросы?
21
Download