Научная статья на тему 'Photorealistic terrain rendering algorithm based on texture combining managed by local surface features'

Photorealistic terrain rendering algorithm based on texture combining managed by local surface features Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
200
71
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ / ФОТОРЕАЛИСТИЧНОЕ ОТОБРАЖЕНИЕ / РЕЛЬЕФ / ПОВЕРХНОСТЬ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Yusov E. А.

A new photorealistic terrain visualization approach with computed texture is proposed. The algorithm combines different surface materials by selecting the most appropriate ones for every specific region with regard to its local characteristics. Every material is defined by a unique texture, which provides high image quality even when observing surface at low heights. By adding procedural details and using the noise map, more realistic pictures can be obtained. Algorithm implementation based on Microsoft DirectX 10 and Model 4.0 shader is described. Experimental results are presented.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Photorealistic terrain rendering algorithm based on texture combining managed by local surface features»

Математическое моделирование. Оптимальное управление Вестник Нижегородского университета им. Н.И. Лобачевского, 2008, № 2, с. 158-165

УДК 004.92

АЛГОРИТМ ФОТОРЕАЛИСТИЧНОГО ОТОБРАЖЕНИЯ РЕЛЬЕФА ПУТЕМ КОМБИНИРОВАНИЯ ТЕКСТУР, УПРАВЛЯЕМОГО ЛОКАЛЬНЫМИ ОСОБЕННОСТЯМИ ПОВЕРХНОСТИ

© 2008 г. Е.А. Юсов

Нижегородский госуниверситет им. Н.И. Лобачевского

yusov_egor@mail. ru

Поступила в редакцию 11.03.2008

Предлагается алгоритм фотореалистичной визуализации рельефа с вычисляемой текстурой. Алгоритм комбинирует различные материалы поверхности, выбирая наиболее подходящие для каждого конкретного участка с учетом его локальных характеристик. Каждый материал задается уникальной текстурой, что обеспечивает высокое качество изображения даже при рассмотрении поверхности с малой высоты. Добавление процедурных деталей и использование шумов позволяет добиться большей реалистичности изображения. Представлена реализация алгоритма с помощью шейдеров 4 модели и Microsoft* DirectX10*. Приведены результаты экспериментов.

Ключевые слова, алгоритм, фотореалистичное отображение, рельеф, поверхность.

Введение

Высококачественная визуализация больших территорий является необходимым требованием при создании многих приложений компьютерной графики, таких как геоинформационные системы (ГИС), симуляторы наземного и летного транспорта, ландшафтные редакторы, компьютерные игры и т.п. Ключевую роль в процессе формирования фотореалистичного изображения ландшафта играет текстура, налагаемая на полигональную модель. С одной стороны, она должна иметь достаточно высокое разрешение для того, чтобы при приближении камеры на близкое расстояние к поверхности, становились видны мелкие детали. С другой стороны, с большой высоты не должна быть заметна повторяемость изображения, в том случае, если одна текстура (к примеру, песка или травы) многократно продолжается по всей поверхности.

Обзор работ

Для решения задачи фотореалистичного тек-стурирования рельефа в последние годы было предложено множество методов. В некоторых из них, например в [1, 2], всю поверхность покрывает одно уникальное изображение. В основе подхода, представленного в [1], лежит квадрадерево, каждому узлу которого соответствует текстура, содержащая прямоугольный участок исходной картинки и фильтрованная в

полную М1Р-пирамиду. Текстуры, лежащие выше в дереве, покрывают большую площадь, но содержат меньше деталей. На этапе выполнения в зависимости от параметров наблюдения для визуализации различных участков поверхности выбирается требуемый уровень детализации текстуры и соответствующий узел дерева. Недостающие участки подкачиваются с диска, ненужные - выгружаются из оперативной памяти. В [2] изображение разбивается на прямоугольные области одинакового размера, каждая из которых может быть загружена в видеопамять графической карты. Подходы, использующие уникальную картинку, обеспечивают высокое разнообразие изображения и позволяют избежать его повторяемости. Однако для сохранения приемлемого визуального качества при приближении к поверхности, текстура должна иметь очень высокое разрешение, и, как следствие, очень большой размер, который легко может превысить емкость оперативной памяти компьютера. Поэтому подобные подходы используют сложные алгоритмы динамической подгрузки требуемых участков изображения и связаны с большими затратами памяти.

