Skip to content

场景管理

场景配置和预设场景。

Scene

场景容器类。

cpp
class Scene {
public:
    void add_sphere(const Sphere& sphere);
    void add_plane(const Plane& plane);
    void build_bvh();
    void clear();

    __device__ bool intersect(const ray& r, HitRecord& rec) const;
    __device__ bool intersect_any(const ray& r, float t_max) const;

private:
    Sphere* spheres_;
    int num_spheres_;
    Plane* planes_;
    int num_planes_;
    BVHNode* bvh_nodes_;
    int num_bvh_nodes_;
};

预设场景

cpp
// 演示场景 (10 spheres)
Scene create_demo_scene();

// Cornell Box (6 walls)
Scene create_cornell_box();

// 随机球体场景 (100 spheres)
Scene create_random_scene(int num_spheres);

场景加载

cpp
// 从 JSON 加载场景
Scene load_scene_from_json(const char* filename);

// 保存场景
void save_scene_to_json(const Scene& scene, const char* filename);

示例

cpp
Scene scene = create_demo_scene();
scene.build_bvh();

Renderer renderer(800, 600);
renderer.set_scene(scene);
renderer.render();
renderer.save_ppm("demo.ppm");

Technical Whitepaper · Built with VitePress