在CUDA编程中,float3 是一个内置的三维向量数据类型,主要用于表示和处理三维空间中的坐标、向量、颜色等需要三个浮点数分量的数据。
例子:
// 表示3D点
float3 point = make_float3(1.0f, 2.0f, 3.0f);
// 表示3D向量
float3 velocity = make_float3(0.0f, 9.8f, 0.0f);
float3 normal = make_float3(0.0f, 1.0f, 0.0f);
float3 内存布局:
// float3 的实际结构
struct float3 {
float x, y, z;
};
// 注意:可能有内存填充,实际大小可能是16字节
方便的构造函数:
// 创建float3的几种方式
float3 v1 = make_float3(1.0f, 2.0f, 3.0f);
float3 v2 = {1.0f, 2.0f, 3.0f};
float3 v3 = make_float3(1.0f); // 所有分量设为1.0
内置数学运算
// 基本向量运算
float3 a = make_float3(1, 2, 3);
float3 b = make_float3(4, 5, 6);
float3 sum = a + b; // 向量加法 (5, 7, 9)
float3 diff = a - b; // 向量减法 (-3, -3, -3)
float3 scaled = a * 2.0f; // 标量乘法 (2, 4, 6)