Другие методы предлагают использовать сочетание нескольких небольших текстур, налагаемых на модель с многократным повторением. В [3] описан алгоритм, комбинирующий различные текстуры (например, камня, травы и песка) путем альфа-смешивания в зависимости от высоты поверхности. Более сложный метод представлен в [4], где предлагается использо-

вать линейную комбинацию цветов 4 текстур с весами, которые содержатся в компонентах г, g, Ь и а пятой, управляющей, текстуры. Такой способ эффективен, но не дает высокой реалистичности изображения, поскольку используется всего 4 материала. Некоторые другие подходы предлагают вычислять цвет на основе характеристик поверхности. Так, например в [5] текстура генерируется процедурно на графическом процессоре на основе высоты и наклона рельефа в данной точке. Однако этот подход не может обеспечить высокое качество изображения при приближении к поверхности на близкое расстояние ввиду ограниченности разрешения текстуры.

Описание алгоритма

Предлагаемый алгоритм текстурирования объединяет преимущества методов, описанных в работах [4, 5]. В его основе, как и в подходе [5], лежит дерево описаний слоев поверхности (рис. 1).

базовый

— базовая трава

Ьгемно-зеленая светло-зеленая

-базовый камень

Ь гранит мрамор

Рис. 1. Дерево описаний слоев поверхности

Основными характеристиками каждого слоя (материала) являются допустимые для него интервалы высот и наклонов, а так же неровность. Допустимый для данного материала диапазон высот задается числами: минимальной и максимальной высотами йтт и Итах, а также двумя величинами ЛИт1П и ЛИтах, определяющими «размытость» слоя по высоте вблизи минимального и максимального значений. Функция, численно характеризующая величину вклада слоя в зависимости от высоты, имеет следующий вид:

