Как передать половину вершинному шейдеру? - PullRequest
1 голос
/ 10 февраля 2020

В D3D11 Input Element Description есть поле, в котором указывается формат.

Как передать half с (например, DXGI_FORMAT_R16_FLOAT) ассемблеру ввода, когда у нас есть float (т.е. 32-битный fp) только на стороне процессора?

1 Ответ

1 голос
/ 11 февраля 2020

Формат половинной точности, используемый Direct3D, в наши дни довольно стандартный.

https://en.wikipedia.org/wiki/Half-precision_floating-point_format

Библиотека DirectXMath имеет встроенную в функциях для преобразования в / из половинной точности:

  • XMHALF и XMConvertHalfToFloat и XMConvertFloatToHalf

  • XMHALF2 и функции загрузки / сохранения для него.

  • XMHALF4 и функции загрузки / сохранения для него.

Существует также F16 C (также известный как CVT16) intrinsi c для выполнения преобразований, но вы действительно можете рассчитывать на них только с системами, которые поддерживают AVX2 (или с фиксированными платформами, такими как Xbox One, которая имеет AVX, но также F16 C). Подробнее см. в этом блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...