OpenGL визуализация в Inspirer2 с качеством метода
трассировки лучей
С. Андреев, И. Валиев
Институт прикладной математики
им. М.В.Келдыша РАН, Москва, Россия
esa@keldysh.ru
Оглавление
1. АТРИБУТЫ ПОВЕРХНОСТИ В INSPIRER2
2.2 Параллельный
источник света
3. МОДЕЛЬ ОСВЕЩЕНИЯ В INSPIRER2
4. ПРЕОБРАЗОВАНИЕ ЯРКОСТИ В ЦВЕТ МОНИТОРА
Аннотация
В данной статье рассматривается
применение графических 3D-ускорителей для быстрой визуализации сцен с
качеством, максимально приближенным к методу трассировки лучей. Созданы методы
для обеспечения фотореалистичности изображения для атрибутов поверхностей, включая
поверхности оптически сложных материалов,
разработаны алгоритмы и формулы для моделирования различных типов
источников света, таких как точечного, конического, параллельного.
Также были исследованы две
модели освещения и внедрена поддержка Blinn-Phong shading model для обеспечения
максимальной схожести результатов.
Была включена поддержка формул
для преобразования яркости в цвет монитора и обеспечены методы интерполяции
текстуры.
Ключевые слова: реалистичные изображения, трассировка лучей, OpenGL
визуализация.
3D-ускорители
(акселераторы) — это видеоадаптеры, способные ускорять операции трехмерной
графики. Видеоадаптеры с 3D-ускорителями были созданы довольно давно, но
могли применяться только в профессиональных графических рабочих станциях, в
узкоспециализированных областях компьютерной графики из-за высокой стоимости
этого оборудования. К примеру, стоимость профессиональной графической рабочей
станции SGI Iris могла достигать нескольких десятков тысяч
долларов, что делало невозможным их широкое применение. Однако прогресс в
развитии доступных бытовых персональных компьютеров на базе процессоров x86,
увеличение их мощности, высокий спрос на компьютерные игры с реалистичными
трехмерными изображениями, и ,как следствие, внедрение
трехмерной акселерации в относительно недорогие видеоадаптеры, все это привело
к созданию 3D-ускорителей, доступных для
широкого круга
пользователей. С другой стороны, разнообразие видеоадаптеров,
выпускаемых различными производителями, их собственные разработки во внедрении
3D-ускорения
в производимые ими видеоадаптеры часто ставило в тупик разработчиков
профессионального графического 3D-программного обеспечения и разработчиков
компьютерных игр: как добиться универсальности их приложений, позволяющей
запускать комплексы графических программ на таком разнообразии аппаратных 3D-ускорителей.
В 1990-х разработка программного продукта, способного
работать на большом количестве графического оборудования, была сопряжена с
большими временны́ми и финансовыми затратами.
Было необходимо отдельно создавать модули для каждого типа графических
адаптеров, что порой приводило к размножению одинакового программного кода. Это
сильно тормозило развитие и распространение компьютерной графики.
Компания Silicon Graphics Incorporated (SGI)
специализировалась на создании высокотехнологического графического оборудования
и программных средств. Являясь в то время лидером в трёхмерной графике, SGI видела
проблемы и барьеры в росте рынка. Поэтому было принято решение
стандартизировать метод доступа к графической аппаратуре на уровне программного
интерфейса. специализировалась
на создании высокотехнологического графического оборудования и программных
средств. Таким образом появился программный интерфейс OpenGL[1],
который стандартизирует доступ к графической аппаратуре путём смещения
ответственности за создание аппаратного драйвера на производителя графического
устройства. Это позволило разработчикам программного обеспечения использовать
более высокий уровень абстракции от графического оборудования, что значительно
ускорило создание новых программных продуктов и снизило на них затраты.
OpenGL
эволюционировал из 3D-интерфейса SGI — IRIS GL. Одним
из ограничений IRIS GL было то, что он позволял использовать только
возможности, поддерживаемые оборудованием; если возможность не была реализована
аппаратно, приложение не могло её использовать. OpenGL
преодолевает эту проблему за счёт программной реализации возможностей, не
предоставляемых аппаратно, что позволяет приложениям использовать этот
интерфейс на относительно маломощных системах.
Все это способствовало тому,
что практически все производители видеоадаптеров, от простейших
микро-видеоадаптеров, используемых в нетбуках и
планшетных компьютеров, до сверхпроизводительных 3D-ускорителей,
использующихся в современных графических рабочих станциях, включают в свои
изделия поддержку OpenGL на аппаратном уровне.
В компьютерной графике метод
трассировки лучей позволяет добиться построение наиболее реалистичного
изображения трехмерных моделей (сцен). Трассировка лучей — это технология
построения изображения трёхмерных моделей в компьютерных программах, при
которых отслеживается обратная траектория распространения луча (от экрана к
источнику). Самым серьёзным недостатком метода обратного трассирования является
производительность. Метод растеризации и сканирования строк использует
когерентность данных, чтобы распределить вычисления между пикселями. В то время
как метод трассировки лучей каждый раз начинает процесс определения цвета
пикселя заново, рассматривая каждый луч наблюдения в отдельности.
Программный комплекс Inspirer2[2],
разработанный в Институте прикладной математики им. М.В.Келдыша РАН, позволяет
рассчитывать изображения моделей трехмерных сцен с физически точной
реалистичностью. Метод трассировки лучей используется как один из основных
алгоритмов для построения физически корректных реалистичных изображений.
Непосредственно для получения фотореалистичных изображений используется метод
обратной трассировки лучей от камеры до объекта. Таким образом, возникает
задача: как сделать, чтобы OpenGL визуализация, скорость которой
обеспечивается аппаратными 3D-ускорителями современных видеоадаптеров, по
возможности совпадала с визуализацией при помощи трассировки лучей.
Понятно, что OpenGL не
обладает всеми средствами классических алгоритмов трассировки лучей,
используемых в Inspirer2. Необходимо было выделить все возможности и ограничения
OpenGL и
разработать методы решения возникающих проблем для обеспечения быстрой
визуализации с помощью аппаратных ускорителей OpenGL, по
возможности близких к результатам трассировки лучей.
Комплекс Inspirer2 для
обеспечения физически точной реалистичности поддерживает следующие атрибуты
поверхности:
·
Диффузное отражение.
·
Зеркальное отражение.
·
Диффузное пропускание.
·
Зеркальное пропускание.
·
Самосвечение.
Все эти атрибуты, кроме
диффузного пропускания, поддерживаются OpenGL. Цвет
для каждого атрибута может быть как однородным, так и заданным текстурой. Кроме перечисленного, Inspirer2 позволяет создавать правильные изображения оптически
сложных материалов, заданных с помощью двунаправленных функций
отражения/пропускания (BRDF
/ BTDF), например, для
корректного изображения сложных, компонентных автомобильных красок. При
использовании OpenGL визуализации было решено использовать эти функции
посредством сферических текстур. При этом делается предположение, что все
источники света и камера являются удаленными от объекта визуализации, что
обеспечило достаточно приемлемый результат, несмотря на ограничения OpenGL.
Для обеспечения физически
точной реалистичности методом трассировки лучей в Inspirer2
выделены следующие источники света:
·
Точечный.
·
Конический.
·
Параллельный.
·
Площадной (линейный, прямоугольный и круговой)
·
Освещение от неба с солнцем.
При этом сила источника света
задается непосредственно либо как световой поток от локального источника света,
либо как освещенность поверхности перпендикулярной направлению параллельного
источника света. Также, точечный и конический источник могут иметь гониодиаграмму.
OpenGL накладывает свои ограничения на использование источников света.
Гониограмма не поддерживается в OpenGL и, следовательно, не может
быть использована при OpenGL
визуализации для точечного и конического источников света. Площадные источники
освещения также не поддерживаются в OpenGL.
В OpenGL сила
источника света задается цветом в диапазоне [0 – 1], отдельно для диффузного,
зеркального и рассеянного света. Для вычисления величины освещенности поверхности
при использовании OpenGL была использована формула:
I
= I0 * (C0 + C1 / R + C2 / (R * R))
в
которой указываются три коэффициента ослабления света в зависимости от
расстояния. В этой формуле:
I –
величина освещенности поверхности, измеряемая в lux,
I0 – сила источника освещения, заданная в lum,
С0 – константа,
C1 – коэффициент линейного ослабления света,
C2 – коэффициент квадратичного ослабления света.
Для физически корректного
локального источника света коэффициенты C0 и C1
должны быть равны 0, а C2 и цвет источника света надо вычислять в
зависимости от реального светового потока. Было выбрано, что C2 при OpenGL
визуализации полагается равным 1, а цвет источника света вычисляется как
реальный световой поток, деленный на максимальную яркость.
Для точечного источника света
была выбрана формула:
diffuse
= specular = flux / (4 * PI) / maxlum
где
diffuse и specular – сила диффузного и зеркального
источника освещения, измеряемая в lum,
flux –
полный световой поток точечного источника света,
4
* PI
– объемный угол сферы,
maxlum – максимальная яркость,
используемая для визуализации.
Для параллельного источника
света мы выбрали формулу:
diffuse = specular = intens / maxlum
где
diffuse и specular – сила диффузного и
отражающего источника освещения,
intens – освещенность
поверхности, перпендикулярной направлению излучения,
maxlum – максимальная яркость.
Это обеспечивает такой же цвет
поверхности, как и в визуализации трассировкой лучей.
Inspirer2
поддерживает физически правильную модель освещения. Диффузное
отражение и пропускание рассеивают падающее излучение согласно закону Ламберта.
Яркость L рассеивающей поверхности одинакова во всех направлениях и пропорциональна
освещенности поверхности:
L
= Kd * diff_col
* E / PI
где
Kd – коэффициент диффузного отражения,
diff_col – цвет
диффузного отражения,
E – освещенность поверхности.
PI –
объемный угол полусферы деленный на 2.
Зеркально отраженное излучение
тоже рассеивается, в зависимости от коэффициента глянцевости
поверхности. В компьютерной графике используют две различные модели глянцевого
отражения источника света. OpenGL
использует Blinn-Phong shading model [3],
тогда как метод трассировки лучей использует Phong shading model [4]. Для
того, чтобы результаты были по возможности одинаковы, для
метода трассировки лучей в Inspirer2 также была обеспечена
возможность использования Blinn-Phong shading model.
Метод трассировки лучей в Inspirer2 вычисляет
физическую яркость пикселей и использует двухступенчатое преобразование яркости
в цвет монитора. Сначала применяется кривая чувствительности человеческого
глаза (TR99SH1), это
стандартная кривая Международной комиссии по освещению (МКО, или CIE - Comission International de l'Eclairage)[5], а
затем кривая отклика монитора.
Внутренняя визуализация Open GL (internal shading) не работает
с физическими яркостями, источники света задаются цветами в диапазоне [0 – 1], а
цвет пикселя вычисляется как сумма произведений цвета источника света, с учетом
ослабления в зависимости от расстояния, и соответствующего атрибута поверхности.
Для сопоставления результатов OpengGL и
метода трассировки лучей, в последнем применялось линейное преобразование
яркости пикселя в цвет монитора:
Col = lum / max_lum
Внешняя визуализация OpenGL (external shading)
использует заранее вычисленные цвета вершин. При вычислении цветов
вершин можно применить кривую отклика монитора.
Цвет текстурированной
поверхности вычисляется в OpenGL через mipmaps - ряд
изображений текстуры с разрешением каждого следующего изображения в 2 раза
меньше предыдущего. В зависимости от расстояния до камеры, маппирования
текстуры и разрешения рисуемого изображения, подбираются 2 изображения текстуры
с большим и меньшим разрешением, производится интерполяция между 4 пикселями в
каждом изображении, а затем - между двумя вычисленными пикселями.
Такой же алгоритм применен и
для метода трассировки лучей.
Результаты примененных методов
наглядно демонстрируют приведенные ниже иллюстрации.
|
OpenGL |
|
Трассировка
лучей Blinn-Phong |
|
Трассировка
лучей Phong |
Рис. 1. Сфера с диффузным розовым цветом и зеркальным белым
цветом.
Изображения
полученные при помощи OpenGL визуализации и трассировкой
лучей с Blinn-Phong
моделью вычисления бликов совпадают идеально. Форма бликов для Blinn-Phong и Phong
моделей вычисления бликов отличается для больших углов наблюдения. Поскольку в OpenGL
вычисляются только цвета вершин треугольников, а между ними производится
интерполяция – использована сфера с достаточно мелкой триангуляцией.
|
OpenGL |
|
Трассировка лучей |
Рис. 2. Автомобиль освещенный изнутри
2мя точечными источниками света.
Различия наблюдаются на
отекстуренных поверхностях. Дело в том, что Open GL
вычисляет цвета вершин без текстуры, клиппирует и только затем рисует
поверхность с текстурой.
Прозрачная сфера c BRDF и BTDF освещенная пятью параллельными источниками света.
|
OpenGL |
|
Трассировка
лучей |
Рис. 3.
Прозрачная сфера c BRDF и BTDF
освещенная пятью параллельными источниками света.
Блики в Openg GL более
размытые, потому что сферическая тестура считалась на
сетке с ограниченным разрешением, оптимизированным для быстрого счета текстуры.
Тени также не отображаются в OpenGL.
|
OpenGL |
|
Трассировка
лучей |
Рис. 4. Автомобиль с BRDF в фотомонтажной сцене
освещенный солнцем.
Тени от солнца есть и в OpenGL
изображении, но на площадке под автомобилем их нет, поскольку она не
отображается в OpenGL, вместо неё отображается фоновое изображение.
|
OpenGL |
|
Трассировка
лучей |
Рис. 5. Автомобиль с BRDF в сцене с HDRI фоном.
HDRI фон
является одновременно и источником освещения. Отражения
фона на OpenGL изображении более размытые, поскольку фон рисуется на
недостаточно подробной сетке. Тень на изображении с трассировкой лучей
отображена на виртуальной плоскости.
[1] Kilgard
M.J., Akeley K. Modern OpenGL: its design and evolution / SIGGRAPH Asia’08.
[2] Ignatenko
A., Barladian B., Dmitriev
K., Ershov S., Galaktionov
V., Valiev I., Voloboy A. A Real-Time 3D Rendering System with BRDF Materials and Natural
Lighting. Proc. GraphiCon-2004 -14-th
International Conference on Computer Graphics and Vision,
[3] Wikipedia the free
encyclopedia. Blinn-Phong shading model. http://en.wikipedia.org/wiki/Blinn
[4] Wikipedia the free
encyclopedia. Phong shading. http://en.wikipedia.org/wiki/Phong_shading
[5] А.И. Куликов, Т.Э.
Овчинникова. Цвет
в компьютерной графике.
OpenGL visualization in
Inspirer2 with quality of ray tracing method
S. Andreev, I. Valiev
Keldysh Institute for
Applied Mathematics RAS, Moscow, Russia
esa@keldysh.ru
Abstract
This article considers
possibility to use graphics 3D accelerators for fast visualization of scenes
with the quality maximally close to the results of ray tracing method. There
were created various methods to provide photorealistic images for surface
attributes, including surfaces of optically complex materials, there were
developed algorithms and formulas for modeling different kinds of light
sources, such as point, conic, parallel.
Also two illumination model were investigated, and support for Blinn-Phong
shading model was included to provide maximal likeness of results.
There was included support
of formulas for transformation of luminance to monitor color. Methods of texture interpolation was also provided.
Keywords: realistic images, ray tracing, OpenGL visualization.
References
[1] Kilgard
M.J., Akeley K. Modern OpenGL: its design and evolution. SIGGRAPH Asia’08.
[2] Ignatenko
A., Barladian B., Dmitriev
K., Ershov S., Galaktionov
V., Valiev I., Voloboy A. A Real-Time 3D Rendering System with BRDF Materials and Natural
Lighting. Proc.
GraphiCon-2004-14-th International Conference on Computer Graphics and Vision,
Moscow, 2004, pp.159-162.
[3] Wikipedia the free encyclopedia. Blinn-Phong
shading model. Available at: http://en.wikipedia.org/wiki/Blinn
[4] Wikipedia the free encyclopedia. Phong shading.
Available at: http://en.wikipedia.org/wiki/Phong_shading
[5] A.I. Kulikov,
T.E. Ovchinnikova. Color in computer graphics.