【问题标题】:How do I pass half to a vertex shader?如何将一半传递给顶点着色器?
【发布时间】:2020-05-26 05:26:19
【问题描述】:

D3D11 Input Element Description 有一个指定格式的字段。

当我们仅在 CPU 端有 float(即 32 位 fp)时,如何将 halfs(例如 DXGI_FORMAT_R16_FLOAT)传递给输入汇编器?

【问题讨论】:

    标签: c++ directx-11 hlsl half-precision-float


    【解决方案1】:

    Direct3D 使用的半精度格式如今已相当标准。

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

    DirectXMath 库具有用于在半精度之间进行转换的内置函数:

    • XMHALF 和 XMConvertHalfToFloat 和 XMConvertFloatToHalf

    • XMHALF2 及其加载/存储功能。

    • XMHALF4 及其加载/存储功能。

    还有一个用于进行转换的 F16C(也称为 CVT16)内在函数,但您实际上只能依靠支持 AVX2 的系统(或具有 AVX 和 F16C 的固定平台,如 Xbox One)。详情请见this blog post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多