Рельефное текстурирование

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 108.231.145.61 (обсуждение) в 02:01, 6 июля 2013 (Normal mapping). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
Сфера без рельефной текстуры; Рельефная текстура, наложенная на изображение ниже; Сфера геометрически идентичная первой, но с наложенной рельефной текстурой. Благодаря этому меняется реакция при затенении, в результате чего эффект бугристой поверхности делает сферу похожей на апельсин.

Рельефное текстурирование — метод в компьютерной графике для придания более реалистичного и насыщенного вида поверхности объектов.

Bump mapping

Техника заключается в отклонении нормалей каждого пикселя от нормали, рассчитанной для всего полигона. Простейший способ - задание отклонений в карте высот (поле высот). Полученные нормали используются в алгоритме освещения (см. для примера: затенение по Фонгу).

Кроме описанной выше техники, называемой Bump mapping, существует ряд альтернатив, также позволяющих придавать рельефность поверхностям. Bump mapping более корректно переводится как «эффект бугристой поверхности», в то время как техника с названием Relief mapping, используемым в англоязычной литературе, отличается от вышеизложенной.

Normal mapping

Результат работы технологии

Normal mapping - один из самый простых спобов реализации Bump mapping. Для хранения информации о рельефе используются текстуры, в которых кодируются данные об отклонении нормалей поверхности. Для создания таких текстур обычно используется высокополигональная модель, на основе которой генерируется текстура нормалей, и низкополигональная, на которую она накладывается.

Parallax mapping

Данная технология также использует карты нормалей, но, в отличие от normal mapping, она реализует не только освещение с учётом рельефа, но и сдвигает координаты диффузной текстуры. Этим достигается наиболее полный эффект рельефа, особенно при взгляде на поверхность под углом.

Parallax occlusion mapping

Parallax occlusion mapping является усовершенствованной и в то же время одной из наиболее вычислительно сложных разновидностей Parallax mapping. Фактически представляет собой форму локального рейтрейсинга (трассировки лучей) в пиксельном шейдере. Трассировка лучей используется для определения высот и учёта видимости текселей. Иными словами, данный метод позволяет создавать ещё большую глубину рельефа при небольших затратах полигонов и применении сложной геометрии. Недостаток метода — невысокая детализация силуэтов и граней.

Реализовать Parallax occlusion mapping возможно в рамках функционала API DirectX 9 Shader Model 3, однако для получения оптимальной производительности видеокарта должна обеспечивать надлежащий уровень скорости исполнения ветвлений в пиксельном шейдере. На данный момент Parallax occlusion mapping используется в некоторых компьютерных играх, например, Crysis и ArmA 2. Также эта технология используется в популярном бенчмарке 3DMark Vantage.

Displacement mapping

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

См. также