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


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

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

Обзор

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

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

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

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

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

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

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

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

Сводка по API

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

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

функции Direct3D 11.3

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