Расчет глобальной освещенности в реальном масштабе времени автор: Безгодов Алексей Алексеевич Научный руководитель: Стародубцев Э.В. Предметная область • Тренажеры и симуляторы • Игры • Интерактивные галереи • Особенности: – Время расчета кадра < 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 Ф 4I 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