我们以下面的6个VkFormats为例:
VK_FORMAT_R8_UNORM
VK_FORMAT_R8_SNORM
VK_FORMAT_R8_USCALED
VK_FORMAT_R8_SSCALED
VK_FORMAT_R8_UINT
VK_FORMAT_R8_SINT
Run Code Online (Sandbox Code Playgroud)
所有这些都指定了具有单个 8 位 R 分量的单分量 8 位格式。
格式的不同在于它们是否 (a)标准化,(b)缩放;或 (c)整数。这意味着什么?这三样东西有什么区别?哪里规定的?
8 位的所有 256 个可能值是否在所有六种格式中都有意义且有效?
(它们的不同之处还在于它们是signed还是unsigned。我认为这意味着它们的底层类型是像 C 类型int8_t还是uint8_t?)
krO*_*oze 13
请参阅规范中的格式识别和从规范化定点到浮点的转换。
UNORM是float范围内的[0, 1]。SNORM 是相同的,但在范围内 [-1, 1]USCALED 是转换为的无符号整数值 floatSSCALED 是转换为的整数值 floatUINT 是一个无符号整数SINT 是有符号整数即对于VK_FORMAT_R8_*:
UNORMraw0会给予0.0f, raw255会给予1.0fSNORMraw -127(resp. 129) 会给予-1.0f, raw127会给予1.0fUSCALED生0会给予0.0f,生255会给予255.0fSSCALEDraw -128(resp. 128) 会给予-128.0f, raw127会给予127.0f-128(-2 n-1 ) 在 中没有意义SNORM,只是简单地钳制到-1.0f。
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |