Математическое моделирование и оптимальное управление Вестник Нижегородского университета им. Н.И. Лобачевского, 2008, № 1, с. 108-117
УДК 004.92
ЭФФЕКТИВНЫЙ АППАРАТНО-РЕАЛИЗУЕМЫЙ АЛГОРИТМ СЖАТИЯ ДАННЫХ О РЕЛЬЕФЕ
© 2008 г. Е.А. Юсов
Нижегородский госуниверситет им. Н.И. Лобачевского
yusov_egor@mail. ги
Поступила в редакцию 24.01.2008
В статье представлен новый метод сжатия данных о рельефе. Он позволяет добиться трехкратного уменьшения объема при минимальной потере точности. Алгоритм может быть реализован на современных графических платформах и может применяться в системах визуализации ландшафта реального времени. Рассмотрены детали реализации метода с помощью новейшего графического интерфейса БкеСХШ. Приведены результаты экспериментов, подтверждающие эффективность представленного подхода.
Ключевые слова: рельеф, графические платформы, интерфейс БкеСХШ.
Введение
Высококачественная визуализация больших территорий в реальном времени является необходимым требованием при создании многих приложений компьютерной графики, таких как геоинформационные системы, симуляторы наземного и летного транспорта, ландшафтные редакторы, компьютерные игры и т.п. Фотореалистичное отображение рельефа поднимает множество сложных задач, так, что постоянный рост производительности современных графических процессоров позволяет решить их лишь отчасти. Основная проблема связана с тем, что ландшафт местности, как правило, задается матрицей высот очень большого размера. По этой причине визуализация полной триангуляции поверхности в реальном времени оказывается невозможной даже на самых мощных графических ускорителях. К тому же, объем матрицы высот может легко превысить емкость оперативной памяти компьютера. Поэтому проблемы оптимального представления, хранения и управления высотными данными, а так же эффективной реализации алгоритмов по-прежнему актуальны.
Обзор работ
Для решения задачи визуализации больших территорий в последние годы было предложено множество алгоритмов. Большая часть из них посвящена проблемам построения адаптированной модели рельефа, учитывающей и локальные особенности поверхности, и положе-
ние камеры в пространстве. Некоторые из таких подходов порождают нерегулярные триангуляции. К примеру, в [1, 2] представлены методы, основанные на принципе триангуляции Делоне. Подходы, допускающие произвольные соединения вершин, предложены в [3, 4].
Другие алгоритмы используют иерархические структуры данных. Хороший обзор различных иерархических методов представлен в
[5]. Первый алгоритм, порождающий триангуляцию рельефа с непрерывно изменяющимся (как в пространстве, так и во времени) уровнем детализацией представлен P. Lindstrom и др. в
[6]. В его основе лежит квадрадерево вершин. Алгоритм ROAM (Real-Time Optimally Adapting Meshes), представленный M. Duchaineau и др. в
[7], концептуально очень близок к предложенному в [6] методу и основан на бинарном дереве треугольников. Подходы, далее развивающие идеи, предложенные в [6, 7], описаны в [8-10].
Следующим шагом в развитии адаптивных методов был переход к использованию в качестве наименьшего элемента представления модели более сложных структур (кластеров, агрегатов и т.п.). Такой переход объясняется значительным ростом производительности графических процессоров по отношению к центральным.
Первый метод, ориентированный на максимальное использование мощности графического процессора, представлен в [11] и называется RUSTiC (ROAM Using Surface Triangle Clusters). Основная идея заключается в замене отдельных треугольников в бинарном дереве алгоритма ROAM из [7] более сложными элементами -
кластерами, представляющими собой небольшие сетки. Эта идея была дальше развита в [12], где было предложено кэшировать подобные сетки (которые в [12] называются агрегированными треугольниками) в видеопамяти для наиболее эффективного отображения. В [13] и [14] представлены расширения алгоритмов с применением квадрадерева, которые в качестве наименьшего элемента упрощения модели используют прямоугольный рельефный блок или гиперблок.
Идея, используемая в [11, 12], была дальше разработана в [15], где отдельные треугольники из бинарного дерева алгоритма ROAM было предложено заменить небольшими нерегулярно триангулированными сетками, которые в [15] называются пакетами (batches). В [16] авторы расширили свой алгоритм для визуализации рельефа целой планеты в реальном времени. Следует заметить, что вся иерархия занимает чрезвычайно много места и требует постоянного чтения данных с диска на этапе выполнения. В [17] в этот алгоритм была добавлена возможность использования сжатого представления данных, основанного на применении вейвлет-преобразования.
В 2004 году был предложен новый подход [18], полностью игнорирующий локальные особенности рельефа. Такое решение авторы объясняют тем, что производительность графических процессоров достигла такого уровня, что проблема адаптации модели отошла на второй план, на первый же вышла задача оптимального заполнения графического конвейера. В [19] представлена реализация данного подхода на графическом процессоре с использованием вершинных текстур и шейдеров третьей модели.
Среди перечисленных работ методы сжатия данных о рельефе рассматриваются только в работах [17-19]. Так, подход в [17] использует вейвлет-преобразование, метод из [18] основан на алгоритме сжатия изображений [20], адаптированном для компрессии высотных данных. Однако эти методы сложны и не могут быть реализованы непосредственно на графическом процессоре.
Описание алгоритма
В данной статье предлагается дальнейшее развитие подходов, представленных в [21, 22]. В [22] описан алгоритм построения многомасштабной модели рельефа, основанной на компактном последовательном кодировании уровней детализации. Описанная модель обеспечивает максимальную эффективность современного графического аппаратного обеспечения. В данной статье предлагается метод эффективного
сжатия высотных данных, являющийся естественным расширением стратегии последовательного представления модели [22]. Первым этапом метода является построение многомасштабного представления исходных высотных данных, в качестве которых выступает сетка высот размером N х M вершин. Для удобства размеры N и M выбираются одинаковыми и равными степени двух. Это не является сильным ограничением, т.к. любой набор данных можно, к примеру, расширить нулями до квадратного, имеющего подходящий размер.
Для получения первого более грубого приближения исходная карта высот фильтруется и прореживается. В результате получается новая сетка, имеющая размер N/2 х N/2 узлов. Затем к ней применяется та же процедура фильтрации и т.д. до тех пор, пока не будет получено самое грубое приближение, представляющее собой единственное значение. Результатом такого построения является многоуровневая пирамида (рис. 1а), аналогичная используемой в методе Geometry Clipmaps [18]. Уровни имеют номера от 0 (самое грубое приближение) до Dhf -1 (самое точное приближение, представляющее собой исходную матрицу высот).
Через Dhf = (log2 N) +1 обозначено общее
число уровней в пирамиде. Уровень к пирамиды, являющийся сеткой высот размером
2к х 2к, аппроксимирует исходный набор данных с некоторой точностью и получается огрублением нижележащего уровня к+1. Вершины в каждом уровне идентифицируется тройным индексом (i, j, к), где через к е {0,1,...,Df -1} обозначен уровень разрешения, а через i, j е{0,1, ...,2к -1} - горизонтальный и вертикальный индексы вершины в сетке высот данного уровня. Полученная пирамида может также рассматриваться как квадра-дерево, где каждая вершина из уровня разрешения к (или глубины дерева к) имеет четырех потомков в более детальном уровне к+1 (рис. 1б).
Те участки рельефа, где он не имеет высокочастотных особенностей или те, которые расположены далеко от камеры, можно практически без потерь точности аппроксимировать, используя вершины из грубых приближений. Для областей, где важна точность, необходимо использовать вершины из уровней, которые содержат большее количество информации. Комбинируя вершины из различных масштабов приближения, можно получить адаптивную выборку, учитывающую особенности рельефа. Подробно этот процесс описан в [22].
■ вершина уровня 0 (корень дерева) х вершины уровня 1 • вершины уровня 2
Рис. 1. (а) Многомасштабное представление сетки высот размером 4x4 вершины; (б) соответствующее ему квадрадерево
Фильтрация уровней выполняется при помощи фильтра Нёвиля 4 порядка [23], который используется для аналогичных целей в алгоритме C-BDAM [17]. Элемент пирамиды с индексами (і, ], к) вычисляется по следующей формуле:
2І+2 2 ]+2 И = V УГ И
І,],к т,п т,п,к+\ ’
т=2і-1 п=2 ] -1
где через Итпк обозначено значение высоты вершины с индексами (т, п, к), а весовые коэффициенты Гт,п представлены на рис. 2.
© @ (1/32) ©
2+2
2/+1 10/32 10/32 ("1/32)
і
2] (-1/32) 10/3
2/-1 (Г) (ш2)
2І-1 2і і 2і+1 2і+2
0/32 (-1/32'
© ©
тивнои модели на уровне отдельных треугольников или вершин [1—10], оказываются неэффективными. Поэтому, как и в подходах, представленных в [10, 12, 14-16], в качестве наименьшего элемента представления модели в нашем методе используется рельефный блок, или патч, представляющий собой триангулированную сетку, покрывающую квадратный участок ландшафта. На этапе предподготовки алгоритм строит набор патчей, аппроксимирующих поверхность с разной точностью, который организован в квадрадерево или метадерево рельефных блоков (рис. 3). При этом каждый патч покрывает ту же территорию, что и четыре его потомка, т.е. участок рельефа может быть в грубом разрешении представлен одним патчем из уровня к или в более высоком разрешении -четырьмя патчами из уровня к+1 (рис. 3).
На этапе выполнения с учетом положения камеры в пространстве для разных участков ландшафта проводится выбор необходимого уровня детализации, и они аппроксимируются патчами из соответствующего уровня метадерева (рис. 4).
Каждый патч представляет собой аппроксимацию квадратного участка рельефа с некоторой точностью. Триангуляция патча строится на подмножестве вершин из полного многомасштабного представления исходных данных, которое можно изобразить как пирамиду (рис. 5 а) или поддерево (рис. 5б), включенное в полное представление.
мета уровень 0
мета уровень
Рис. 2. Весовые коэффициенты интерполяционного фильтра Нёвиля
Для вычисления высот элементов сетки, прилегающих к границам, нижележащий уровень мысленно расширяется на одну вершину за каждую границу. В качестве высот дополнительных вершин используются значения ближайших к ним граничных.
Квадрадерево рельефных блоков
уровень 0 ■ уровень 1 х уровень 2 • уровень 3
Рис. 3. Два уровня метадерева
На современных графических: платформах Рис. 4. Пример адаптивной аппроксимации рельефа
методы, которые производят построение адап- прямоугольными патчами
Рис. 5. (а) Пирамида высотных данных некоторого рельефного блока и (б) соответствующее ей квадрадерево по отношению ко всему многомасштабному представлению
Обозначим глубину квадрадерева каждого патча через Dp , а глубину метадерева - через
Dm • Тогда
Dm = Dhf - Dp + 1.
В каждом патче с учетом локальных особенностей поверхности выбирается набор активных вершин, т.е. вершин, оптимально аппроксимирующих участок рельефа, им покрываемый. Алгоритм выбора активных вершин подробно описан в [22]. Каждый узел дерева содержит компактную последовательную информацию, необходимую для восстановления набора активных вершин и геометрии дочерних узлов по набору активных вершин и геометрии родителя (см. [22] для подробной информации).
Каждый патч в пирамиде может быть идентифицирован тройным индексом (m, n, q). Многомасштабная пирамида (квадрадерево) каждого патча содержит Dp уровней. Уровень к является сеткой размером (2к + 4) х (2к + 4). Каждый уровень расширен на два элемента за каждую свою границу. Это необходимо для того, чтобы, во-первых, корректно вычислить карту нормалей, во-вторых, обеспечить корректную геометрическую стыковку соседних блоков (см. [22]), и, в-третьих, обеспечить корректную бикубическую фильтрацию, необходимую для текстурирования рельефа, которому будет посвящена отдельная статья.
Обозначим через Lkmnq уровень к многомасштабной пирамиды патча, имеющего индексы (m, n, q). Вся пирамида патча является множеством L nq, к = 0,1.. .Dp -1} . Уровень
Lkmnq представляет собой следующее подмножество полного многомасштабного представления:
Lm,n,q _ {hi, j,k+q } , С1)
где
i e{n • 2k - 2, ...,(n +1) • 2k + 2},
j є {m • 2k - 2, ..., (m +1) • 2k + 2}. Значения элементов, индексы которых выходят за границу уровня, считаются равными значениям ближайших к ним граничных элементов.
Сжатое представление высотных данных
Наибольшее количество информации содержится в самом детальном уровне многомасштабной пирамиды патча. Обозначим его через
Я Coarse г-ч ~
. Этот уровень является сеткой, содержащей (2Dp 1 + 4) х (2Dp 1 + 4) вершин:
HCoarse _ {hj | i, j є {0,1,...2Dp -1 + 2,2Dp -1 + 3}. Соответствие между элементами из множе-
Я Coarse г
и элементами многомасштабного представления может быть установлено из (1),
HCoarse _ TDp-1 Т.к. П - l^m,n,q .
Для увеличения уровня детализации необхо-
Coarse
димо перейти от сетки H к сетке, покрывающей ту же площадь, но имеющей в два раза более высокое разрешение (см. рис. 6):
HFme _ {h* | i, j є {0,1,...2Dp + 2,2Dp + 3} .
Все остальные уровни многомасштабных представлений дочерних патчей могут быть получены простым переносом данных из родительского патча.
На рис. 6 представлен пример, в котором число уровней в квадрадереве рельефного блока Dp _ 3 , сетка высот максимального разрешения рельефного блока имеет размер (2Dp 1 + 4) х
х (2Dp 1 + 4) _ 8 х 8 вершин. (В реальности, число уровней в квадрадереве намного больше. К примеру, при Dp _ 9 сетка имеет размер
260 х 260 вершин, и перерасход памяти за счет двух дополнительных вершин составляет 3%). На рисунке двойной линией обозначена граница территории, покрываемой рельефным блоком и четырьмя его потомками. Крестиками обозначены вершины из сетки высот данного рельефного блока, соответствующие множеству
Я Coarse
, кружочками - вершины из сеток высот
дочерних патчей (HFme). Пунктирными линиями отмечены вершины, образующие сетку высот максимального разрешения каждого из 4
4 £ X X X X X X ¡7
• , х 4o.» • • • X • • • • X • • • • X • • • • X • • • «¡1 X 9 9 1.11 X
X ¡5.0 ¡9.0» • , х ¡8.0» • • • X • • • • X • • • • X • • • • X • • 9 9 X 9 9 X
¡7.0. . , х ¡6.0» • • • X • • • • X • • • • X • 9 • • X 9 9 9 9 X 9 9 X
"3,0 ¡5.0* • , х ¡4.0» • • • X • • • • X • • 9 • X • 9 9 9 X 9 9 9 9 X 9 9 X
x# й*.0» • Х «2.0» • • • X • • • • X • • 9 9 X 9 9 9 9 X 9 9 9 9 X 9 9 X
¡1*0 • • X ¡* ¡* • • X ¡* ¡* • • X 9 9 X ..¡*6-¡07- 9 9 X 9 9 X ¡0*10 X
0.0 0.1
ьХ ¡0.0 ¡0.1 г* ¡0.2 ¡0.3 ¡0.4 /X ¡0.5 /X ¡0.6 ¡0.7
Рис. 6. Сетки максимального разрешения родительского патча и четырех его потомков
дочерних рельефных блоков. Эти вершины яв-
Я Fine
.
Первый этап построения сжатого представления - это получение предсказанной сетки более высокого разрешения путем интерполяции
~ тт Coarse Л Я
значений из H . Мы используем простую линейную интерполяцию, потому что эта возможность реализована на аппартном уровне во всех современных графическах ускорителях. Получить предсказанное значение в пиксельной программе можно при помощи билинейной фильтрации текстуры (команда Sample() в пиксельной программе на языке HLSL). Обо-
Я'"’' Fine
:
HFine = {Д* | i, j є {0,1,.. .2Dp + 2,2Dp + 3} .
Затем составляется разностный слой, содержащий отклонения предсказанных значений от точных по следующему правилу:
D = {dj = hj - hj | i, j є {0,1,...2Dp 1 + 2,2Dp-1 + 3},
где hi*j - это точные значения элементов из данного уровня многомасштабного представления.
Таким образом, разностный слой хранит информацию, необходимую для точного восстановления данных по предсказанному множеству. Этот разностный слой подвергается сжатию с потерями по следующему правилу: выбирается фиксированный размер квантизационного блока nq. Затем весь разностный слой D разбивается на квадратные блоки квантизации, имеющие размер nq х nq . Обозначим их
через Qm,n :
Qm,n = {dV е D} ,
где
i е {m • nq, ..., (m +1) • nq -1}, j e{n • nq, ..., (n +1) • nq-1}.
Число блоков квантизации вдоль стороны разностного слоя может быть вычислено как:
Nq = [((2Dp + 4) + (nq -1))/ nq ],
где квадратные скобки обозначают взятие целой части.
В каждом блоке квантизации определяется минимальное и максимальное разностные значения:
dmn = mm dj , dmn = max dj .
dijeQm,n dijeQm,n
Затем все разностные значения в каждом квантизационном блоке квантуются до одного байта по следующей формуле:
dj=[(dj-dm;nn)/(d:,ax-dm") • 255]
для всех dj е Qm,n .
d
Полученные целочисленные значения dj из
диапазона [0...255] формируют квантованный разностный слой, который записывается в формируемое сжатое представление.
Чтобы избежать накопления ошибки, после получения квантованного разностного слоя, мы
Я Fine
,
используя алгоритм декомпрессии, обратный описанному процессу сжатия. Полученное в
—Fine
результате этого множество H будет не-
Я Fine г
за счет ошибок, вносимых квантизацией. При формировании следующего более детального уровня элементы
Я Coarse г
берутся из восстановленного
—Fine
множества H , что позволяет избежать накопления ошибки.
Общая схема описанного алгоритма представлена на рис. 7.
Еще раз обратим внимание на то, что описанный алгоритм применяется только для сжатия/восстановления самых детальных уровней многомасштабных пирамид дочерних патчей. Все остальные уровни получаются путем переноса данных из пирамиды родительского патча. При этом данные из уровня к родительского патча оказываются в более грубых уровнях к - 1 дочерних.
Таким образом, каждому узлу метадерева соответствует разностная информация, необходимая для восстановления высотных данных дочерних патчей по данным родительского. Она представляет собой две небольшие веществен-
Построение сжатого представления следующего уровня
Рис. 7. Общая схема построения одного уровня мно-гомасшатбного сжатого представления сетки высот
ные матрицы размером Ыч х Ыч, содержащие
минимальные и максимальные разностные значения блоков квантизации, а так же матрицу, хранящую квантованные разностные значения. Эта информация является естественным дополнением к последовательному представлению уровней детализации, описанному в [22].
Многомасштабная пирамида патча, задающего самое грубое приближение, хранится в исходном несжатом виде.
Детали реализации
Предложенный алгоритм был совмещен с методом управления уровнем детализации [22]. Алгоритм был реализован в среде Microsoft Visual Studio.NET на базе MS DirectX 10 с использованием вершинных шейдеров четвертой версии.
Традиционным для DirectX9 способом хранения геометрии являлись вершинные буферы, информация из которых последовательно считывалась и обрабатывалась графической картой. DirectX10 существенно расширяет возможности шейдеров (программ, выполняемых непосредственно графическим процессором). В частности, одними из наиболее важных нововведений являются возможность свободного доступа к данным, хранящимся в текстуре из шейдера любого вида (вершинного, геометрического или пиксельного), а также добавление целочисленных операций.
В нашей реализации высотные данные рельефного блока хранятся в виде текстуры, имеющей вещественный формат (float). Все уровни квадрадерева упаковываются в одну текстуру. Доступ к данным осуществляется с помощью встроенных функций SampleLevel или Load, позволяющих прочитать конкретный элемент текстуры с фильтрацией или без нее. Хранение данных в виде текстуры позволяет выполнять
// Вещественная текстура, содержащая более грубое // приближение
Texture2D<float> g_tex2DCoarseElevData;
// 8-битная текстура, содержащая квантованные значения // разности
Texture2D<float> g_tex2DDiffMap;
// Двухканальная вещественная текстура, содержащая // максимальные и минимальные значения отклонений
Texture2D<float2> g_tex2DMinMaxDiff; float DecompressElevDataPS(
in float2 CoarseDataUV : TEXCOORDO,
in float2 MinMaxDiffUV : TEXCOORD1)
{
// Сэмплер samLinearClamp определяет билинейную // фильтрацию. Поэтому fPredictedHeight будет содержать // в точности предсказанное значение float fPredictedHeight =
g tex2DCoarseElevData.SampleLevel(
samLinearClamp, CoarseDataUV, 0);
// При чтении одноканальной 8-битной текстуры
// аппаратура автоматически выполняет перевод из
// диапазан 0..255 в вещественный интервал [0,1]
float fQuantizedDiff = g_tex2DDiffMap.SampleLevel( samPointClamp, CoarseDataUV, 0); float2 fMinMaxDiff = g_tex2DMinMaxDiff.SampleLevel( samPointClamp, MinMaxDiffUV, 0); float fDiff = fMinMaxDiff.x +
fQuantizedDiff * (fMinMaxDiff.у-fMinMaxDiff.x);
float fFineHeight = fPredictedHeight + fDiff; return fFineHeight;
};
Листинг 1: Исходный код пиксельного шейдера, выполняющего декомпрессию данных
декомпрессию данных непосредственно на графическом процессоре путем рендеринга в текстуру. Пиксельный шейдер, который выполняет данную задачу, представлен в Листинге 1.
Вещественная текстура g_tex2DCoarseElevData содержит сетку высот более грубого приближения. Сэмплер БашЫпеагаатр говорит функции Батр1е1^е1, что необходимо выполнять чтение текстуры с билинейной фильтрацией. При этом результатом чтения будет предсказанное значение
высоты Иу . 8-битная текстура g_tex2DDiffMap
содержит квантованные значения разности. При чтении функция sampleLevel автоматически
А
приводит значение к диапазону [0, 1] (di).
Двухканальная вещественная текстура g_tex2DMinMaxDiff в компоненте х содержит минимальное значение данного квантизационного
блока (dm:), а в компоненте у - максимальное
значение (d“).
Затем шейдер вычисляет разностное значение как
mm . î л max
m,n + di, j
(rjm!ax -Hmm\
\ m,n m,n ) •
Наконец, производится восстановление точной высоты по формуле:
~ + 4,у.
При вызове команды Draw() пиксельный шейдер будет вызван для всех элементов текстуры. При этом заполнение текстуры будет выполняться, используя эффективную параллельную архитектуру графического процессора.
Результаты экспериментов
Для тестирования алгоритма сжатия данных мы использовали две матрицы высот, обе размером 16384x16384 вершин. Первая матрица -территория в районе горы Puget Sound. Размер исходной сетки высот - 1 Gb. Сжатое представление строилось для патча размером 256x256 вершин, размер блока квантизации - 10x10 вершин. Объем сжатого многомасштабного представления составил 375 MB.
Погрешность для каждого уровня многомасштабной пирамиды приведена в табл. 1. Первая часть таблицы содержит абсолютные значения максимальной, средней и среднеквадратической ошибки для каждого уровня. Во второй части таблицы приведены те же значения, нормированные на среднюю высоту ландшафта, которая составляет 708 метров. Первые 9 уровней хранятся в несжатом виде, и, поэтому ошибка для них нулевая.
Второй набор данных - рельеф Grand Canyon является чрезвычайно гористым и содержит практически отвесные участки. Для второго набора данных сжатое представление построено для патча размером 128x128 вершин, размер блока квантизации - 13x13 вершин. Размер сжатого многомасштабного представления -369 MB. Погрешность уровней приведена в табл. 2. Нормировка выполнялась на среднюю высоту ландшафта - 1830 метров.
Как вдино из таблиц, среднеквадратическая ошибка на максимальном уровне приближения составляла для первого набора данных 0.02 метра, для второго - 0.05 метра. При средней высоте ландшафта 708 и 1830 метров такую погрешность невозможно заметить. Подобная точность обеспечивает визуальное качество, неотличимое от исходной сетки высот.
Тестирование производительности системы выполнялось на компьютере, оснащенном двух-ядерным процессором Intel Pentium D 3.0 GHz,
2 Gb оперативной памяти и графическим ускорителем NVidia GeForce 8800 GTS. На компьютере была установлена ОС Microsoft® Windows Vista. Во всех экспериментах камера перемещалась по заданной фиксированной траектории, содержащей резкие изменения направления движения и повороты. Сетка высот рельефа имела размер 8192 x 8192 вершин.
Производительность предлагаемого метода сравнивалась с нашей реализацией алгоритма Geometry Clipmaps [18, 19]. В отличие от [19], мы использовали несжатое представление высотных данных (что только ускоряет метод [18]). В нашей реализации метода [18] карта нормалей, как и в [19], имела в два раза более высокое разрешение по сравнению с полем высот. Карта отсечения имела размер 255x255 вершин, вся пирамида содержала 7 уровней. В нашем методе применялся алгоритм асинхронной подготовки рельефных блоков, а также использовался кэш ресурсов в видеопамяти. В обоих алгоритмах применялась модель рассеяния солнечного света при прохождении сквозь атмосферу [24, 25]. Для визуализации поверхности в обоих методах использовалось простое затенение рельефа по высоте, чтобы не перегружать пиксельный шейдер.
Вывод осуществлялся в окно размером 1024x768 пикселей. При таком разрешении метод Geometry Clipmaps согласно [18] обеспечивает точность аппроксимации порядка 3-4 пикселей. Порог экранной погрешности для нашего метода был выбран равным 1.5 и 3 пикселам. Графики производительности системы представлены на рис. 8. Параметры, приведенные на всех графиках, усреднены на 50 кадров.
Таблица 1
Погрешность сжатия данных для набора Puget Sound
Уровень Абсолютная ошибка Нормированная ошибка, %
макс. средняя среднекв. макс. средняя среднекв.
14 0.5249 0.0139 0.0215 0.07 0.00 0.00
13 0.7452 0.0344 0.0493 0.11 0.00 0.01
12 0.9329 0.079 0.1082 0.13 0.01 0.02
11 1.3973 0.1643 0.2204 0.20 0.02 0.03
10 1.9785 0.3126 0.4157 0.28 0.04 0.06
9 0 0 0 0.00 0.00 0.00
8 0 0 0 0.00 0.00 0.00
7 0 0 0 0.00 0.00 0.00
6 0 0 0 0.00 0.00 0.00
5 0 0 0 0.00 0.00 0.00
4 0 0 0 0.00 0.00 0.00
3 0 0 0 0.00 0.00 0.00
2 0 0 0 0.00 0.00 0.00
1 0 0 0 0.00 0.00 0.00
0 0 0 0 0.00 0.00 0.00
Таблица 2
Погрешность сжатия данных для набора Grand Canyon
Уровень Абсолютная ошибка Нормированная ошибка, %
макс. средняя среднекв. макс. средняя среднекв.
14 1.2921 0.0269 0.0536 0.07 0.00 0.00
13 1.2744 0.0566 0.0981 0.07 0.00 0.01
12 1.424 0.1112 0.1777 0.08 0.01 0.01
11 2.1772 0.2062 0.3152 0.12 0.01 0.02
10 3.1222 0.353 0.5215 0.17 0.02 0.03
9 3.8677 0.5407 0.7615 0.21 0.03 0.04
8 0 0 0 0.00 0.00 0.00
7 0 0 0 0.00 0.00 0.00
6 0 0 0 0.00 0.00 0.00
5 0 0 0 0.00 0.00 0.00
4 0 0 0 0.00 0.00 0.00
3 0 0 0 0.00 0.00 0.00
2 0 0 0 0.00 0.00 0.00
1 0 0 0 0.00 0.00 0.00
0 0 0 0 0.00 0.00 0.00
На первом графике изображены частоты визуализации, которые обеспечивали методы, на втором - производительность вывода алгоритмов, измеряемая в миллионах треугольниках, обрабатываемых за 1 секунду. Первый график показывает, что наш алгоритм при пороге в 3 пиксела (качество изображения, сравнимое с Geometry Clipmaps), поддерживал существенно более высокую скорость визуализации. При пороге в 1.5 пиксела качество изображения у нашего метода существенно лучше, чем у алгоритма Geometry Clipmaps, а число кадров, рассчитываемых в секунду (FPS), при этом, как видно из графиков, все равно выше. Из рис. 8 видно, что FPS и производительность метода Geometry Clipmaps, как и заявлено в [18], практически все время держались на одном уровне,
что объясняется постоянной сложностью модели. В нашем алгоритме сложность модели сильно меняется в зависимости от параметров наблюдения, что вызывает колебания графиков. Тем не менее, даже минимальное значение FPS остается выше, чем у метода Geometry Clipmaps.
Второй график демонстрирует эффективность использования графического процессора. Как можно заметить из двух графиков, максимальная производительность акселератора достигается при максимальной сложности сцены. Рисунок 8 демонстрирует, что в нашем методе, по сравнению с Geometry Clipmaps, мощность графического процессора используется более эффективно, особенно при небольшом пороге экранной погрешности и высокой сложности модели.
Рис. 8. Сравнение производительности предлагаемого метода с алгоритмом Geometry Clipmaps [19]
Заключение и развитие метода
Мы представили новый алгоритм компрессии данных, задающих рельеф местности. Предложенный подход естественным образом развивает линию последовательного представления модели [22]. Проведенные эксперименты подтверждают, что заложенные в основу метода принципы, обеспечивают наиболее высокую эффективность использования графического ускорителя.
По сравнению с алгоритмами сжатия из [17, 18], наш алгоритм проще и может быть полностью реализован на графическом процессоре, что позволяет многократно повысить произво-
дительность вычислений и существенно снизить нагрузку на центральный процессор. Хотя он обеспечивает меньшую степень сжатия, эффективность декомпрессии данных намного выше, что является важным требованием при построении интерактивных систем визуализации рельефа. Следует отметить, что использование битового кодирования квантованных разностных блоков позволит существенно увеличить степень сжатия. Но в этом случае извлечение разностной информации из битового потока необходимо будет реализовывать на центральном процессоре, тогда как представленный алгоритм полностью реализуется на графическом.
Список литературы
1. Voigtmann A., Becker L., Hinrichs K. Hierarchical surface representations using constrained delaunay triangulations / Еds. T.C. Waugh and R.G. Healey // Proc. 6th Int. Symposium on Spatial Data Handling, V. 2 of Advances in GIS Research, Р. 848-867. Taylor & Francis, London, 1994.
2. Cignoni P., Puppo E., Scopigno R. Representation and visualization of terrain surfaces at variable resolution // The Visual Computer. 1997. V. 13(5). Р. 199-217.
3. De Floriani L, Magillo P., Puppo E. Building and traversing a surface at variable resolution // IEEE Visualization. 1997. P. 103-110.
4. Hoppe H. Smooth view-dependent level-ofdetail control and its application to terrain rendering // Proc. Visualization 98. P. 35-42. IEEE, Computer Society Press, Los Alamitos, California, 1998.
5. Pajarola R. Overview of quadtree-based terrain triangulation and visualization. Technical Report UCI-ICS-02-01, I&C Science, University of California Irvine, 2002.
6. Lindstrom P., Koller D., Ribarsky W., et al. Realtime, continuous level of detail rendering of height fields // Proc. SIGGRAPH 96. P. 109-118. ACM SIGGRAPH, 1996.
7. Duchaineau M., Wolinsky M., Sigeti D.E., et al. Roaming terrain: Real-time optimally adapting meshes // Proc. Visualization 97. P. 81-88. IEEE, Computer Society Press, Los Alamitos, California, 1997.
8. Pajarola R. Large scale terrain visualization using the restricted quadtree triangulation // Proc. Visualization 98. P. 19-26 and 515. IEEE Computer Society Press,
1998.
9. Gerstner T. Multiresolution visualization and compression of global topographic data // Technical Report 29, Institut fur Angewandte Mathematik, Universitat Bonn, 1999. to appear in Geoinformatica.
10. Pajarola R., Antonijuan M., Lario R. QuadTIN: Quadtree based Triangulated Irregular Networks // Proc. IEEE Visualization 2002. P. 395-402. IEEE Computer Society Press, 2002.
11. Pomeranz A.A. ROAM Using Surface Triangle Clusters (RUSTiC). Master's thesis, University of California at Davis, June 2000.
12. Levenberg J. Fast View-Dependent Level-of-Detail Rendering Using Cached Geometry // Proc. IEEE Visualization'02 (Oct 2002), IEEE. P. 259-266.
13. Lario R., Pajarola R., Tirado F. HyperBlock-QuadTIN: Hyper-Block Quadtree based Triangulated
Irregular Networks // IASTED International Conference on Visualization, Imaging and Image Processing (VIIP 2003). P. 733-738.
14. Schneider J., Westermann R. GPU-Friendly High-Quality Terrain Rendering // J. of WSCG ISSN 1213-6972. 2006. V. 14. Plzen, Czech Republic.
15. Cignoni P., Ganovelli F., Gobbetti E., et al. BDAM - Batched Dynamic Adaptive Meshes for High Performance Terrain Visualization. Computer Graphics Forum (Sept.), 2003. V. 22. N. 3. P. 505-514.
16. Cignoni P., Ganovelli F., Gobbetti E., et al. Planet-Sized Batched Dynamic Adaptive Meshes (P-BDAM) // IEEE Visualization, 2003. P. 147-154.
17. Gobbetti E., Marton F., Cignoni P. et al. C-BDAM - Compressed Batched Dynamic Adaptive Meshes for Terrain Rendering. Computer Graphics Forum, 2006. V. 25. N. 3.
18. Losasso F., Hoppe H. Geometry Clipmaps: Terrain Rendering Using Nested Regular Grids. ACM Transactions on Graphics // Proc. of SIGGRAPH, 2004. V. 23(3). P. 769-776.
19. Asirvatham A., Hoppe H. Terrain Rendering Using GPU-Based Geometry Clipmaps. GPU Gems 2. Ad-dison-Wesley, 2005, ch. Terrain Rendering Using GPU-Based Geometry Clipmaps. P. 27-46. http://research. microsoft.com/~hoppe/.
20. Malvar H. Fast Progressive Image Coding without Wavelets // Data Compression Conference (DCC’00), 2000. P. 243-252.
21. Yusov E., Turlapov V. Dynamic terrain simplification based on Haar transform and vertices quadtree // Proc. of Conf. on Comp. Graph. and Applications -GraphiCon'2006, Novosibirsk, Russia, June 1-5, 2006.
22. Yusov E., Turlapov V. GPU-optimized efficient quad-tree based progressive multiresolution model for interactive large scale terrain rendering // Conference Proc. of the 17th Int. Conference on Computer Graphics and Vision «GraphiCon’2007». P. 53-60, Moscow, June 23-27, 2007.
23. Kovacevic J., Sweldens W. Wavelet families of increasing order in arbitrary dimensions // IEEE Transactions on Image Processing. 2000. N. 9. P. 3480-496.
24. Preetham A.J, Shirley P., and Smits B. A Practical Analytic Model for Day-light // Siggraph proceedings
1999. Работа доступна по ссылке: http://www.cs.utah. edu/vissim/papers/sunsky).
25. Hoffman N., Preetham A.J. Rendering Outdoor
Light Scattering in Real Time. Работа доступна по ссылке: http://www.ati.com/developer/dx9/ATI-Light-
Scattering.pdf, 2002.
EFFECTIVE HARDWARE ACCELERATION ALGORITHM FOR TERRAIN DATA COMPRESSION
E.A. Yusov
A new terrain data compression method is proposed. The method enables a threefold data size reduction with minimal loss of accuracy. The algorithm can be effectively implemented on modern graphics platforms and can be used in real-time terrain visualization systems. The algorithm implementation details using DirectX10 API have been considered. Experimental results proving the effectiveness of the proposed algorithm are presented.