Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются действия по настройке буфера элементов глубины и состояния элементов глубины для этапа слияния выходных данных.
После того как вы узнаете, как использовать буфер элементов глубины и соответствующее состояние набора элементов глубины, обратитесь к методам расширенного набора элементов.
Создание состояния элементов глубины
Состояние набора элементов глубины сообщает этапу слияния выходных данных, как выполнить тест глубины. Тест набора элементов глубины определяет, следует ли нарисовать заданный пиксель.
Привязка данных глубины к этапу OM
Привязка состояния набора элементов глубины.
Привязать ресурс глубины с помощью представления.
Целевые объекты отрисовки должны быть одинаковыми типами ресурсов. Если используется многофакторная защита, все привязанные целевые объекты отрисовки и буферы глубины должны иметь одинаковые счетчики выборок.
Если буфер используется в качестве целевого объекта отрисовки, тестирование глубины и несколько целевых объектов отрисовки не поддерживаются.
- Одновременно можно связать 8 целевых объектов отрисовки.
- Все целевые объекты отрисовки должны иметь одинаковый размер во всех измерениях (ширина и высота и глубина для 3D или размера массива для *Типов массивов).
- Каждый целевой объект отрисовки может иметь другой формат данных.
- Маски записи определяют, какие данные записываются в целевой объект отрисовки. Элемент управления маски записи выходных данных на целевом объекте отрисовки на уровне компонента, который данные записываются в целевые объекты отрисовки.
Расширенные методы набора элементов
Часть набора элементов буфера элементов глубины можно использовать для создания эффектов отрисовки, таких как компостирование, декаляция и выстраивание.
- Композиции
- Декалинг
- Контуры и силуэты
- Двухсторонняя набор элементов
- Чтение буфера глубины в виде текстуры
Композиции
Приложение может использовать буфер набора элементов для составных 2D-изображений или трехмерных изображений на трехмерной сцене. Маска в буфере набора элементов используется для occlude области целевой поверхности отрисовки. Сохраненные 2D-данные, такие как текст или растровые изображения, затем можно записать в область occluded. Кроме того, приложение может отображать дополнительные трехмерные примитивы в области маскированного набора целевой области отрисовки. Он может даже отобразить всю сцену.
Игры часто составные несколько трехмерных сцен вместе. Например, в играх для вождения обычно отображается зеркало заднего вида. Зеркало содержит представление трехмерной сцены за драйвером. По сути, это вторая трехмерная сцена, составная с представлением вперед водителя.
Декалинг
Приложения Direct3D используют декалинг для управления тем, какие пиксели из определенного примитивного изображения рисуются на целевую поверхность отрисовки. Приложения применяют декалы к изображениям примитивных примитивов, чтобы обеспечить правильную отрисовку совместного многоугольника.
Например, при применении шин и желтых линий к дороге разметка должна отображаться непосредственно на вершине дороги. Однако значения z маркировки и дороги одинаковы. Таким образом, буфер глубины может не производить чистое разделение между двумя. Некоторые пиксели в заднем примитиве могут отображаться поверх переднего примитива и наоборот. Полученный образ, как представляется, сияет от кадра к кадру. Этот эффект называется z-бои или флимеринг.
Чтобы решить эту проблему, используйте набор элементов, чтобы маскировать раздел заднего примитива, где будет отображаться декал. Отключите z-буферизацию и отрисовку изображения переднего примитива в область маскированного отключения поверхности целевого объекта отрисовки.
Для решения этой проблемы можно использовать несколько смешения текстур.
Контуры и силуэты
Буфер набора элементов можно использовать для более абстрактных эффектов, таких как выстраивание и силуэтирование.
Если приложение выполняет два прохода отрисовки — один для создания маски наборов элементов и второй для применения маски наборов к изображению, но с примитивами немного меньше на втором проходе - результирующий образ будет содержать только контур примитива. Затем приложение может заполнить маскированную область рисунка с сплошным цветом, что дает примитиву вытянутый вид.
Если маска наборов совпадает с размером и фигурой, что и примитив, полученный образ содержит отверстие, где должен быть примитив. Затем приложение может заполнить отверстие черным, чтобы создать силуэт примитива.
Двухсторонняя набор элементов
Теневые тома используются для рисования тени с буфером наборов элементов. Приложение вычисляет теневые тома, отбрасываемые геометрией, вычисляя края силуэта и выдавая их от света в набор трехмерных томов. Затем эти тома отрисовываются дважды в буфер наборов элементов.
Первая отрисовка рисует многоугольники вперед и увеличивает значения элементов-буфера. Вторая отрисовка рисует многоугольники задней области теневого тома и уменьшает значения буфера элементов.
Как правило, все добавочные и отложенные значения отменяют друг друга. Однако сцена уже была отрисовывается с нормальной геометрией, что приводит к сбою теста z-буфера при отрисовки теневого тома. Значения, оставшиеся в буфере элементов, соответствуют пикселям, которые находятся в тени. Эти оставшиеся содержимое буфера трафаретов используются в качестве маски, чтобы альфа-смешивать большой, все охватывающий черный квадрат в сцену. При использовании буфера набора элементов, выступающего в качестве маски, результатом является темный пиксель, который находится в тени.
Это означает, что теневая геометрия рисуется дважды на источник света, поэтому давление на вершинную пропускную способность GPU. Двухсторонняя функция набора элементов разработана для устранения этой ситуации. В этом подходе существует два набора состояния наборов элементов (с именем ниже), один набор для треугольников с передней стороны и другой для треугольников с задней стороны. Таким образом, только один проход рисуется на теневой том на свет.
Чтение буфера глубины в виде текстуры
Неактивный буфер элементов глубины можно считать шейдером в виде текстуры. Приложение, которое считывает буфер элементов глубины в виде текстуры, отрисовывается в два прохода, первый передает запись в буфер элементов глубины и второй проход считывает из буфера. Это позволяет шейдеру сравнивать значения глубины или наборов элементов, ранее записанные в буфер с значением для отображаемого пикселя. Результат сравнения можно использовать для создания эффектов, таких как сопоставление тени или мягкие частицы в системе частиц.