Композитные текстуры

 

Текстуры высокого разрешения занимают огромное место в памяти. Например, текстура размером 2048x2048 пикселов при глубине цветности 32 бит достигает объема 16 Мбайт. Понятно, что никакой видеопамяти, при сложности сцены хотя бы в 10 000 полигонов, не хватит. Придется «подкачивать» текстуры из оперативной памяти, что сильно нагружает шину видеоадаптера, и так занятую передачей данных по обсчету полигонов.

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

Часто используют смешение с помощью альфа-канала или мульти-текстурирование. В результате на большом расстоянии видна только базовая текстура, а по мере приближения объекта к картинной плоскости начинает проявляться детальная текстура. Пошаговый метод основан на механизме MIP mapping и мультитекстурировании. То есть с помощью механизма LOD определяется уровень MIP -каскада для выборки соответствующей детальной структуры. Затем детальная структура накладывается на базовую и результат отправляется в буфер кадра. Очевидно, что при такой методике уровень детализации меняется дискретно, скачками. Будет ли это заметно пользователю, зависит от искусства разработчиков.

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