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


Глоссарий Direct3D 12

Эти термины отличаются от Direct3D 12.

Привязки

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

Буфера

Тип ресурса D3D, который является синонимом непрерывного выделения памяти.

Пакет

Буфер команд, который графический процессор (GPU) может выполнять только непосредственно через прямой список команд. Пакет наследует все состояния GPU (за исключением текущего заданного объекта состояния конвейера и примитивной топологии).

распределителя команд

Базовые выделения памяти, в которых хранятся команды GPU. Объект распределителя команд применяется как к прямым спискам команд , так и к пакетам.

список команд

Список команд соответствует набору команд, которые выполняет GPU. К ним относятся такие команды, как установка состояния, рисование, очистка и копирование. Интерфейс списка команд D3D12 значительно отличается от интерфейса списка команд D3D11. Интерфейс списка команд D3D12 содержит ИНТЕРФЕЙСы API, аналогичные API-интерфейсам отрисовки контекста устройства D3D11.

Список команд D3D12 не сопоставляет и не отменяет сопоставление ресурсов, не изменяет сопоставления плиток, не изменяет размер пулов плиток, не получает данные запроса и неявно не отправляет команды в GPU для выполнения.

В отличие от отложенных контекстов D3D11, списки команд D3D12 поддерживают только два уровня косвенного обращения. Прямой список команд соответствует буферу команд, который может выполнять GPU. Пакет можно выполнить только непосредственно через прямой список команд.

Прямой список команд не наследует состояние GPU. Пакет наследует все состояния GPU (за исключением текущего заданного объекта состояния конвейера и примитивной топологии).

Память для списка команд задается распределителем команд. Назначение списков команд заключается в том, что они могут быть отправлены в GPU в виде одного запроса на отрисовку.

очередь команд

Очередь команд перечисляет , что GPU выполняет последовательно. Приложения должны явно отправлять списки команд в очередь команд для выполнения. Как правило, на gpu имеется три очереди команд: трехмерная графика, вычисление и копирование, соответствующие конвейеру трехмерной графики, подсистеме вычислений и одному или нескольким модулям копирования.

консервативная растеризация

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

Консервативная растеризация может помочь в решении таких проблем, как обнаружение столкновений и попаданий, бинирование и отбраковка окклюзии, где цвет пикселя является более определенным и можно устранить пограничные случаи. См. раздел Консервативная растеризация.

Представление буфера констант (CBV)

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

куча по умолчанию

Куча в пользовательском режиме, ориентированная на поддержку постоянных типов ресурсов GPU, включая ресурсы, записанные в GPU.

Дескриптор

Дескрипторы являются основной единицей привязки для одного ресурса в D3D12. Дескриптор — это относительно небольшой блок данных, который полностью описывает объект в GPU в определенном формате GPU. Существует множество различных типов дескрипторов: представления ресурсов шейдера (SRV), представления неупорядоченного доступа (UAV), представления постоянного буфера (CBV) и выборки.

куча дескрипторов

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

таблица дескрипторов

Таблица дескрипторов логически является массивом дескрипторов. В каждой таблице дескрипторов хранятся дескрипторы одного или нескольких типов, включая srv, UAVe, CBV и samplers. Таблица дескрипторов не является выделением памяти, а просто смещением и длиной в кучу дескрипторов.

список команд direct

Буфер команд, который может выполнять GPU. Прямой список команд не наследует состояние GPU.

Забор

Механизм синхронизации GPU и ЦП. Gpu и ЦП могут быть предписаны ждать у ограждения, ожидая в действии, пока другой процессор наверстает упущенное. См. раздел Синхронизация с несколькими подсистемами.

опасность, отслеживание опасности

Опасность возникает, когда ресурс используется для одной цели, а приложение намерено повторно использовать его для другой цели. Чтобы снова использовать ресурс, необходимо очистить промежуточные кэши или сделать недействительными, требования к сжатиям должны соответствовать второму использованию, а ресурс должен находиться в требуемом состоянии, чтобы избежать чтения ресурса после его записи и недействительности для целевой цели.

Процесс обслуживания ресурсов и предотвращения этих проблем синхронизации называется отслеживанием опасности. Если драйвер не отслеживает опасность, за это отвечает приложение. В большинстве более ранних версий DirectX отслеживание опасности обрабатывалось драйвером. Для повышения производительности в DirectX 12 доступны методы без отслеживания опасности.

Высокоуровневый язык шейдеров (HLSL)

Компьютерный язык, похожий, но во многом отличающийся от языка C, используемый для написания кода шейдера. Вершинные, пиксельные, геометрические, вычислительные, доменные и корпусные шейдеры записываются с помощью HLSL. Компилятор преобразует источник HLSL в двоичный формат для использования GPU.

мультиинжения

Различные экземпляры и типы обработчиков в одном GPU. К типам подсистем относятся графики, вычисления и копирование.