/н (И) = тах(тт(/т^Х /тах^Х ^ (1)

где

/пшДА) =

1

(

АИ„

-к +

1 -

к

Л

Дк„

./шах (к) - -

Дк„

к+

1+

Ак„

Вид функции /И (И) представлен на рис. 2. Значение /(И) = 0 говорит о том, что на данной высоте слой никакой вклад не вносит, /(И) =1 означает, что слой дает максимальный вклад.

(2)

(3)

Рис. 2. Функция численной величины вклада слоя в зависимости от высоты

Точно так же, диапазон наклонов характеризуется минимальным и максимальным значениями 5т1П и 5тах, а также «размытостью» Дутт и Л?тах. Функция, численно характеризующая величину вклада слоя в зависимости от наклона, имеет вид, аналогичный (1).

Величина вклада слоя в данной точке с учетом наклона и высоты называется покрытием [5] и обозначается cov. Собственное покрытие слоя вычисляется как произведение двух функций, оценивающих вклад слоя для данных значений наклона и высоты:

ооу( И, s) = /и (И) / (5). (4)

Наклон поверхности 5 вычисляется как 5 = 1/ Nг, где - компонента г вектора нормали к ней в данной точке.

Предлагаемый метод состоит из двух этапов. Первый этап - стадия предподготовки, на котором по полю высот процедурно строится карта наклонов, имеющая повышенное разрешение и содержащая дополнительные детали. Этот этап выполняется один раз, полученные данные кэшируются в видеопамяти. Второй этап выполняется при отображении в процессе формирования каждого кадра.

Рассмотрим более подробно оба этапа.

Этап I: процедурная генерация карты наклонов. Первым шагом этого этапа является увеличение разрешения карты высот, задающей ландшафт. Оптимальное сочетание качества и затрат времени и памяти дает увеличение разрешения в 4 раза. Поэтому для определенности будем далее считать, что увеличение разрешения осуществляется именно в 4 раза (хотя здесь может стоять и любое другое натуральное число).

1

к

Исходную матрицу высот обозначим через

{Ну” . По этой матрице путем бикубической

сплайн-интерполяции (см. [5] для дополнительной информации) строится матрица, имеющая более высокое разрешение:

( и 1 пхп . (-~0л4пх4п {Ну} ^ {Ну } .

г-\ (-~0л4пх4п

Затем по матрице высот {Ну } вычисляется поле нормалей, также имеющее повышенное разрешение по сравнению с исходной картой высот:

Г~0^4пх4п . -\4nx4n

{Ни } ^ } .

тг (тт0л4пх4п

После этого поле высот {Ну} подвергается изменениям в соответствии со вкладом каждого слоя по следующей формуле:

Ик = Ик 1 + Я • , к = 1К,

V у V

где

= т1п[тах( соу(И|, зу) • соур (г,у) х х по18е(/, у), 0), 1].

Здесь Ик - высота рельефа в данной точке, полученная на предыдущем шаге алгоритма и за-

^ (нк л 4пх4п

даваемая матрицей {Ну } ; - наклон, по-

^ ^ с~ -\4nx4n

лученный из карты нормалей {^-} ;

соу(Ик, Зу) - покрытие слоя в данной точке, вычисляемое согласно (4); соур(г, у) - покрытие родительского слоя в данной точке; по18е(/, у) - шум в данной точке, вносящий некоторую случайность; Я - коэффициент, характеризующий неровность или шероховатость слоя. Камень, к примеру, имеет большую неровность, чем трава или песок. Слои налагаются в порядке, определяемом рекурсивным обходом дерева.

В результате наложения всех слоев будет получено окончательное модифицированное

с К л 4пх4п 1 /поле высот {Ну } данного рельефного бло-

ка, содержащее дополнительные детали.

Далее, по модифицированному полю высот

с К л 4пх4п 1

{Ну } вычисляется модифицированное по-

^ сдг^4пх4п

ле нормалей } , которое используется

для вычисления модифицированной карты нас С1*} 4пх4п

клонов {*Эу} .

Общая схема первого этапа алгоритма представлена на рис. 3.

Исходная карта высот

{Н„Г

Бикубическая сплайн-интерполяция

Г енерация нормалей

Я

V І

Наложение

первого слоя,

генерация

< ~1 >4пх4п

Наложение К слоя, генерация

Рис. 3. Общая схема подготовительного этапа алгоритма

В отличие от оригинального алгоритма [5], в процессе наложения слоев в качестве наклона в конкретной точке поверхности мы используем всегда одно и то же значение, вычисляемое по

карте нормалей {^- }4пх4п. В [5] поле нормалей

обновляется после наложения каждого слоя. Это приводит к большой зашумленности финального изображения.

Как уже отмечалось, текстура наклонов заполняется один раз и кэшируется в быстрой видеопамяти графического ускорителя.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Этап II: отображение текстурированной поверхности. В исходном алгоритме [5] каждый материал характеризовался единственным цветом; цвета комбинировались для формиро-вани текстуры раскрасски поверхности, налагаемой на рельеф. В нашем алгоритме, как и в [4], каждый материал характеризуется уникальной текстурой, которая налагается на рельеф с многократным повторением. При таком подходе на один отсчет карты высот приходится несколько сотен текселов текстуры. Такого разрешения вполне достаточно для сохранения деталей поверхности даже при рассмотрении ее с очень близкого расстояния. В нашем методе модифицированная карта наклонов обеспечивает дополнительные детали при рассмотрении рельефа с большой высоты, текстуры материалов имеют необходимое разрешение для рассмотрения особенностей рельефа с малой высоты.

В отличие от [4], веса смешивания не считываются из управляющей текстуры, а вычисляются в пиксельной программе на основе значений высоты и наклона поверхности, поступаю-

щих из соответствующих текстур. Возросшая вычислительная мощь современных графических ускорителей позволяет выполнять пиксельные программы подобной сложности при сохранении интерактивной частоты кадров. Такой подход позволяет использовать значительно большее число различных материалов, и, как следствие, добиваться более разнообразного изображения поверхности ландшафта.

На этапе выполнения в пиксельном шейдере

nx n

используется исходная карта высот (Н^} и модифицированная карта наклонов (S* }4nx4n .

Пиксельный шейдер комбинирует цвета слоев, используя следующую формулу:

Ck = СГ1(1 - w)+ T>n k=^, (5)

С0 = const - базовый цвет ландшафта, где wij = COv(hij, Sj ). Здесь Ck - цвет, полученный на k итерации алгоритма, а Tijk - цвет, получаемый фильтрацией текстуры, соответствующей k материалу. В данной формуле слои налагаются в том же порядке, который задается рекурсивным обходом дерева. Параметры слоев подобраны таким образом, чтобы выполнялось свойство вложенности допустимых интервалов высоты и наклонов потомка в соответствующие интервалы родителя. К примеру, если базовая трава встречается в диапазоне относительных высот от 0.З до 0.7, то все ее дочерние узлы должны быть включены в этот диапазон (например, дочерняя трава может иметь допустимую высоту от 0.4 до 0.6). То же самое касается и интервала наклонов. Такое свойство позволяет не учитывать в пиксельном шейдере покрытие родительского слоя.

Детали реализации

Описанный алгоритм был реализован в двух вариантах - с использованием DirectX9 и пиксельных шейдеров версии 2.0, и на базе DirectX10 с помощью шейдеров версии 4.0. В первой реализации комбинировались 8 материалов, т.к. число инструкций в пиксельном шейдере версии 2.0 ограничено 64. Во второй реализации комбинировались 8 или 12 текстур.

Схема пикселного шейдера, выполняющего закраску поверхности, представлена на рис. 4.

Все операции, связанные с построением модифицированной карты наклонов на первом этапе алгоритма, выполняются полностью на графическом процессоре путем рендеринга в текстуры.

Карта высот Карта наклонов Текстура шума

> f Высота \/

Вершинный шейдер Пиксельный шейдер

Текстуры материалов

Рис. 4. Схема пиксельного шейдера, текстурирующего поверхность ландшафта

Кроме карты наклонов также вычисляется диффузная освещенность блока на основе карты нормалей [Иу }4пх4п . Полученные значения освещенности и наклона пакуются в двухканальную текстуру, содержащую по 8 битов на канал. Компонента г текстуры содержит диффузную освещенность поверхности. Компонента g содержит наклон поверхности в данной точке

/ ( г-г* 1 4пх4п \ А

({*3у } ). Альтернативным подходом являет-

ся сохранение координат нормали в компонентах г, g, Ь и величины наклона в компоненте а. Однако, в таком случае затраты памяти становятся в два раза больше. Плюсом такого варианта является то, что при изменении параметров освещения нет необходимости обновлять текстуру.

Пиксельный шейдер получает значение высоты поверхности из вершинного шейдера. Значение наклона он считывает из соответствующей текстуры. Чтобы избежать повторяемости изображения пиксельный шейдер использует также текстуру шума, вносяющую некоторую случайность в формируемую картинку.

Исходный код шейдера приведен в листинге 1.

Особенностью реализации шейдера является использование векторных операций для существенного уменьшения числа исполняемых команд. Покрытия вычисляются одновременно для 4 слоев (но получение цвета проводится для каждого слоя отдельно). Поэтому наложение 12 слоев выполняется за 3 итерации цикла.

д_ЬауегБезс[] - массив структур, которые содержат описания слоев, оптимизированные для эффективного выполнения шейдера. Вектор Не1д^Сопз^ЬРас^г содержит 1

значения

Ah

для очередных 4 слоев, вектор

struct VS_OUTPUT {

float4 Pos_PS float2 NormalsTextureUV float AverageZ float2 ColorTexturesUV

};

SV_POSITION;

TEXCOORDO; TEXCOORD1; TEXCOORD2;

float4 RenderTerrain_PS(VS_OUTPUT In) : SV_TARGET

{

float2 Diffuselntensity NormalZ =

g tex2DLightingMap.Sample( samLinearClamp,

In.NormalsTextureUV);

float4 OutColor = float4(0.5, 0.5, 0.5, 0.5);

OutColor.rgb = float4(0, 0, 0, 1.f);

float Slope = 1 / DiffuseIntensity NormalZ.y;

Slope * = 1 + 0.1*( g_tex2DNoiseMap.Sample( samLinearWrap,

In.ColorTexturesUV/8) - 0.5f );

// За одну итерацию цикла обрабатывается сразу 4 слоя // путем использования векторных инструкций. [unroll]for(int iPackNum = 0; iPackNum < 3; iPackNum++) {

// Вычисляем покрытия сразу 4-х слоев

// Вычисляем функцию (2) float4 fHeightLeftFunc =

g LayerDesc[iPackNum] .HeightConstrLFactor*In.AverageZ + g LayerDesc[iPackNum].HeightConstrLShift;

// Вычисляем функцию (3) float4 fHeightRightFunc =

g LayerDesc[iPackNum] .HeightConstrRFactor*In.AverageZ + g LayerDesc[iPackNum].HeightConstrRShift;

// Вычисляем функцию (1) float4 fHeightHatFunc =

saturate( min(fHeightLeftFunc, fHeightRightFunc) );

float4 fSlopeLeftFunc =

g LayerDesc[ g LayerDesc[

PackNum].SlopeConstrLFactor*Slope + PackNum].SlopeConstrLShift;

float4 fSlopeRightFunc =

g LayerDesc[iPackNum].SlopeConstrRFactor*Slope + g LayerDesc[iPackNum].SlopeConstrRShift; float4 fSlopeHatFunc =

saturate(min(fSlopeLeftFunc, fSlopeRightFunc));

float4 Coverage =

saturate(fHeightHatFunc * fSlopeHatFunc);

// Получаем цвета слоев из текстур float4 MaterialColors[4];

[unroll]for(int i = 0; i < 4; i++)

MaterialColors[i] =

g_tex2DSurfaceLayers[iPackNum*4 + i].Sample( samLinearWrap, In.ColorTexturesUV );

// Накладываем слои друг на друга в соответствии // с величиной их покрытия OutColor.rgb =

lerp(OutColor.rgb, MaterialColors[0], Coverage.x); OutColor.rgb =

lerp(OutColor.rgb, MaterialColors[1], Coverage.y); OutColor.rgb =

lerp(OutColor.rgb, MaterialColors[2], Coverage.z); OutColor.rgb =

lerp(OutColor.rgb, MaterialColors[3], Coverage.w);

}

// Вычисляем освещенность

float SunLightDiffuseIntensity =

DiffuseIntensity NormalZ.x;

OutColor.rgb * = sun color * SunLightDiffuseIntensity + ambient light;

OutColor.a = 1; return OutColor;

}

Листинг 1: Исходный код пиксельного шейдера, выполняющего визуализацию рельефа

а)

Рис. 5. Сравнение визуальных результатов отображения методом

HeightConstrLShift хранит значения h ■

1 ти^_ дЛя этих же 4 слоев. Эти переменные

^hmin

позволяют эффективно вычислять сразу 4 значения функции (2). Аналогично, векторные поля HeightConstrRFactor и

HeightConstrRShift содержат значения, необходимые для вычисления функции (3). g_tex2DSurfaceLayers - это массив текстур, содержащих изображения материалов. g_tex2DLightingMap - текстура, содержащая в компоненте r диффузную освещенность, а в компоненте g - координату z вектора нормали. Наложение слоев в шейдер выполняется согласно (5).

Результаты экспериментов

Для исследования эффективности предложенного подхода была создана тестовая система визуализации рельефа. Управление уровнем детализации осуществлялось при помощи алгоритма, представленного в [6]. Тестирование системы осуществлялось на платформе, оснащенной двухъядерным процессором

Intel Pentium D 3.0 GHz, 2 Gb оперативной памяти и графическим ускорителем NVidia GeForce 8800 GTS.

На рис. 5 и 6 для сравнения приведены результаты вывода сцены методом [5] и с использованием нашего подхода.

б)

рельефа с малой высоты а) методом [5] и б) - нашим

Как показываются рис. 5 и 6, наш метод обеспечивает более высокое качество изображения при рассмотрении рельефа как с близкого расстояния, так и с большой высоты.

Тестирование системы проводилось путем облета сцены по некоторой фиксированной траектории, содержащей множество резких поворотов. Сетка рельефа имела размер 8192x8192 вершин. Размер блока алгоритма [6] был выбран равным 256x256 пикселей, порог экранной погрешности - 3 пиксела. При выводе сцены также применялся алгоритм рассеяния солнечного света при прохождении сквозь атмосферу [7, 8]. Отображение сцены выполнялось в области вывода размером 800x600, 1024x768 и 1280x1024 пикселей. Показатели системы при текстурировании поверхности с использованием 8 слоев приведены на рис. 7, при наложении 12 слоев - на рис. 8.

Как показывают графики на рис. 7 при отображении сцены с использованием 8 слоев в область вывода размером 1280x1024, скорость визуализации практически не опускалась ниже 100 кадров в секунду (FPS). Из рис. 8 видно, что при наложении 12 слоев показатель FPS не падал ниже 65 и держался на среднем уровне 120, это более, чем достаточно для систем реального времени.

Приведенные графики показывают, что предлагаемый алгоритм текстурирования поверхности может успешно использоваться в интерактивных системах визуализации рельефа.

Рис. 6. Сравнение визуальных результатов отображения рельефа с большой высоты а) методом [5] и б) - нашим методом

