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


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

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

Общие сведения

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

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

RoV гарантируют порядок доступа К БПЛА для любой пары вызовов перекрывающихся пиксельных шейдеров. В этом случае "перекрытие" означает, что вызовы создаются одинаковыми вызовами draw и используют одну и ту же пиксельную координату в режиме выполнения с частотой пикселей, а также одну и ту же пиксельную координату и координату образца в режиме частоты выборки.

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

Сведения о реализации

Упорядоченные представления растеризатора (ROV) объявляются со следующими новыми объектами HLSL и доступны только для пиксельного шейдера:

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

Используйте эти объекты так же, как и другие объекты БПЛА (например, RWBuffer и т. д.).

Сводные данные API

RoV — это конструкция, предназначенная только для HLSL, которая применяет к БПЛА различные семантики поведения. Все API, относящиеся к БПЛА, также относятся к rov. Обратите внимание, что следующие методы, структуры и вспомогательный класс ссылают на средство растеризатора:

  • D3D11_RASTERIZER_DESC2 : структура, содержащая описание растеризатора, отметив CD3D12_RASTERIZER_DESC2 вспомогательный класс для создания описаний растеризатора.
  • D3D11_FEATURE_DATA_D3D11_OPTIONS2 : структура, в которой содержится логическое ROVsSupportedзначение , указывающее на поддержку.
  • ID3D11Device::CheckFeatureSupport : метод для доступа к поддерживаемым функциям.

Функции Direct3D 11.3

Модель шейдера 5.1