Наложение текстуры

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

Чтобы использовать наложение текстур, приложению необходимо сначала проверить, поддерживает ли оно оборудованием пользователя.

Этапы текстуры и каскад смешивания текстур

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

Схема шага текстурирования

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

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

 

Сочетание аргументов и операций, производимых в ходе различных этапов наложения, определяет простой язык наложения на основе потока. Результаты одного этапа перетекают на другой, потом на следующий и т. д. Концепцию перетекания результатов из одного этапа в другой перед конечной растеризацией на многоугольнике часто называют каскадом наложения текстур. На следующей схеме показано, как отдельные шаги текстурирования составляют каскад наложения текстур.

схема шагов текстурирования в каскаде наложения текстур

Каждый шаг на устройстве имеет индекс с отчетом от нуля Direct3D поддерживает до восьми этапов наложения, однако следует всегда проверять возможности устройства, чтобы определить, сколько этапов поддерживает именно оно. Первый этап наложения имеет индекс 0, второй — 1 и т. д., вплоть до 7. Система накладывает этапы в порядке возрастания индекса.

Используйте только необходимое количество этапов; по умолчанию неиспользуемые этапы отключаются. Поэтому если приложение использует только первые два этапа, необходимо настроить операции и аргументы только для этапа 0 и 1. Система обрабатывает эти два этапа и игнорирует отключенные этапы.

Если количество этапов в вашем приложении меняется в зависимости от ситуации, например если для некоторых объектов используется четыре этапа, а для других — только два, не нужно явно отключать все ранее использованные этапы. Можно отключить операцию цвета для первого неиспользуемого этапа, тогда все этапы с более высоким индексом применены не будут. Другой вариант — полностью отключить сопоставление текстур, установив для операции цвета на первом шаге текстурирования (шаг 0) состояние «отключено».

В этом разделе

Раздел Описание

Этапы наложения

Этап наложения — это набор операций с текстурами и их аргументов, определяющих наложение текстур.

Многопроходное наложение текстуры

Приложения Direct3D могут создавать различные специальные эффекты путем применения различных текстур к примитиву в процессе многопроходной отрисовки. Общий термин для этого — многопроходное наложение текстуры. Обычно многопроходное наложение текстуры используется для эмуляции эффектов сложных моделей освещения и затенения путем применения нескольких цветов из нескольких различных текстур. Одно такое приложение называется Сопоставление освещения.

 

Текстуры