Рис. 7. Скорость визуализации текстурированной поверхности, 8 слоев

Рис. 8. Скорость визуализации текстурированной поверхности, 12 слоев

Заключение и развитие метода

Представлен новый алгоритм текстурирова-ния поверхности рельефа. Алгоритм позволяет добиться высокого качества поверхности путем комбинирования текстур, управляемого локальными особенностями рельефа, что обеспечивает существенную экономию памяти и позволяет избежать использвоания сложных алгоритмов динамической подкачки данных. В основе предлагаемого подхода лежит дерево описаний слоев поверхности. На этапе визуализации в пиксельной программе, выполняемой на графическом ускорителе, осуществляется комбинация материалов, наиболее подходящая к характеристикам поверхности в данной точке.

Проведенные эксперименты подтверждают эффективность предлагаемого подхода и доказывают возможность его применения в системах визуализации ландшафта реального времени.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Простое повторение текстур материалов по всей поверхности в сочетании с использованием карты шума дает в нашем алгоритме вполне приемлемые результаты, однако, иногда возникает видимое повторение изображения. Чтобы избежать этого явления, можно использовать подход, представленный, к примеру в [9]. Данное улучшение внесет минимальное усложнение пиксельного шейдера, однако разнообразие изображения может быть существенно улучшено.

