Skip to content

核心模块

基础数据类型和工具函数。

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)

Technical Whitepaper · Built with VitePress