Anisotropic filtering
Anisotropic filtering -- анизотропная фильтрация. Итак, чтобы получить действительно хорошие результаты, вы должны помнить, что все тексели в световом пятне определяют цвет пикселя. Вы так же должны помнить, что форма светового пятна изменяется вместе с изменением положения полигона относительно точки наблюдения. До этого момента мы использовали лишь 4 текселя вместо всех текселей, покрываемых световым пятном. Это означает, что все эти техники фильтрации дают искаженный результат, когда полигон расположен дальше от экрана или от точки наблюдения, т.к. вы не используете достаточный объем информации. На самом деле вы осуществляете сверх меры фильтрацию в одном направлении, и совершенно недостаточно фильтруете во всех остальных. Единственным преимуществом у всех описанных выше фильтраций является тот факт, что при приближении к точке наблюдения, изображение выглядит менее блочным (хотя это всего лишь побочный эффект). Таким образом, чтобы добиться наилучшего качества, мы должны использовать все тексели, покрываемые световым пятном и усреднять их значение. Однако, это серьезно ударяет по пропускной способности памяти -- ее попросту может не хватить, и выполнить такую выборку с усреднением нетривиальная задача. Вы можете использовать разнообразные фильтры для аппроксимации формы светового пятна в виде эллипса для нескольких возможных углов положения полигона относительно точки зрения. Существуют техники фильтрации, которые используют от 16 до 32 текселей из текстуры для определения цвета пикселя. Правда использование подобной техники фильтрации требует существенно большей ширины полосы пропускания памяти, а это почти всегда невозможно в существующих системах визуализации без применения дорогостоящих архитектур памяти. В системах визуализации, использующих тайлы1 существенно экономятся ресурсы полосы пропускания памяти, что позволяет использовать анизотропную фильтрацию. Визуализация с применением анизотропной фильтрации обеспечивает лучшее качество изображения, за счет лучшей глубины детализации и более точного представления текстур, наложенных на полигоны, которые расположены не параллельно экрану или точке наблюдения.
Текстуры с детализацией
Основные понятия
Текстуры с детализацией (detail textures; composite textures) - эффективная технология моделирования высокодетализированных текстур. Текстуры с детализацией - замена текстур высокого разрешения. Основная причина того, что разработчики не используют текстуры высокого разрешения - в том, что такие текстуры занимают очень много места. При локальном текстурировании большие текстуры быстро заполнят видеопамять, при DiME - полосу пропускания шины AGP. При мипмэппинге добавление мип-уровня более высокого разрешения увеличивает размер мип-каскада в 2,5 раза. К примеру 16-битная текстура размером 256x256 занимает 170 KB. Добавление мип-уровня 512x512 добавляет к размеру каскада 256 KB, 1024x1024 - еще 2 MB. Если использовать такие текстуры в качестве покрытий для всех стен, пола и потолка, то ресурсы будут быстро исчерпаны.
Представьте кирпичную стену. На большом расстоянии наблюдатель видит отдельные кирпичи, но каждый кирпич разглядеть он не в состоянии. Однако приблизившись, он замечает мелкие неровности каждого кирпича. Можно было нарисовать большую текстуру кирпичной стены, где на маленьких мип-уровнях будут кирпичи без неровностей, а на больших - кирпичи с неровностями. Однако так ли уж необходимо рисовать уникальные трещинки на каждом кирпиче? Не лучше ли сделать все кирпичи одинаковыми, сэкономив кучу текстурной памяти? Glide-версия Unreal именно так и делает - использует вместо одной большой текстуры две маленькие - на основную текстуру накладывается текстура с детализацией. Без текстуры с детализацией при сильном приближении наблюдателя к объекту текстура поверхности становится размытым. Рассмотрим на примере.
Без использования текстуры с детализацией при сильном приближении текстура становится размытой.
Текстура с детализацией несет информацию о мелких деталях, поэтому текстура не размывается при сильном приближении.
Принцип действия
Текстура с детализацией - обычно маленькая текстура, которая накладывается на основную с помощью альфа-смешения или мультитекстурирования. Степень видимости текстуры с детализацией зависит от расстояния до наблюдателя. На большом расстоянии текстура с детализацией не видна вообще. По мере приближения она постепенно начинает "проявляться".
Вернемся к нашему примеру. Пусть основная текстура имеет размер 210x160, текстура с детализацией - 80x80. Представьте, что мы накладываем основную текстуру на прямоугольник 640x480, при этом она растягивается и теряет четкость. Наша текстура с детализацией - черный квадрат со светлыми вкраплениями. Именно эти белые вкрапления и "перенесутся" на основную текстуру. Альфа-смешением или мультитекстурированием мы складываем текстуру с детализацией с основной текстурой, как показано на рисунке.
Дата добавления: 2016-04-14; просмотров: 652;