金属纹理格式

Metal Texture Formats

我在 Swift 中声明了一个金属纹理,格式为 .bgra8Unorm。现在在金属计算 kernel 中,我使用 half 数据类型访问它(我相信 Apple 示例就是这样做的)。

texture2d<half, access::sample> inTexture [[ texture(0) ]]

是否会以这种方式访问​​ bgra8Unorm 纹理(通过采样器)and/or 将其自动写回并自动将 half 值打包和解包为 8 位整数?当我向纹理写入负 half 值时会发生什么?

Yes。当写入具有标准化无符号整数分量的纹理时,值被有效地限制在 [0, 1],然后按格式的最大值(在本例中为 255)进行缩放。