我正在将计算着色器从GLSL转换为Metal着色语言。我正在使用函数f.input :is_active, as: :boolean, checked_value: true, unchecked_value: false
和uintBitsToFloat
来存储原子变量。什么是金属中的等价物? GLSL中的示例用法:
floatBitsToUint
答案 0 :(得分:2)
看起来你可以使用as_type<type-id>()
演员。
Metal着色语言添加了一个as_type运算符,允许将任何标量或向量数据类型(不是指针)重新解释为另一个相同大小的标量或向量数据类型。 操作数中的位直接返回而不作为新类型进行修改。不执行函数参数的常规类型提升。
float f = 1.0f;
// Legal. Contains: 0x3f800000
uint u = as_type<uint>(f);
// Legal. Contains:
// (int4)(0x3f800000, 0x40000000,
// 0x40400000, 0x40800000)
float4 f = float4(1.0f, 2.0f, 3.0f, 4.0f);
int4 i = as_type<int4>(f);