核心模块
基础数据类型和工具函数。
vec3
3D 向量类,支持常见向量运算。
cpp
struct vec3 {
float x, y, z;
__host__ __device__ vec3 operator+(const vec3& v) const;
__host__ __device__ vec3 operator-(const vec3& v) const;
__host__ __device__ vec3 operator*(float t) const;
__host__ __device__ float dot(const vec3& v) const;
__host__ __device__ vec3 cross(const vec3& v) const;
__host__ __device__ float length() const;
__host__ __device__ vec3 normalize() const;
};ray
光线类,包含起点和方向。
cpp
struct ray {
vec3 origin;
vec3 direction;
float t_min, t_max;
__host__ __device__ vec3 at(float t) const {
return origin + direction * t;
}
};随机数生成
CUDA 随机数工具。
cpp
// 初始化随机状态
__device__ void init_random(curandState* state, int seed);
// 生成 [0, 1) 均匀分布
__device__ float random_float(curandState* state);
// 生成 [min, max) 均匀分布
__device__ float random_float(curandState* state, float min, float max);CUDA 辅助宏
cpp
// CUDA 错误检查
#define CUDA_CHECK(call) \
do { \
cudaError_t err = call; \
if (err != cudaSuccess) { \
fprintf(stderr, "CUDA Error: %s\n", cudaGetErrorString(err)); \
exit(1); \
} \
} while (0)