MultiGPU

Конфигурация оборудования, в которой имеется несколько графических адаптеров. Отдельные адаптеры иногда называют узлами. Наличие нескольких GPU может значительно усложнить задачу их синхронизации с ЦП и друг с другом, чем с одним GPU.

Объект состояния конвейера (PSO)

Значительная часть состояния GPU. Это состояние включает все заданные в настоящее время шейдеры и определенные объекты состояния с фиксированной функцией. Единственный способ изменить состояния, содержащиеся в объекте конвейера, — это изменить текущий привязанный объект конвейера.

предикация

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

Представление порядка растеризатора (ROV)

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

Упорядоченные представления растеризатора позволяют коду пиксельного шейдера помечать привязки неупорядоченного представления доступа (UAV) объявлением, которое изменяет обычные требования к порядку результатов графического конвейера для БПЛА.

кучи обратного чтения

Куча в пользовательском режиме, ориентированная на передачу данных с GPU обратно в ЦП.

Ресурсов

Сущность, которая предоставляет данные в конвейер и определяет, что отображается во время сцены. Ресурсы могут загружаться из мультимедиа вашей игры или создаваться динамически во время выполнения. Как правило, ресурсы включают данные текстуры, данные вершин и данные шейдера. Большинство приложений Direct3D создают и уничтожают ресурсы на протяжении всего срока их существования.

ресурсный барьер

Барьер ресурса уведомляет драйвер о том, что может потребоваться синхронизация нескольких обращений к одному ресурсу, например чтение и запись в одну и ту же текстуру.

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

Привязка ресурсов — это процесс связывания ресурсов (текстур, буферов вершин, буферов индексов и т. д.) с графическим конвейером, что позволяет шейдерам конвейера обрабатывать правильный ресурс.

кучи ресурсов

Куча ресурсов — это универсальный термин для кучи, которые являются буферами памяти, отведенными для хранения ресурсов по мере их передачи в GPU и из него. Для передачи в GPU требуется куча отправки, от GPU к ЦП требуется куча обратного чтения, а постоянная куча для gpu для поддержки нескольких кадров отрисовки называется кучи по умолчанию.

корневая сигнатур

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

Сборники

Пример — это код, который считывает из текстуры.

Представление ресурсов шейдера (SRV)

Зависящий от формата способ просмотра данных в ресурсе шейдера, например текстуре.

статическая куча

Куча в пользовательском режиме, ориентированная на несколько ресурсов только для чтения GPU, которые обычно используются одновременно и не изменяются часто.

цепочка буферов

Цепочки буферов управляют поворотом обратного буфера, формируя основу графической анимации. Цепочки буферов обрабатываются набором API низкого уровня DXGI (см. обзор DXGI).

swizzle

Метод размещения многомерных данных в памяти таким образом, чтобы данные близлежащей размерности, как правило, имели ближайшие адреса. В частности, все данные для одной строки не располагаются непрерывно перед данными для следующей строки. Параметризованный swizzle описывает стандартизированный способ описания шаблонов сверток.

Текстуры

Тип ресурса D3D, который является многомерным и имеет макет памяти, оптимизированный для многомерного доступа из GPU. Текстуры часто содержат необработанное изображение, необходимое для отрисовки на поверхности, перед освещением и смешения, но могут содержать другие формы данных, такие как цветовые градиенты и ссылочные цвета. Direct3D 12 поддерживает одну, две и трехмерные текстуры.

Плитки

Страница видеопамять, похожая на страницу памяти ЦП или системы. Нотация плитки помогает отличить подсистему виртуальной памяти GPU от подсистемы виртуальной памяти ЦП. GPU предоставляют такие же возможности виртуальной памяти, как и системная виртуальная память. Некоторые GPU имеют общие возможности виртуальной памяти, которые позволяют совместно использовать некоторые страницы подсистемы виртуальной памяти как с ЦП, так и с GPU.

плитки ресурсов

Ресурсы с плитками необходимы, чтобы меньше памяти GPU тратилось впустую при хранении областей поверхностей, которые приложение знает, не будут доступны, и оборудование может понять, как фильтровать смежные плитки. Мозаичные ресурсы — это большие логические ресурсы, но для них требуются небольшие объемы физической памяти.

Представление неупорядоченного доступа (UAV)

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

отправить кучу

Куча в пользовательском режиме, предназначенная для передачи данных от ЦП к GPU.

куча в пользовательском режиме

Коллекция больших непрерывных выделений памяти, которые перезапускаются без учета компонентов ядра: методы выделения и уничтожения не вызывают методы выделения и уничтожения ядра во время устойчивого состояния. Кучи отправки, обратного чтения и кучи по умолчанию — это варианты кучи пользовательского режима.

ресурсы с плитками тома

Трехмерные мозаичные ресурсы.