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


Функции Direct3D 10.1

Direct3D 10.1 расширяет набор функций Direct3D 10.0 со следующими новыми функциями:

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

  • Поведение отбрасывания — лица с нулевой областью автоматически выбраковываются; Это влияет только на отрисовку кадра.

  • Правила с плавающей запятой— используют те же правила IEEE-754 для операций с плавающей запятой ЗА ИСКЛЮЧЕНИЕМ 32-разрядных операций с плавающей запятой, чтобы получить результат в пределах 0,5 единиц последнего места (0,5 ULP) бесконечно точного результата. Это относится к добавлению, вычитании и умножению. (точность до 0,5 ULP для умножения, 1,0 ULP для взаимной).

  • Форматы — точность смешения float16 увеличилась до 0,5 ULP. Для форматов UNORM16/SNORM16/SNORM8 также требуется сочетание.

  • Multisample Anti-Aliasing — Multisampling было улучшено для обобщения прозрачности на основе покрытия и повышения эффективности многофакторной отрисовки. Для этого определяются все многофакторные семантики, как если шейдер пикселей всегда выполняется один раз на выборку (частота выборки), вычисляет отдельный цвет на выборку. Если шейдер пикселей не использует какие-либо атрибуты для каждого примера, он вычислит одинаковое значение для каждого охваченного образца в пикселях. В этом случае это эквивалентно оборудованию, выполняющего шейдер один раз на пиксель (частоту пикселей), реплика отрисовки результата ко всем охваченным образцам. Естественно, при выполнении с частотой пикселей всегда создаются те же результаты, что и при выполнении того же шейдера на частоте выборки, когда атрибуты выборки выполняются с частотой пикселей. Статистика конвейера PSInvocations увеличивается на частоте выборки, если шейдер не работает на частоте пикселей.

  • Пропускная способность этапа конвейера— увеличение объема данных, которые можно передать между этапами шейдера:

    Ресурс Ограничения
    Регистры между этапами шейдера 32 (32-разрядная версия x 4-компонент)
    Входные регистры шейдера вершин 32
    Входные слоты сборщика 32

     

  • Правила растеризации. Правила растеризации изменены для строк, кроме того, добавлены новые функциональные возможности.

    • MultisampleEnable влияет только на растрирование линий (точки и треугольники не влияют) и используется для выбора алгоритма рисования линий. Это означает, что некоторые многофакторные растеризации из Direct3D 10 больше не поддерживаются.
    • Новое выполнение шейдера пикселей с частотой выборки с примитивной растрацией.
  • Ресурсы — CopyResource включен в двух новых сценариях:

    • Теперь поверхности MSAA для цвета и глубины и глубины могут использоваться как источник, так и назначение.
    • Преобразование формата при копировании между определенными предструктурированными 32/64/128 битами, типизированными ресурсами и сжатыми представлениями одной и той же ширины битов.
  • Выборка текстур — sample_c и sample_c_lz инструкции определяются для работы как с Texture2DArrays, так и с помощью элемента Location (альфа-компонента) для указания индекса массива.

  • Представления — TextureCube и новый TextureCubeArray (см . D3D10_TEXCUBE_ARRAY_SRV1) не являются фактическими ресурсами, но являются новыми представлениями ресурса Texture2DArray. Создайте представление ресурсов из ресурса Texture2DArray с новым флагом использования (D3D10_RESOURCE_MISC_TEXTURECUBE), используйте новый интерфейс интерфейса ID3D10ShaderResourceView1 для привязки представления текстур куба к конвейеру.

Для новых функций требуется тип устройства 10.1 (см. интерфейс ID3D10Device1), который можно создать путем вызова D3D10CreateDevice1, или можно создать устройство и цепочку буферов одновременно, вызвав D3D10CreateDeviceAndSwapChain1.

В Windows Vista с пакетом обновления 1 (SP1), Direct3D 10.0 и Direct3D 10.1 DLL существуют параллельно в системе. Чтобы получить доступ к функциям 10.1, выполните одно из следующих действий:

Доступ к функциям 10.1 в Vista Gold и Vista с пакетом обновления 1

Разработчикам, которые хотят поддерживать Vista Gold, а также с пакетом обновления 1 (SP1), придется учитывать отсутствие новых расширений API 10.1 в Vista Gold. DXUT и D3DX10 предоставляют удобные функции для создания соответствующего устройства на основе библиотек DLL, доступных в системе и доступном оборудовании (10.0 или 10.1). Устройство 10.1 наследует от устройства 10.0 и может быть извлечено с помощью QueryInterface(). Рекомендуется, чтобы каждое приложение отслеживало тип устройства и поддерживает указатель на устройство 10.1 (при наличии), чтобы избежать частых вызовов QueryInterface, если требуется функциональность 10.1. Аналогичным образом, где представления ресурсов 10.1 и объекты состояния связаны пользовательским классом приложения, рекомендуется отслеживать, является ли объект типом 10.0 или 10.1, чтобы избежать избыточных вызовов QueryInterface(). D3DX10 включает набор служебных функций для упрощения этого процесса (см. раздел D3DX10CreateDevice и D3DX10CreateDeviceAndSwapChain).

Доступ к функциям версии 10.1 в Vista с пакетом обновления 1 (SP1) исключительно

Для некоторых разработчиков может потребоваться пакет обновления 1 (SP1) Vista, который будет широко распространяться для конечных пользователей и включает ряд улучшений за пределами Direct3D 10.1. Эти разработчики могут использовать только заголовки и библиотеки Direct3D 10.1, принимая зависимость от библиотек DLL Direct3D 10.1, которые поддерживают аппаратное обеспечение 10.0 и 10.1 (некоторые вызовы могут завершиться сбоем, однако на устройствах с 10.0, где новые функции не поддерживаются).

Некоторые дополнительные заметки:

  • Интерфейсы API, предоставляемые в библиотеке D3DX10.dll, будут принимать устройства 10.0 и 10.1 и будут использовать функции 10.1 при наличии.
  • D3D10SDKLayers.dll поддерживает устройство 10.1 и может выводить соответствующее отладочное обновление для функций 10.1.
  • D3D10Ref.dll реализует программное устройство 10.0 и 10.1.
  • D3DX10 и FXC поддерживают обновленную модель шейдера 10.1 со следующими целевыми объектами: vs_4_1, gs_4_1, ps_4_1 и fx_4_1, которые могут быть привязаны к устройству 10.1. Устройство 10.1 поддерживает шейдеры модели 4.0 и 4.1.
  • Платформа эффектов Direct3D 10.0 поддерживает устройства 10.0 и 10.1, однако любые методы, в том числе шейдеры 4.1, или новые функции 10.1 должны использовать устройство 10.1.

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