В алгоритмах визуализации рельефа местности (например, алгоритм вложенных регулярных сеток [1, 2]) используется технология изменения триангулированной сетки путем выборки из текстуры высот на вершинном процессоре видеокарты. Компания Nvidia такую технологию называет VTF [3]. Обычно в видеопамять нельзя поместить всю текстуру с высотами, ее сначала загружают с жесткого диска в кэш в оперативной памяти, и по мере продвижения наблюдателя по ландшафту происходят пошаговые обновления текстуры из этого кэша (рис. 1). При помощи тороидального копирования можно значительно уменьшить объем копируемой памяти из кэша, в результате повысится скорость пошаговых обновлений.
Текстурная адресация
Основной принцип тороидального копирования основан на использовании свойств текстурной адресации на графическом аппаратном обеспечении.
Рассмотрим подробнее принципы текстурной адресации. Предположим, имеется вершинный буфер размером n´n точек, каждой его вершине (v) с координатами {x, y} задаются свои текстурные координаты {u, v} по формулам
и (1)
. (2)
В свою очередь, элементы текстуры хранятся в виде матрицы и распределены по интервалам вдоль ширины и высоты, длина интервала по оси x () и оси y () определяется как , , где w, h – ширина и высота текстуры соответственно. Текстурный элемент с координатами , будет принадлежать вершине, если и (рис. 2).
Если текстурные координаты выходят за пределы [0,…,1), текстура будет накладываться в зависимости от режима намотки. Одним из таких режимов является повторение, то есть когда текстурные координаты выходят за данный диапазон, текстура начинает повторяться. Например, если текстурные координаты вершины равны {1.0, 0.75}, то вершине будет присвоен текстурный элемент, находящийся в интервалах {[0, 0.25), [0.75, 1.0)]} (рис. 3).
Тороидальное копирование
Рассмотрим, как с помощью текстурной адресации происходит тороидальное копирование. Предположим, что осуществляется перемещение по матрице высот в оперативной памяти (рис. 1). Будем считать, что положение 1 на рисунке 4 является начальным, тогда текстурные координаты u и v вложенной сетки рассчитываются по формулам (1) и (2), а текстура из оперативной памяти была скопирована полностью (рис. 4).
После смещения позиции наблюдателя необходимо обновить текстуру вложенной сетки, но, как видно из рисунка 5, необязательно обновлять все данные, достаточно скопировать только один столбец и строку. Предположим, что текстура имеет некоторую позицию для копирования «в себя», xc=0 и yc=0. Копируем столбец, который приходит с правой стороны, влево (в позицию xc=0, yc=0), а строку, пришедшую снизу, копируем наверх (в позицию xc=0, yc=0), при этом столбец циклически сдвигается вниз, а строка вверх, после чего меняется позиция копирования текстуры по формулам:
, (3)
. (4)
Изменим на графическом процессоре текстурные координаты триангулированной сетки по формулам: u=u+lx, v=v+ly. После чего текстура на сетке отобразится со сдвигом (рис. 6).
Соответственно, при сдвиге еще на один шаг в этом же направлении новые столбец и строка скопируются на позицию {1, 1} и циклически сдвинутся на 2 позиции, когда позиция xc=wt, по формуле (3) она обнулится, то же произойдет и с yc=wt, то есть это копирование циклически будет повторяться бесконечно.
В данной статье были рассмотрены основные принципы тороидального копирования в алгоритмах моделирования рельефа местности с помощью вложенных регулярных сеток. В приведенных примерах были матрицы малых размеров, но на практике используют матрицы с n=255 и выше. Отсюда можно рассчитать, что при копировании матрицы высот в текстуру полностью будет перемещено n2=65025 элементов, а с помощью тороидального копирования n×2=65025 элементов, что в 127,5 раза меньше.
Литература
1. Geometry Clipmaps: Terrain Rendering Using Nested Regular Grids Frank Losasso Hugues Hoppe. URL: http://research.microsoft.com/en-us/um/people/hoppe/geomclipmap. pdf (дата обращения: 19.07.2009).
2. GPU based clipmaps Implementation of Geometry Clipmaps for terrain with non-planar basis Anton Fruhstuck. URL: http://www.cg.tuwien.ac.at/research/publications/2008/fruehstueck-2008-gpu/fruehstueck-2008-gpu-paper.pdf (дата обращения: 19.07.2009).
3. Arul Asirvatham and Hugues Hoppe. Terrain rendering using GPU-based geometry clipmaps. In M. Pharr and R. Fernando, editors. URL: http://research.microsoft.com/en-us/um/people/hoppe/gpugcm.pdf (дата обращения: 19.07.2009).
4. Interactive Terrain Rendering: Towards Realism with Procedural Models and Graphics Hardware Dipl.–Inf. Carsten Dachsbacher Erlangen–2006. URL: http://www.vis.uni-stuttgart.de/~dachsbcn/publications.html (дата обращения: 19.07. 2009).
5. URL: http://www.nvidia.com/page/technologies.html (дата обращения: 19.07.2009).