API 概览
CUDA Ray Tracer 的核心 API 结构。
模块结构
include/
├── core/ # 核心工具
├── geometry/ # 几何系统
├── rendering/ # 渲染系统
├── scene/ # 场景管理
└── image/ # 图像输出核心模块
core/
基础数据类型和工具函数。
| 文件 | 说明 |
|---|---|
vec3.cuh | 3D 向量类 |
ray.cuh | 光线类 |
constants.cuh | 物理常数 |
random.cuh | 随机数生成 |
cuda_utils.cuh | CUDA 辅助宏 |
geometry/
几何图元和加速结构。
| 文件 | 说明 |
|---|---|
sphere.cuh | 球体图元 |
plane.cuh | 平面图元 |
aabb.cuh | 轴对齐包围盒 |
bvh.cuh | BVH 加速结构 |
hit_record.cuh | 相交记录 |
rendering/
渲染核心逻辑。
| 文件 | 说明 |
|---|---|
renderer.cuh | 主渲染器 |
kernels.cuh | CUDA kernel 函数 |
phong.cuh | Blinn-Phong 着色 |
camera.cuh | 相机模型 |
material.cuh | 材质系统 |
scene/
场景配置和管理。
| 文件 | 说明 |
|---|---|
scene.cuh | 场景容器 |
presets.cuh | 预设场景 |
image/
图像输出处理。
| 文件 | 说明 |
|---|---|
ppm.cuh | PPM 文件写入 |
tone_mapping.cuh | 色调映射 |
渲染流程
使用示例
基本渲染
cpp
#include "renderer.cuh"
#include "scene/presets.cuh"
int main() {
// 创建场景
Scene scene = create_demo_scene();
// 配置渲染器
Renderer renderer(800, 600);
renderer.set_scene(scene);
// 渲染
renderer.render();
// 输出
renderer.save_ppm("output.ppm");
return 0;
}路径追踪
cpp
#include "renderer.cuh"
int main() {
Renderer renderer(1920, 1080);
renderer.set_scene(create_cornell_box());
renderer.set_mode(Mode::PathTrace);
renderer.set_samples(128);
renderer.render();
renderer.save_ppm("cornell.ppm");
return 0;
}