Другим вариантом улучшения метода является дополнительное использование карт нормалей, обеспечивающих более высокое качество освещения поверхности.

Одним из возможных способов увеличения производительности является использование алгоритма совместо с методами отложенного затенения (deferred shading) для уменьшения нагрузки на графический ускоритель.

Список литературы

1. Hua W., Zhang H., Lu Y., Bao H., Peng Q. Huge Texture Mapping for Real-Time Visualization of Large-Scale Terrain // In VRST ’04: Proceedings of the ACM symposium on Virtual reality software and technology. N.Y.: ACM Press, 2004. Р. 154-157.

2. Brodersen A. Real-Time Visualization of Large Textured Terrains. Работа доступна по адресу http://www. daimi.au. dk/~rip/pubs/T errainV is.pdf, 2005

3. Bloom C. Terrain Texture Compositing by

Blending in the Frame-Buffer. Работа доступна по ссылке: http://www. cbloom. com/3 d/techdocs/splat-

ting.txt, 2000

4. Снук Г. Создание 3D-ландшафтов в реальном времени с использованием C++ и DirectX 9 / Пер. с англ. М.: КУДИЦ-ОБРАЗ, 2006. С. 194-215.

5. Dachsbacher C., Stamminger M. Cached procedural textures for terrain rendering. Shader X4 Advanced rendering techniques, Charles River Media, ch. Cached procedural textures for terrain rendering, 2006. Р. 457466.

