Эффекты (Direct3D 10)

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

Первым шагом является упорядочение состояния, которым вы хотите управлять в эффекте. Сюда входит состояние шейдера (вершинные, геометрические и пиксельные шейдеры), состояние текстуры и выборки, используемые шейдерами, а также другое непрограммируемое состояние конвейера. Эффект можно создать в памяти в виде текстовой строки, но обычно размер становится достаточно большим, чтобы его было удобно хранить в файле эффекта (текстовом файле, который заканчивается расширением FX). Чтобы использовать эффект, необходимо скомпилировать его (проверка синтаксис HLSL, а также синтаксис платформы эффектов), инициализировать состояние эффекта с помощью вызовов API и изменить цикл отрисовки для вызова API отрисовки.

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

Руководство по программированию для Direct3D 10