В чем разница между «ресурсом» и «представлением ресурса»? - PullRequest
0 голосов
/ 30 июня 2019

В Vulkan доступ к ресурсу памяти осуществляется через метаданные типа указателя, содержащиеся в «представлении», которое описывает, как должен интерпретироваться ресурс памяти. Дескриптор - это данные, которые указывают шейдеру «где» будет расположена эта память.

В DirectX 12 для ресурса не хватает «ресурса памяти» (см .: https://www.3dgep.com/learning-directx12-1/). Представление ресурса - это оборачивание вокруг ресурса, которое допускает конкретное использование. Например, «представление ресурса шейдера» (SRV) ) обеспечивает доступ к ресурсу с помощью шейдера, в то время как «представление неупорядоченного доступа» аналогично SRV, за исключением того, что оно обеспечивает доступ к данным в любом порядке.

«Постоянный просмотр буфера» (CBV) позволяет шейдерам получать доступ к данным, которые будут более постоянными / постоянными, чем обычно. Документы DirectX 12, похоже, не различают CBV и постоянный буфер. Например, статья под названием «Представление константного буфера» гласит:

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

Слово "представление" нигде не упоминается, почти как если бы не было разницы между ресурсом и представлением ресурса. Другое место, где это происходит в документации, - статья о привязках ресурсов :

Наиболее распространенные ресурсы:

  • Постоянные представления буфера (CBV)
  • Виды неупорядоченного доступа (БПЛА)
  • Представления ресурсов шейдеров (SRV)
  • Пробоотборники

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

В чем разница между ресурсом и представлением ресурса в DirectX 12?

1 Ответ

0 голосов
/ 01 июля 2019

В DirectX ресурс - это данные, которые вы будете использовать для визуализации.Например, текстура или буфер (например, буфер вершин).Затем, подобно Vulkan, вы должны сообщить графическому драйверу, как интерпретировать эти ресурсы.Например, вы можете хранить 4-байтовые блоки в буфере, а затем читать из него, как если бы он находился в буфере значений с плавающей запятой.Именно здесь появляются «представления». Представление (в DX12, также называемое дескриптором) - это описание, похожее на указатель того, как ресурс, на который он указывает, будет связан с конвейером.За исключением буферов вершин и индексных буферов (и постоянных буферов в некоторых случаях), вам почти всегда приходится связывать ресурс, используя представление (дескриптор).Этот процесс называется привязкой ресурса.

Важно знать, что один и тот же ресурс может быть связан (то есть описан) различными представлениями.Например, вы можете определить SRV для текстуры, а другой - для одного из ее Mipmaps и UAV для той же текстуры для записи в нее в вычислительном шейдере.

Привязка ресурсов - это основной процесс, с помощью которого ресурсыиспользуются / манипулируются в D3D11 / 12.Это не так сложно обернуть голову, но это слишком долго, чтобы описать здесь полностью.Вы можете прочитать больше об этом в документации MS .

...