6. Yusov E., Turlapov V. GPU-optimized efficient quad-tree based progressive multiresolution model for interactive large scale terrain rendering // Conference Proceedings of the 17th International Conference on Computer Graphics and Vision «GraphiCon’2007». Moscow, June 23-27, 2007. Р. 53-60.

7. Preetham A.J, Shirley P., Smits B. A Practical Analytic Model for Day-light. Siggraph proceedings 1999. Работа доступна по ссылке: http://www.cs.utah. edu/vissim/papers/sunsky).

8. Hoffman N., Preetham A.J. Rendering Outdoor

Light Scattering in Real Time. Работа доступна по ссылке: http://www.ati.com/developer/dx9/ATI-Light

Scattering.pdf, 2002.

9. Cohen M.F., Shade J., Hiller S., Deussen O. Wang Tiles for Image and Texture Generation. In ACM Transactions on Graphics. 2003. V. 22. № 3. Р. 287-294.

PHOTOREALISTIC TERRAIN RENDERING ALGORITHM BASED ON TEXTURE COMBINING MANAGED BY LOCAL SURFACE FEATURES

E.A. Yusov

A new photorealistic terrain visualization approach with computed texture is proposed. The algorithm combines different surface materials by selecting the most appropriate ones for every specific region with regard to its local characteristics. Every material is defined by a unique texture, which provides high image quality even when observing surface at low heights. By adding procedural details and using the noise map, more realistic pictures can be obtained. Algorithm implementation based on Microsoft DirectX 10 and Model 4.0 shader is described. Experimental results are presented.

i Надоели баннеры? Вы всегда можете отключить рекламу.