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


Глоссарий Direct3D 12

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

привязки

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

буфер

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

пакет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

дескриптор

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

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

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

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

Таблица дескриптора логически представляет собой массив дескрипторов. Каждая таблица дескриптора хранит дескрипторы одного или нескольких типов, включая SRVs, UAVe, CBVs и Samplers. Таблица дескрипторов не является выделением памяти, это просто смещение и длина в куче дескрипторов.

прямой список команд

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

ограждение

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

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

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

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

High-Level язык шейдеров (HLSL)

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

многоинженные

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

MultiGPU

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

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

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

предикация

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

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

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

Растеризаторы упорядоченных представлений (ROV) позволяют коду пиксельного шейдера отмечать привязки неупорядоченного представления доступа (UAV) с объявлением, изменяющим стандартные требования к порядку результатов графического конвейера для UAV.

память обратного чтения

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

ресурс

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

барьер ресурсов

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

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

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

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

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

корневая подпись

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

образец

Семплер — это компонент кода, который читает данные из текстуры.

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

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

статической куче

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

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

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

swizzle

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

текстура

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

плитка

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

плиточные ресурсы

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

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

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

загрузка кучи (в программировании)

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

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

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

объема ресурсов с плитками

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