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


Корневые подписи

Корневая сигнатура определяет, какие типы ресурсов привязаны к графическому конвейеру.

В этом разделе

Раздел Описание
Общие сведения о корневых подписях
Корневая сигнатура настраивается с помощью команды приложения и связывает список ресурсов, необходимых шейдерам. Список команд graphics содержит как графическую, так и корневую сигнатуру вычислений. Список команд вычислений будет иметь только одну корневую сигнатуру вычислений. Эти корневые сигнатуры не зависят друг от друга.
Использование корневой подписи
Корневая сигнатура — это определение произвольно упорядоченной коллекции таблиц дескрипторов (включая их макет), корневых констант и корневых дескрипторов. Каждая запись имеет стоимость до максимального предела, поэтому приложение может сбалансироваться между количеством каждого типа записи, включаемой корневой сигнатурой.
Создание корневой подписи
Корневые сигнатуры — это сложная структура данных, содержащая вложенные структуры. Их можно определить программными средствами, используя приведенное ниже определение структуры данных (которое включает методы для инициализации элементов). Кроме того, они могут быть написаны на языке HLSL, что дает преимущество в том, что компилятор заранее проверит совместимость макета с шейдером.
Ограничения корневых подписей
Корневая сигнатура является простой недвижимостью, и существуют строгие ограничения и затраты, которые следует учитывать.
Использование констант непосредственно в корневой подписи
Приложения могут определять корневые константы в корневой сигнатуре, каждая из которых представляет собой набор 32-разрядных значений. Они отображаются в высокоуровневом языке заливки (HLSL) в виде буфера констант. Обратите внимание, что буферы констант по историческим причинам рассматриваются как наборы 4x32-разрядных значений.
Использование дескрипторов непосредственно в корневой подписи
Приложения могут помещать дескрипторы непосредственно в корневую сигнатуру, чтобы избежать прохождения кучи дескрипторов. Эти дескрипторы занимают много места в корневой сигнатуре (см. раздел Ограничения корневой сигнатуры), поэтому приложения должны использовать их экономно.
Пример корневых подписей
В следующем разделе показаны корневые сигнатуры разной сложности от пустых до полностью полных.
Определение корневых подписей в HLSL
Указание корневых подписей в модели шейдеров HLSL 5.1 является альтернативой их указанию в коде C++.
Корневая подпись версии 1.1
Корневая сигнатура версии 1.1 позволяет приложениям указывать драйверам, когда дескрипторы в куче дескрипторов не изменяются или дескрипторы данных, указывающие на , не изменяются. Это позволяет драйверам выполнять оптимизации, которые могут быть возможны, зная, что дескриптор или память, на которую он указывает, являются статическими в течение некоторого периода времени.

ID3D12RootSignature

ID3D12RootSignatureDeserializer

Привязка ресурсов