Введение в программирование трехмерных игр с DX9

       

Техники и проходы

Файл эффекта состоит из одной или нескольких техник (techniques). Техникой называется конкретный способ реализации спецэффекта. Другими словами, файл эффекта описывает один или несколько способов реализации одного и того же спецэффекта. Зачем надо несколько различных реализаций одного и того же эффекта? Дело в том, что установленное на компьютере оборудование может не поддерживать определенную реализацию эффекта. Следовательно необходимо реализовать несколько версий одного и того же эффекта, ориентированных на различное оборудование.

ПРИМЕЧАНИЕ

Например, мы можем реализовать две версии одного и того же эффекта — одну с использованием шейдеров, а другую с использованием фиксированного конвейера. В этом случае те пользователи, чьи видеокарты поддерживают шейдеры, получат преимущества реализации, использующей шейдеры, а те пользователи, чьи видеокарты шейдеры не поддерживают могут продолжать использовать фиксированный конвейер.

Возможность реализовать все версии эффекта в одном файле дает нам более полную инкапсуляцию эффекта в целом, а объединение реализации эффекта это и есть одна из целей каркаса эффектов.

Каждая техника объединяет один или несколько проходов визуализации (rendering passes). Проход визуализации объединяет режимы устройства, режимы выборки и шейдеры, используемые для визуализации на данном этапе.

ПРИМЕЧАНИЕ

Файл эффектов не ограничивает вас только использованием программируемого конвейера. Например, вы можете использовать фиксированный конвейер для управления режимами устройств, такими как освещение, материалы и текстуры.

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

В качестве примера приведем скелет файла эффектов с двумя техниками, где первая техника состоит из одного прохода, а вторая — из двух:

// effect.txt ... technique T0 { // Первый и единственный проход для данной техники pass P0 { ...[указываем состояния устройства, шейдеры, выборки и т.д. для прохода] } }

technique T1 { // Первый проход pass P0 { ...[указываем состояния устройства, шейдеры, выборки и т.д. для прохода] }

// Второй проход pass P1 { ...[указываем состояния устройства, шейдеры, выборки и т.д. для прохода] } }



Содержание раздела