场景管理
场景配置和预设场景。
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");