Поделиться через


Смешивание текстур

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

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

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

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

схема этапа текстуры

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

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

 

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

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

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

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

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

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

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

Этапы смешивания

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

Многопассное смешение текстур

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

 

Текстуры