[ Новости ]   [ Голосование ]   [ Рейтинг ]   [ Hard ]   [ Автор ]   [ Конференция ]  

А теперь несколько слов от 3D Mark о Bump mapping (перевод мой).
Из хелпа к программе 3DMark 99 Max:

Тесты Bump Mapping

Введение

Emboss bump mapping может быть реализован практически на любом оборудовании. Наиболее общие реализации этого не требуют никаких специальных свойств или DirectX6.

Тесты Emboss были разделены на три категории, для каждой использовались разные наборы свойств 3D акселератора (описанных ниже). Трех проходный метод работает практически на любом 3D акселераторе, исключая некоторое старое оборудование у которого отсутствуют некоторые требуемые базовые режимы смешивания (blending) или драйвер некоректно сообщает о них. Двух и одно проходные методы требуют мультитекстурной совместимости (multitexturing capabililties).

Проблемы и ограничения Embosss Bump Mapping

Когда создаются и отображаются текстуры, используемые в bump mapping, наложение текстур создает добавочные проблемы. Так как emboss bump основан на смещении UV координат, текстуры не могут быть UV-отображены из (0.0, 0.0) к (1.0, 1.0), то должно иметься немного свободного места вдоль границ. Иначе текстуры будут обрезаны и начнут "кровоточить" при мозаичном наложении или растягивании (tiling or wrapping). Фиксирование UV координат не будет работать для мозаичных (tiling) текстур.



Для Bump Mapping (Emboss, 3 прохода) требуеются поддержка следующих функций Direct3D:

  • Additive Alpha Blending
  • Multiplicative Alpha Blending

Для Bump Mapping (Emboss, 2 прохода) требуеются поддержка следующих функций Direct3D:

  • Multitexturing (texture + additive)
  • Multiplicative Alpha
Bump Mapping (Emboss, 1 проход) требует от оборудования поддержки оператора ADDSIGNED2X. Этот метод имеет "проблему" с ADDSIGNED2X, которая может вызвать некоторое ограничение цветового диапазона. В 16 bit режимах этот метод дает худшие визуальные результаты чем другие emboss методы. С 32 bit текстурами проблемы не так заметны.

Требуется поддержка следующих функций Direct3D:

  • Multitexturing (texture + additive)
  • 2X Multiply
  • Gouraud Shading

Далее приводится подробное описание используемых текстур, разных стадий выполнения bump mapping и приводятся вызовы функций D3D для всех трех методов.

Bump Mapping использование в играх

Так как 3DMark is "Игровой тест", то мы исследовали использование bump mapping в деталях. В основном, использование emboss bump mapping c DX6 просто. Но проблемы начинаются, когда вы хотите заставить выглядеть это хорошо.

Первое ограничение bump mapping в том, что это работает правильно только с одним источником света. Если вы хотите, чтобы это выглядело хорошо в игре, то вам необходимо определить отдельный источник света для bump карты или использовать ближайший для bump mapping. Для статичных объектов это превосходно (хотя bump на статичных объектах возможно не идеален).

  1. Вы можете использовать несколько световых источников per-bump-map-vertex подобно gouraud shading с несколькими источниками света, но это уменьшает глубину bump эффекта. И в случае худшего сценария это может привести к перегрузки bump-lighting процессора.
  2. Если вы используете только один источник света, вам необходимо решить который из источников послужит для как bump источник. Это мог бы быть например источник имитирующий солнце, или игра могла бы выбирать самый ближайший\сильнейший источник света, но это создаст проблему, когда bump-mapped объект перемещается от одного источника света к другому.
  3. Или вы могли бы использовать несколько bump проходов для получения гладкого перехода, но bump material должен рендериться столько же раз, сколько источников света вызывающих bump, а это снизит производительность.

В добавок, только создание DX6 материала для Emboss Bump mapping не достаточно. Проблема отношения vertex нормали к световой нормали, и позиции vertex по отношению к позиции светового источника так же должна приниматься во внимание.

В заключение, emboss bump mapping основан на vertex, и соответствено bump mapped объект более чем мозаичен (tessellated) - используется больше полигонов, чем в любом другом случае, а это не дает оптимальной производительности для игрового использования.

Когда при создании и отображении текстур используется bump mapping, наложение текстур создает дополнительную проблему. Так как emboss bump основан на смещении UV координат, текстуры не могут быть отображены от 0,0 до 1,1 , поскольку должны иметь немного свободного места вдоль границ. В противном случае текстуры будут обрезанны и начнут "кровоточить". Фиксация UV координат не будет работать для мозаичных (tiling) текстур.




  [ Новости ]   [ Голосование ]   [ Рейтинг ]   [ Hard ]   [ Автор ]   [ Конференция ]  


List100 SNK Software Создано 04.07.1999 Александром Чернышенко