5. Назаров А.В., Козырев Г.И. Современная телеметрия в теории и на практике: Учебный курс. - СПб: Наука и Техника, 2007. - 672 с.
6. Бей И. Взаимодействие разноязыковых программ. Руководство программиста. - М.: Издательский дом «Вильямс», 2005. - 880 с.
7. Ануфриев И.Е. Самоучитель MatLab 5.3/6.x. - СПб: БХВ-Петербург, 2002. - 736 с.
8. Дьяконов В.П. MATLAB 6.5 SP1/7 + Simulink 5/6®. Основы применения. Серия «Библиотека профессионала». - М.: СОЛОН-Пресс, 2005. - 800 с.
9. Куприянов М.С., Матюшкин Б.Д. Цифровая обработка сигналов: процессоры, алгоритмы, средства проектирования. - СПб: Политехника, 1999.
10. Percival D.B., Walden A.T. Spectral Analysis for Physical Applications: Multitaper and Conventional Univariate Techniques. - Cambridge: Cambridge University Press, 1993.
11. Welch P.D. The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms. // IEEE Trans. Audio Electroacoust. - June 1967. - Vol. AU-15. - Р. 70-73.
12. Бондарев В.Н., Трестер Г., Чернега В.С. Цифровая обработка сигналов: методы и средства. - Севастополь: СевГТУ, 1999. - 398 с.
13. Хорстманн К.С., Корнелл Г. Java 2. Библиотека профессионала, том II. Тонкости программирования. - М.: Издательский дом «Вильямс», 2006. - 1168 с.
14. Ноутон П., Шилдт Г., Java™ 2: Пер. с англ. - СПб.: БХВ-Петербург, 2005. - 1072 с.
Войтюк Татьяна Евгеньевна
Демин Анатолий Владимирович
Санкт-Петербургский государственный университет информационных технологий, механики и оптики, аспирант, voytuk@i-teco.ru, tanya_4ever@mail.ru Санкт-Петербургский государственный университет информационных технологий, механики и оптики, доктор технических наук, профессор, dav_60@mail.ru
УДК 004.021
РЕАЛИЗАЦИЯ МОДЕЛИ ОСВЕЩЕНИЯ КУКА-ТОРРЕНСА C ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ DEFERRED SHADING
А.А. Безгодов, Э.В. Стародубцев
Рассматриваются достоинства и недостатки модели освещения Кука-Торренса, особенности технологии Deferred Shading и способ реализации данной модели освещения с использованием технологии Deferred Shading. Предлагается способ размещения данных в геометрическом буфере и ряд методов оптимизации. Ключевые слова: компьютерная графика, модели освещения, deferred shading
Введение
Освещение в игровых системах является важным фактором, который влияет на восприятие виртуального мира пользователем. Пользователь должен в полной мере идентифицировать материалы и сопоставлять синтезируемое изображение с тем, что он видит в реальной жизни: металл должен выглядеть как металл, пластмасса - как пластмасса, и т.д. Во многом восприятие зависит от выбранной модели освещения. Некоторые модели годятся для описания лишь узкого круга материалов, в то время как другие модели позволяют описывать более широкий круг материалов. Для обеспечения гибкости в некоторых проектах используют несколько моделей освещения.
В данной работе рассматривается особенности модели освещения Кука-Торренса, способ реализации с использованием технологии Deferred Shading, а также ряд методов оптимизации, которые позволяют ускорить построение изображения, несмотря на высокую вычислительную трудоемкость данной модели освещения.
Модель освещения Кука-Торренса
Модель освещения Кука-Торренса была представлена в [1]. Поверхность, отражающая свет, моделируется как совокупность блестящих микрограней, ориентированных в различных направлениях. Каждая микрогрань отражает падающий свет, и только те грани, которые ориентированы должным образом, отражают свет в сторону наблюдателя и вносят вклад в освещенность. Согласно [1], общая освещенность Я рассчитывается как
Я = Я + ёЯ,, (1)
где ^ - весовой коэффициент зеркального отражения, ё - весовой коэффициент диффузного отражения, причем , + ё = 1, Я, - зеркальная составляющая освещенности, Яё -диффузная составляющая освещенности. Диффузная составляющая может быть рассчитана по закону Ламберта, а зеркальная составляющая выражается следующим образом (рис. 1):
Я, = ^, (2)
(П V)
где Е - коэффициент Френеля, Б - доля граней, ориентированных по направлению к наблюдателю, G - коэффициент затенения и экранирования микрограней, п - усредненная нормаль к поверхности, V - единичный вектор, направленный в сторону наблюдателя. Коэффициент Френеля зависит от коэффициента преломления материала для длины волны, равной длине волны падающего света:
F = 1 к-^
2 (g + с )2
1 +
c(g + с)-1
_c(g - с) + 1_
(3)
где с = cos (9) = (h, v), g = ц2 + с2 +1. Здесь п - коэффициент преломления, с - косинус
угла между вектором, направленным к наблюдателю, v и половинным вектором h, 1 + v
h
l|1 + v||'
1 - единичный вектор, направленный в сторону источника света.
(4)
Рис. 1. Расчет освещения
Чтобы вычислить коэффициент преломления, достаточно знать коэффициент Френеля (Е0) для нормального падения света. В этом случае коэффициент преломления может быть выражен как 1
п =
1 -л/^
(5)
и подставлен в выражение (4). Данные вычисления выполняются для всех используемых длин волн, например для красного, зеленого и синего цвета. Коэффициент экранирования и затенения выражается как
2
G = min
(6)
" 2(п,h)(n,v) _1, (v, h) , (v, ^ _
Доля граней, ориентированных по направлению к наблюдателю, может быть вычислена по одной из функций распределения, например, по функции распределения Гаусса или Бекмана. Согласно [1], распределение Бекмана хорошо согласуется с экспериментом для многих материалов и длин волн. Распределение может быть вычислено как
D =
1
tan 8 m
- 4 8 . (7)
m cos 8
где m обозначает среднеквадратичный наклон микрограней и варьируется от 0,2 для гладких материалов до 0,6 для шероховатых.
2
Рис. 2. Сравнение результатов расчета освещения на основе экспериментальных данных (слева), с использованием модели Блинна (в центре) и модели Кука-Торренса (справа)
Рис. 3. Сравнение моделей освещений Блинна (слева) и Кука-Торренса (справа)
Как видно из приведенных выше формул, модель освещения Кука-Торренса является весьма трудоемкой с вычислительной точки зрения. Поэтому в первую очередь возникает вопрос, что дает эта модель освещения по сравнению с другими моделями освещения. Согласно [2], модель освещения Кука-Торренса наиболее точно описывает взаимодействие света и материала для широкого круга материалов (рис. 2).
В ходе проведения исследовательской работы на базе игровой системы Quake 2, созданной фирмой id Software, была разработана собственная графическая система, реализующая обе модели освещения с использованием технологии Deferred Shading. Все приведенные ниже изображения получены в результате работы разработанной графической системы. Сцены созданы в редакторе Radiant для Quake 2, а текстуры взяты из игровой системы Doom 3, разработанной также фирмой id Software.
На рис. 3 представлен результат работы графической системы, работающей в режиме сравнения моделей освещения.
Технология Deferred Shading
Технология Deferred Shading была предложена T. Saito и T. Takahashi в работе «Comprehensible rendering of 3-D shapes» (1990). Особенностью данного подхода является расчет освещенности в пространстве изображения, а не в мировом пространстве или пространстве объектов, как это делается с использованием классического подхода. Фундаментальным объектом данной технологии является так называемый G-buffer (геометрический буфер). Он хранит все необходимые для расчета освещения атрибуты, не зависящие от конкретного источника света. Как правило, это информация о позиции, нормали и параметрах материала. Также геометрический буфер может содержать дополнительную информацию, которая может быть использована для различных эффектов пост-обработки, таких как размытие движения (Motion Blur) или свечение (Glow). _Обобщенный алгоритм расчет освещения выглядит следующим образом._
1. для каждого объекта в сцене:
2. отобразить параметры материалов в G-buffer
3. для каждого источника света:
4. буфер_кадра += расчет_освещения ( G-buffer, источник_света )_
Данная технология обладает рядом преимуществ и недостатков [3], поэтому решение о ее использовании во многом определяется спецификой проекта. Так, если присутствуют закрытые пространства и много небольших динамических источников света, то технология Deferred Shading может дать серьезный прирост производительности. Особо следует отметить случаи, когда проект нацелен на использование техник построения глобальной освещенности в реальном масштабе времени [4].
Распределение атрибутов в геометрическом буфере
Одной из важнейших задач разработки системы, использующей технологию Deferred Shading, является выбор формата и способа размещения атрибутов в геометрическом буфере. Современные видеокарты, поддерживающие Direct3D 9, поддерживают максимум четыре внеэкранные поверхности, в которые может осуществляться одновременная запись (Multiple Render Targets, MRT). Каждый MRT должен иметь одинаковую с другими MRT разрядность, например, 32, 64 или 128 бит. Возможные форматы представлены в табл. 1. Каждый формат описывается следующим образом: A, R, G, B обозначают альфа, красный, зеленый и синий каналы соответственно. Число рядом с обозначением канала означает количество бит в данном канале, F - формат с плавающей запятой.
Использование 64- и 128-битных форматов позволяет хранить данные без каких бы то ни было способов сжатия [2]. Однако, чем больше размер буфера, тем дольше выполняются операции записи и чтения. Таким образом, в первую очередь следует попытаться разместить данные в буфере с наименьшей разрядностью. Для этого следует выделить атрибуты, которые требуется записать в геометрический буфер - позиция точки в пространстве вида, нормаль в точке, цвет диффузного отражения, параметры зеркального отражения, вектора размытия движения, коэффициент «свечения», переключатель материалов.
32 битные форматы 64 битные форматы 128 битные форматы
Форматы A8R8G8B8 A2R10G10B10 G16R16 R32F A16R16G16B16 A16R16G16B16F G32R32F A32B32G32R32F
Размер геометрического буфера (1024x768). 12 Mb 24 Mb 48 Mb
Таблица 1. Форматы и размеры геометрического буфера
Так как в момент расчета освещения всегда известны экранные координаты точки, то восстановить видовые координаты X и У можно, зная глубину и матрицу проецирования. Таким образом, в буфере достаточно хранить только глубину. Для обеспечения точности следует использовать не менее 24 бит для представления значения глубины (О). В противном случае возможны искажения изображения (рис. 4). Для 24 бит сгенерированное изображение не имеет искажений, для 16 бит присутствуют незначительные искажения, а для 8 бит расчет освещения дает полностью неправильные результаты.
Как показали эксперименты, для хранения нормали ( Мх, Ыу, Ыг) достаточно 1 байта
для представления каждой компоненты, а для хранения цвета диффузного отражения, (Бг, , Бь), требуется 3 байта, т.е. 1 байт на каждую из трех компонент.
Параметры зеркального отражения обычно задаются как цвет зеркального отражения и дополнительный коэффициент (коэффициент шероховатости), определяющий форму блика. Однако такой подход требует 4 байт для хранения и является избыточным. Как правило, цвет зеркального отражения выбирают либо белым (для неметаллов), либо равным цвету диффузного отражения (для металлов), либо промежуточным. Таким образом, можно сократить представление за счет указания соотношения диффузной и зеркальных составляющих отраженного света, коэффициента шероховатости (т ) и степени «металлизации» ( ктеШ ), определяющей цвет зеркального отражения ( к,).
Переключатель материалов (, ) необходим для обеспечения возможности использования нескольких моделей освещения. Обычно он представляет собой число, а диапазон, в котором оно находится, определяет модель освещения. Например, при значении от 0 до 0,5 используется модель Блинна, а от 0,5 до 1 - модель Кука-Торренса. Распределение данных в буфере представлено в табл. 2.
Рис. 4. Искажения изображения для различных разрешений буфера глубины
Коэффициент свечения (ке) определяет, какая доля диффузного цвета не освещается
и постоянно излучает. Этот параметр необходим для задания светящихся поверхностей, таких как поверхности ламп, мониторов или неба, которые могут встречаться в игровом пространстве. Вектора размытия (М, Му) задают направления размытия изображения при
построении эффекта размытия движения. Для их задания достаточно 2 байт для компонент Xи У. Хранение векторов движения в геометрическом буфере было предложено в [5]. Светящиеся поверхности и эффект размытия представлены на рис. 5.
Рис. 5. Светящиеся поверхности и эффект размытия движения при повороте камеры
Рис. 6. Визуализация геометрического буфера
Рис. 7. Результат расчета освещения
R G B A
MRT0 D Mx
MRT1 Dr Dg Db Mv
MRT2 Nx Nv Nz ke
MRT3 ks m kmetal s
Таблица 2. Распределение данных в геометрическом буфере
На рис. 6 представлен визуализированный геометрический буфер (RGB-компоненты), а на рис. 7 - результат расчета освещения по приведенному геометрическому буферу.
Использование таблиц для ускорения расчета освещения
Одним из основных недостатков модели освещения Кука-Торренса является ее высокая вычислительная сложность и, как следствие, низкая производительность приложений, которые использую данную модель освещения.
С помощью ShaderPerf1 - программы, разработанной nVidia - можно оценить производительность шейдера. Был осуществлен замер производительности шейдера, выполняющего расчет освещения по модели освещения Блинна и Кука-Торренса. Результат представлен в табл. 3, строки 1 и 2, соответственно.
Шейдер Производительность, Mpix/s
Модель освещения Блинна 505
Модель освещения Кука-Торренса 240
КТ, без расчета коэффициентов Френеля 471
КТ, без учета самозатенения микрограней 356
КТ, без учета распределения Бекмана 400
Таблица 3. Замер производительности шейдеров
Несмотря на то, что математически модель освещения Кука-Торренса сложнее модели Блинна почти на порядок, шейдер, реализующий эту модель освещения, уступает в производительности лишь в два раза. Это обусловливается тем, что, помимо расчета освещения, шейдер осуществляет чтение из текстур и выполняет дополнительные вычисления, общие для обеих моделей. Для выявления наиболее трудоемких операций были поочередно отключены расчет коэффициентов Френеля, учет самозатенения микрограней и учет распределения Бекмана. Результат оценки производительности представлен в табл. 3, строки 3-5 соответственно. Из таблицы видно, что наиболее трудоемкой операцией является расчет коэффициентов Френеля и распределения Бекмана.
Одним из эффективных способов ускорения сложных вычислений является использование таблиц. Таблицы хранятся в текстурах (Lookup texture, LUT), что, помимо высокой скорости вычислений (за один такт, если текстура находится в кэш-памяти), позволяет осуществлять практически бесплатную аппаратную линейную интерполяцию значений. Текстуры могут быть 1-, 2- и 3-мерным, т.е. возможно задание функции максимум от трех переменных. Для расчета коэффициентов Френеля требуются два параметра -косинус угла падения и коэффициент Френеля для нормального падения. Эти параметры, а также множество значений функции лежат в диапазоне [0...1], таким образом, путем использования двумерной текстуры можно задать функцию в табличном виде.
В случае функции распределения Бекмана параметрами являются коэффициент шероховатости и косинус угла падения. Однако множество значений функции распре-
1 Данная программ позволяет оценить производительность шейдеров для различных моделей графических ускорителей, здесь и далее приведены данные для ускорителя G70.
деления Бекмана не лежит в пределах диапазона [0...1]. В связи с этим имеет смысл использовать масштабирование значений или формат текстур с плавающей запятой. Запаковка значений в ЛЯОБ каналы текстуры неэффективна, так как в этом случае нельзя использовать аппаратную билинейную фильтрацию. Использование таблиц для расчета самозатенения микрограней невозможно, так как функция зависит от четырех переменных - всех скалярных произведений в выражении (6).
На рис. 8 представлены визуализированные таблицы для расчета коэффициентов Френеля и распределения Бекмана.
Рис. 8. Таблицы для расчета коэффициентов Френеля и распределения Бекмана
Результаты оценки производительности шейдера представлены в табл. 4. Как видно из результатов замера производительности, для шейдера, реализующего модель освещения Кука-Торренса, удается достичь лишь 70% от производительности шейдера, реализующего модель Блинна. Таким образом, снижение производительности - это цена, которую приходится платить за качество генерируемого изображения.
Шейдер Производительность, Mpix/s
1 Модель освещения Кука-Торренса, использование таблицы для коэффициентов Френеля 331
2 Модель освещения Кука-Торренса, использование таблиц для коэффициентов Френеля и распределения Бекмана 355
Таблица 4. Производительность шейдеров, использующих табличное
представление функций
Использование световых объемов для ускорения расчета освещения
В больших сценах может присутствовать огромное количество источников света. В классической интерпретации технологии Deferred Shading расчет освещения осуществляется для всех точек на экране. Таким образом, количество вычислений для каждой точки на экране будет расти пропорционально количеству источников света в сцене. Однако этого можно избежать, осуществляя расчет освещения только для тех точек, для которых вклад освещения от источника света является значимым. Как правило, вклад освещения зависит от формы и типа источника света, а также закона убывания силы света. Существует множество законов убывания силы света, однако для многих из них можно указать область, где вклад в освещение данными источником света значим, и области, где вклад незначим. Таким образом, световым объемом можно назвать область пространства, где вклад в освещенность данным источником света является значимым.
На рис. 9 представлены наиболее употребительные формы световых объемов: сферическая (для точечных источников света), коническая (для источников типа «прожектор») и цилиндрическая (для направленных источников света). Сферическая форма
светового объема образуется вокруг точечного источника света, а радиус выбирается равным расстоянию, на котором свет полностью затухает или вклад в освещение не является значительным. Коническая форма используется для источников света типа «прожектор», угол раствора конуса определяется углом рассеяния света, а высота -расстоянием, на котором свет затухает. Для направленных источников света (солнечный или дневной свет) затухание обычно отсутствует, и в этом случае размеры светового объема определяются на этапе создании сцены.
Рис. 9. Формы источников света
Таким образом, вместо расчета освещения для всех точек на экране осуществляется расчет освещения только для тех точек, в которые отобразился световой объем. Однако существует ряд случаев, в которых данный подход неэффективен (рис. 10). Значимый вклад в освещенность присутствует только в областях, отмеченных жирной линией, но отображены будут все три световых объема, что приведет к лишним затратам ресурсов.
Тем не менее, такие случаи можно обрабатывать и отбрасывать ненужные точки на экране с помощью буфера трафарета. Алгоритм выглядит следующим образом.
1. Буфер трафарета заполняется нулями.
2. Выставляется следующий режим работы буфер трафарета.
a. При отображении граней, обращенных к наблюдателю, если они не проходят буфер глубины, значение в буфере трафарета уменьшается на единицу.
b. При отображении граней, обращенных от наблюдателя, если они не проходят буфер глубины, значение в буфере трафарета увеличивается на единицу.
c. Для всех остальных случаев значение в буфере трафарета сохраняется.
3. Рисуется световой объем с выключенной записью в буфер цвета и глубины.
4. Выставляется следующий режим работы буфер трафарета.
a. Примитив растеризуется только в тех точках, где значение в буфера трафарета равно 1.
b. Если тест трафарета проходит успешно (в буфере было значение 1), значение в буфере трафарета уменьшается на единицу. Таким образом, после отображения светового объема буфер будет опять заполнен нулями.
5. Рисуется световой объем с включенной записью в буфер цвета, используя шейдер, реализующий расчет освещения.
6. Перейти к пункту 2 и выполнить действия для следующего источника света.
\1<-
ж-ДЛЛ
Рис. 10. Случай неэффективного использования световых объемов
На рис. 11 представлены этапы приведенного выше алгоритма. Серыми блоками обозначены элементы сцены. Линия слева - буфер трафарета, жирными линиями обозначены точки в буфере трафарета, где значение равно 1. Темно-серым обозначены области в сцене, для которых осуществляется расчет освещения.
Рис. 11. Использование буфера трафарета для ускорения расчета освещения
Следует отметить, что приведенный алгоритм не требует очистки буфера трафарета для каждого источника света, а также работает для всех возможных случаев взаимного расположения наблюдателя и светового объема: наблюдатель вне объема; наблюдатель внутри объема; наблюдатель расположен так, что экранная плоскость пересекает световой объем. Такой подход обеспечивает стабильную производительность для больших сцен с большим количеством равномерно расположенных по сцене источников света. На рис. 12 представлены визуализированные световые объемы для четырех источников света типа «прожектор».
ш __к
щ
Рис. 12. Визуализированные световые объемы Заключение
Рассмотрена модель освещения Кука-Торренса. Разработана графическая система на базе игровой системы Quake 2 (исходные тексты Quake 2 доступны по лицензии GPL), в которой реализованы модели освещения Кука-Торренсаи и Блинна. Обе модели освещения реализованы с использованием технологии Deferred Shading.
Предложен метод размещения данных в геометрическом буфере минимальной разрядности (128 бит), позволяющий задавать разнообразные материалы и размещать данные, необходимые для эффектов постобработки. Предложен ряд методов оптимизации расчета освещения, осуществлен ряд действий в направлении увеличения производительности разработанной графической системы.
По сравнению с использованием модели освещения Блинна использование модели освещения Кука-Торренса дает незначительное снижение производительности (скорость заполнения 505 Mpix/s против 355 Mpix/s), а взамен дает более естественный вид бликов на поверхности различных материалов. Как показывает опыт разработки таких систем, расчет освещения занимает лишь часть от всего времени обработки кадра (в приведенных сценах эта величина колеблется от 20% до 50% от общего времени расчета кадра), и, как следствие, падение производительности становится еще менее значимым.
Особый интерес для дальнейших исследований в технологии Deferred Shading представляют материалы, имеющие несколько градаций неровностей; анизотропные материалы; многослойные материалы; материалы, обладающие свойством подповерхностного рассеивания (subsurface scattering).
Литература
1. Cook R.L., Torrance K.E. A Reflectanhce Model for Computer Graphics. - 1982.
2. Ngan A., Durand F., Matusik W. Experimental Analysis of BRDF Models. - 2004.
3. Harris M., Hargreaves S. Deferred Shading. Presentation. - 2004.
4. Shishkovtsov О. Deferred shading in S T A L K E R. - 2005.
5. Michiel van der Leeuw. Deferred Rendering in Killzone 2. Presentation. -2007.
Безгодов Алексей Алексеевич
Стародубцев Эдуард Владимирович
— Санкт-Петербургский государственный университет информационных технологий, механики и оптики, аспирант, demiurghg@gmail.com
— Санкт-Петербургский государственный университет информационных технологий, механики и оптики, кандидат технических наук, доцент, sevedw@d1.ifmo.ru
УДК 004.49; 629.7.08
ПРОГРАММНО-АППАРАТНЫЙ КОМПЛЕКС ДЛЯ КОНТРОЛЯ СИСТЕМ ПОСАДКИ ВОЗДУШНЫХ СУДОВ А.О. Саута, В.И. Поляков
Приводится краткое описание спутниковой системы посадки и дифференциального режима работы спутниковой навигационной системы. С учетом этих наработок рассматривается проблема контроля точности существующих систем посадки воздушных судов и предлагается вариант ее решения с применением конкретной аппаратуры, имеющейся на рынке авиационного оборудования.
Ключевые слова: посадка воздушных судов, спутниковая навигационная система, спутниковая система посадки.
Введение
Необходимость оснащения аэропортов и воздушных судов (ВС) оборудованием, облегчающим пилотам посадку на взлетно-посадочную полосу (ВПП), была осознана довольно давно. С середины ХХ века установка радиотехнических посадочных систем производится почти повсеместно. За время развития авиации было разработано несколько типов систем посадки, таких как MLS (Microwave Landing System - микроволновая система посадки), спутниковая система посадки (ССП) и КГС (курсо-глиссадная система, англ. ILS - Instrumental Landing System). Однако международным стандартом на данный момент является именно последняя, поскольку она была разработана раньше других и внедрена во многих аэропортах. Также следует отметить возможность приме-