Эффекты (Direct3D 11)
Эффект DirectX — это коллекция состояния конвейера, заданная выражениями, написанными в HLSL, и некоторые синтаксисы, относящиеся к платформе эффектов.
После компиляции эффекта используйте API платформы эффектов для отрисовки. Функциональные возможности эффектов могут варьироваться от того, что просто, как вершинный шейдер, который преобразует геометрию и шейдер пикселей, который выводит сплошной цвет, к методу отрисовки, требующей нескольких проходов, использует каждый этап графического конвейера и управляет состоянием шейдера, а также состояние конвейера, не связанное с программируемыми шейдерами.
Первым шагом является упорядочение состояния, которое требуется контролировать в эффекте. К ним относятся состояние шейдера (вершина, корпус, домен, геометрия, шейдеры пикселей и вычислительных шейдеров), текстура и состояние выборки, используемое шейдерами, а также другое непрограммируемое состояние конвейера. Вы можете создать эффект в памяти в виде текстовой строки, но обычно размер становится достаточно большим, чтобы сохранить состояние эффекта в файле эффекта (текстовый файл, заканчивающийся расширением .fx). Чтобы использовать эффект, необходимо скомпилировать его (чтобы проверить синтаксис HLSL, а также синтаксис платформы эффектов), инициализировать состояние эффекта с помощью вызовов API и изменить цикл отрисовки для вызова API отрисовки.
Эффект инкапсулирует все состояние отрисовки, необходимое для определенного эффекта, в одну функцию отрисовки, называемую методом. Проход — это подзаготовка метода, содержащего состояние отрисовки. Чтобы реализовать эффект отрисовки нескольких передач, реализуйте один или несколько проходов в методе. Например, предположим, что вы хотели отобразить геометрию с одним набором буферов глубины или набором элементов, а затем нарисовать некоторые спрайты поверх этого. Вы можете реализовать геометрическую отрисовку в первом проходе и рисунок спрайта во втором проходе. Чтобы отобразить эффект, вы просто отрисовываете оба прохода в цикле отрисовки. Вы можете реализовать любое количество методов в эффекте. Конечно, чем больше количество методов, тем больше времени компиляции для эффекта. Одним из способов использования этой функции является создание эффектов с помощью методов, предназначенных для работы на другом оборудовании. Это позволяет приложению корректно повысить производительность на основе обнаруженных возможностей оборудования.
Набор методов можно сгруппировать в группу (которая использует синтаксис fxgroup). Методы можно сгруппировать в любом случае. Например, можно создать несколько групп, по одному на материал; каждый материал может иметь метод для каждого уровня оборудования; каждый метод будет иметь набор проходов, определяющих материал на определенном оборудовании.
В этом разделе
Тема | Описание |
---|---|
упорядочение состояния в эффекте |
При использовании Direct3D 11 состояние эффекта для определенных этапов конвейера организовано структурами. |
системные интерфейсы эффектов |
Система эффектов определяет несколько интерфейсов для управления состоянием эффекта. |
специализированные интерфейсы |
ID3DX11EffectVariable имеет ряд методов приведения интерфейса к конкретному типу интерфейса. |
интерфейсы и классы в эффектах |
Существует множество способов использования классов и интерфейсов в Effects 11. |
отрисовка эффекта |
Эффект можно использовать для хранения информации или отрисовки с помощью группы состояний. |
клонирование эффекта |
Клонирование эффекта создает вторую, почти идентичную копию эффекта. |
синтаксис потоковой передачи |
Геометрическая шейдера с потоком объявляется с определенным синтаксисом. |
различия между эффектами 10 и эффектами 11 |
В этом разделе показаны различия между эффектами 10 и эффектами 11. |
Связанные разделы
-
Руководство по программированию для Direct3D 11