aurora-rendering-engine/new_conversation.md

855 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

我正在开发 Aurora Rendering Engine (ARE),一个 C++17 跨平台混合渲染引擎。
**核心特性**
- 混合渲染光栅化G-Buffer+ 光线追踪GI/AO/软阴影)
- 双后端CPU 和 Compute Shader 光线追踪,可运行时切换
- BVH 加速结构
- PBR 材质系统
- 工业级可扩展性
**技术栈**
- C++17, OpenGL 4.3+, GLFW, GLAD, GLM, spdlog, stb_image
- 平台Windows + Linux
- 构建CMake 3.15+
**编码规范NanoEra**
- 命名:函数/变量 `snake_case`,类 `PascalCase`,类成员后缀 `_`(但用户直接使用的结构体成员不加下划线)
- 全局宏前缀 `are_`,头文件保护 `ARE_INCLUDE_[路径]_H`
- 注释:全英文,重要接口用 Doxygen
- 禁用虚函数(性能优先,但不影响性能时可用)
**重要设计决策**
1. 配置系统:纯代码配置,不支持文件加载
2. 错误处理:简化设计,直接输出,无堆栈累积
3. Shader 管理:外部文件,用户在 config 中指定路径
4. 场景数据:渲染器拷贝数据(用户友好)
5. BVH 构建:延迟构建(在 begin_frame 时检测并构建)
6. 材质系统Mesh 持有 Material ID支持复用
**文件目录树**
```
aurora-rendering-engine/
├── include/ # 头文件目录
│ ├── are/ # 主命名空间目录
│ │ ├── are.h # 总头文件(包含所有公共接口)
│ │ ├── core/ # 核心模块
│ │ │ ├── config.h # 配置系统
│ │ │ ├── logger.h # 日志系统
│ │ │ ├── types.h # 基础类型定义
│ │ │ └── profiler.h # 性能分析器
│ │ ├── renderer/ # 渲染器模块
│ │ │ ├── renderer.h # 主渲染器接口
│ │ │ ├── render_context.h # 渲染上下文
│ │ │ └── render_stats.h # 渲染统计信息
│ │ ├── scene/ # 场景管理模块
│ │ │ ├── camera.h # 相机
│ │ │ ├── mesh.h # 网格
│ │ │ ├── material.h # 材质
│ │ │ ├── light.h # 光源(基类)
│ │ │ ├── directional_light.h # 平行光
│ │ │ ├── point_light.h # 点光源
│ │ │ ├── spot_light.h # 聚光灯
│ │ │ └── scene_manager.h # 场景管理器
│ │ ├── geometry/ # 几何处理模块
│ │ │ ├── vertex.h # 顶点结构
│ │ │ ├── triangle.h # 三角形
│ │ │ ├── aabb.h # 轴对齐包围盒
│ │ │ └── transform.h # 变换矩阵
│ │ ├── acceleration/ # 加速结构模块
│ │ │ ├── bvh.h # BVH 接口
│ │ │ ├── bvh_node.h # BVH 节点
│ │ │ └── bvh_builder.h # BVH 构建器
│ │ ├── rasterizer/ # 光栅化模块
│ │ │ ├── rasterizer.h # 光栅化器接口
│ │ │ ├── gbuffer.h # G-Buffer 管理
│ │ │ └── shader_program.h # Shader 程序封装
│ │ ├── raytracer/ # 光线追踪模块
│ │ │ ├── raytracer.h # 光线追踪器接口
│ │ │ ├── ray.h # 光线结构
│ │ │ ├── hit_record.h # 碰撞记录
│ │ │ ├── cpu_raytracer.h # CPU 光线追踪实现
│ │ │ └── compute_raytracer.h # Compute Shader 实现
│ │ ├── texture/ # 纹理模块
│ │ │ ├── texture.h # 纹理接口
│ │ │ ├── texture_manager.h # 纹理管理器
│ │ │ └── sampler.h # 采样器
│ │ ├── utils/ # 工具模块
│ │ │ ├── image_io.h # 图像读写
│ │ │ ├── random.h # 随机数生成
│ │ │ ├── math_utils.h # 数学工具函数
│ │ │ └── file_utils.h # 文件工具函数
│ │ └── platform/ # 平台相关模块
│ │ ├── window.h # 窗口管理
│ │ └── gl_context.h # OpenGL 上下文
│ └── extended_folders.list # 模块分类文件夹列表
├── src/ # 源代码目录
│ ├── core/
│ │ ├── config.cpp
│ │ ├── logger.cpp
│ │ └── profiler.cpp
│ ├── renderer/
│ │ ├── renderer.cpp
│ │ ├── render_context.cpp
│ │ └── render_stats.cpp
│ ├── scene/
│ │ ├── camera.cpp
│ │ ├── mesh.cpp
│ │ ├── material.cpp
│ │ ├── light.cpp
│ │ ├── directional_light.cpp
│ │ ├── point_light.cpp
│ │ ├── spot_light.cpp
│ │ └── scene_manager.cpp
│ ├── geometry/
│ │ ├── vertex.cpp
│ │ ├── triangle.cpp
│ │ ├── aabb.cpp
│ │ └── transform.cpp
│ ├── acceleration/
│ │ ├── bvh.cpp
│ │ ├── bvh_node.cpp
│ │ └── bvh_builder.cpp
│ ├── rasterizer/
│ │ ├── rasterizer.cpp
│ │ ├── gbuffer.cpp
│ │ └── shader_program.cpp
│ ├── raytracer/
│ │ ├── raytracer.cpp
│ │ ├── ray.cpp
│ │ ├── hit_record.cpp
│ │ ├── cpu_raytracer.cpp
│ │ └── compute_raytracer.cpp
│ ├── texture/
│ │ ├── texture.cpp
│ │ ├── texture_manager.cpp
│ │ └── sampler.cpp
│ ├── utils/
│ │ ├── image_io.cpp
│ │ ├── random.cpp
│ │ ├── math_utils.cpp
│ │ └── file_utils.cpp
│ └── platform/
│ ├── window.cpp
│ └── gl_context.cpp
├── shaders/ # Shader 文件目录
│ ├── gbuffer/
│ │ ├── gbuffer.vert # G-Buffer 顶点着色器
│ │ └── gbuffer.frag # G-Buffer 片段着色器
│ ├── raytracing/
│ │ └── raytracing.comp # 光线追踪计算着色器
│ ├── post_process/
│ │ ├── tonemap.vert # Tone Mapping 顶点着色器
│ │ ├── tonemap.frag # Tone Mapping 片段着色器
│ │ └── fullscreen_quad.vert # 全屏四边形顶点着色器
│ └── debug/
│ ├── visualize_gbuffer.frag # G-Buffer 可视化
│ └── visualize_bvh.frag # BVH 可视化
├── lib/ # 第三方库目录(用户自行安装)
│ ├── glfw/ # GLFW用户提供
│ ├── glad/ # GLAD用户提供
│ ├── glm/ # GLM用户提供
│ ├── spdlog/ # spdlog用户提供
│ └── stb/ # stb 库(项目包含)
│ ├── stb_image.h
│ └── stb_image_write.h
├── examples/ # 示例程序目录
│ ├── 01_hello_triangle/
│ │ ├── main.cpp # 基础三角形示例
│ │ └── CMakeLists.txt
│ ├── 02_cornell_box/
│ │ ├── main.cpp # Cornell Box 示例
│ │ └── CMakeLists.txt
│ ├── 03_material_showcase/
│ │ ├── main.cpp # 材质展示示例
│ │ └── CMakeLists.txt
│ └── 04_performance_test/
│ ├── main.cpp # 性能测试示例
│ └── CMakeLists.txt
├── experiments/ # 实验和测试记录目录
│ └── .gitkeep
├── docs/ # 文档目录
│ ├── API.md # API 文档
│ ├── ARCHITECTURE.md # 架构设计文档
│ ├── BUILD.md # 构建指南
│ └── CODING_STYLE.md # 编码规范
├── scripts/ # 脚本目录
│ ├── export_modules_requirements.sh # 导出模块依赖
│ ├── check_code.sh # 代码规范检查
│ └── setup_dependencies.sh # 依赖配置脚本(您后续编写)
├── res/ # 资源文件目录
│ └── icon.png # 项目图标
├── CMakeLists.txt # 主 CMake 配置文件
├── .gitignore # Git 忽略文件
├── .gitmodules # Git 子模块配置(如果使用)
├── LICENSE # 许可证
└── README.md # 项目说明
```
如下是模块间依赖关系示意图:
```
┌─────────────────────────────────────────────────────────────┐
│ Renderer │
│ (主渲染器接口) │
└────────────┬────────────────────────────────┬───────────────┘
│ │
▼ ▼
┌────────────────┐ ┌─────────────────┐
│ Rasterizer │ │ RayTracer │
│ (光栅化器) │ │ (光线追踪器) │
└────────┬───────┘ └────────┬────────┘
│ │
▼ ▼
┌────────────────┐ ┌─────────────────┐
│ GBuffer │ │ CPU/Compute │
│ (G-Buffer) │ │ (双实现) │
└────────────────┘ └────────┬────────┘
┌─────────────────┐
│ BVH │
│ (加速结构) │
└────────┬────────┘
┌───────────────────────────────┴───────────────┐
│ │
▼ ▼
┌────────────────┐ ┌─────────────────┐
│ SceneManager │ │ Geometry │
│ (场景管理) │ │ (几何数据) │
└────────┬───────┘ └─────────────────┘
├─────► Camera (相机)
├─────► Mesh (网格)
├─────► Material (材质)
└─────► Light (光源)
├─────► DirectionalLight
├─────► PointLight
└─────► SpotLight
┌─────────────────────────────────────────────────────────────┐
│ 支撑模块 (底层) │
├─────────────────────────────────────────────────────────────┤
│ Core: Config, Logger, Profiler, Types │
│ Texture: TextureManager, Sampler │
│ Utils: ImageIO, Random, MathUtils, FileUtils │
│ Platform: Window, GLContext │
└─────────────────────────────────────────────────────────────┘
```
关于项目实现架构,我有以下步骤:
### Phase 1: 基础设施搭建Week 1-2
**目标**:建立项目骨架,确保编译通过
#### Step 1.1: 核心模块
```
优先级: ★★★★★
文件:
- include/are/core/types.h # 基础类型定义
- include/are/core/config.h # 配置系统
- include/are/core/logger.h # 日志系统
- src/core/config.cpp
- src/core/logger.cpp
依赖: spdlog
验证: 能够创建 Config 对象并输出日志
```
#### Step 1.2: 平台层
```
优先级: ★★★★★
文件:
- include/are/platform/window.h # 窗口管理
- include/are/platform/gl_context.h # OpenGL 上下文
- src/platform/window.cpp
- src/platform/gl_context.cpp
依赖: GLFW, GLAD
验证: 能够创建窗口并初始化 OpenGL 上下文
```
#### Step 1.3: 工具模块
```
优先级: ★★★★☆
文件:
- include/are/utils/math_utils.h # 数学工具
- include/are/utils/file_utils.h # 文件工具
- include/are/utils/random.h # 随机数生成
- src/utils/*.cpp
依赖: GLM
验证: 基础工具函数可用
```
---
### Phase 2: 几何与场景系统Week 2-3
**目标**:能够构建和管理场景数据
#### Step 2.1: 几何数据结构
```
优先级: ★★★★★
文件:
- include/are/geometry/vertex.h # 顶点结构
- include/are/geometry/triangle.h # 三角形
- include/are/geometry/aabb.h # 包围盒
- include/are/geometry/transform.h # 变换
- src/geometry/*.cpp
依赖: GLM
验证: 能够创建和操作几何数据
```
#### Step 2.2: 场景对象
```
优先级: ★★★★★
文件:
- include/are/scene/camera.h # 相机
- include/are/scene/mesh.h # 网格
- include/are/scene/material.h # 材质
- include/are/scene/light.h # 光源基类
- include/are/scene/directional_light.h
- include/are/scene/point_light.h
- include/are/scene/spot_light.h
- src/scene/*.cpp
依赖: geometry
验证: 能够创建场景对象
```
#### Step 2.3: 场景管理器
```
优先级: ★★★★☆
文件:
- include/are/scene/scene_manager.h
- src/scene/scene_manager.cpp
依赖: scene/*
验证: 能够添加/删除/查询场景对象
```
---
### Phase 3: 光栅化管线Week 3-4
**目标**:实现 G-Buffer 生成
#### Step 3.1: Shader 管理
```
优先级: ★★★★★
文件:
- include/are/rasterizer/shader_program.h
- src/rasterizer/shader_program.cpp
- shaders/gbuffer/gbuffer.vert
- shaders/gbuffer/gbuffer.frag
依赖: platform/gl_context
验证: 能够加载和编译 Shader
```
#### Step 3.2: G-Buffer
```
优先级: ★★★★★
文件:
- include/are/rasterizer/gbuffer.h
- src/rasterizer/gbuffer.cpp
依赖: shader_program
验证: 能够创建 G-Buffer 纹理
```
#### Step 3.3: 光栅化器
```
优先级: ★★★★★
文件:
- include/are/rasterizer/rasterizer.h
- src/rasterizer/rasterizer.cpp
依赖: gbuffer, scene_manager
验证: 能够渲染场景到 G-Buffer
```
---
### Phase 4: 加速结构Week 4-5
**目标**:实现 BVH 构建
#### Step 4.1: BVH 节点
```
优先级: ★★★★★
文件:
- include/are/acceleration/bvh_node.h
- src/acceleration/bvh_node.cpp
依赖: geometry/aabb
验证: 能够创建 BVH 节点
```
#### Step 4.2: BVH 构建器
```
优先级: ★★★★★
文件:
- include/are/acceleration/bvh_builder.h
- src/acceleration/bvh_builder.cpp
依赖: bvh_node, scene/mesh
验证: 能够从三角形列表构建 BVH使用 SAH 或中点分割)
```
#### Step 4.3: BVH 接口
```
优先级: ★★★★☆
文件:
- include/are/acceleration/bvh.h
- src/acceleration/bvh.cpp
依赖: bvh_builder
验证: 提供统一的 BVH 查询接口
```
---
### Phase 5: CPU 光线追踪Week 5-6
**目标**:实现基础的 CPU 光线追踪
#### Step 5.1: 光线与碰撞
```
优先级: ★★★★★
文件:
- include/are/raytracer/ray.h
- include/are/raytracer/hit_record.h
- src/raytracer/ray.cpp
- src/raytracer/hit_record.cpp
依赖: geometry
验证: 能够进行光线-三角形相交测试
```
#### Step 5.2: CPU 光线追踪器
```
优先级: ★★★★★
文件:
- include/are/raytracer/cpu_raytracer.h
- src/raytracer/cpu_raytracer.cpp
依赖: ray, hit_record, bvh, scene_manager
验证: 能够追踪光线并计算基础着色(漫反射)
```
#### Step 5.3: 多线程优化
```
优先级: ★★★★☆
修改: src/raytracer/cpu_raytracer.cpp
依赖: OpenMP 或 std::thread
验证: 多线程加速光线追踪
```
---
### Phase 6: Compute Shader 光线追踪Week 6-7
**目标**:实现 GPU 光线追踪
#### Step 6.1: Compute Shader 编写
```
优先级: ★★★★★
文件:
- shaders/raytracing/raytracing.comp
依赖: OpenGL 4.3+
验证: Shader 能够编译通过
```
#### Step 6.2: GPU 数据传输
```
优先级: ★★★★★
文件:
- include/are/raytracer/compute_raytracer.h
- src/raytracer/compute_raytracer.cpp
依赖: rasterizer/shader_program, bvh
验证: 能够将 BVH 和场景数据上传到 GPUSSBO
```
#### Step 6.3: GPU 光线追踪实现
```
优先级: ★★★★★
修改: shaders/raytracing/raytracing.comp
src/raytracer/compute_raytracer.cpp
验证: GPU 光线追踪能够产生正确结果
```
---
### Phase 7: 主渲染器集成Week 7-8
**目标**:整合所有模块
#### Step 7.1: 渲染上下文
```
优先级: ★★★★★
文件:
- include/are/renderer/render_context.h
- include/are/renderer/render_stats.h
- src/renderer/render_context.cpp
- src/renderer/render_stats.cpp
依赖: 所有模块
验证: 能够管理渲染状态
```
#### Step 7.2: 主渲染器
```
优先级: ★★★★★
文件:
- include/are/renderer/renderer.h
- src/renderer/renderer.cpp
依赖: rasterizer, raytracer, scene_manager
验证: 能够完成完整的混合渲染流程
```
#### Step 7.3: 后处理Tone Mapping
```
优先级: ★★★★☆
文件:
- shaders/post_process/tonemap.vert
- shaders/post_process/tonemap.frag
修改: src/renderer/renderer.cpp
验证: HDR 到 LDR 的转换
```
---
### Phase 8: 纹理系统Week 8-9
**目标**:支持纹理贴图
#### Step 8.1: 图像 I/O
```
优先级: ★★★★☆
文件:
- include/are/utils/image_io.h
- src/utils/image_io.cpp
依赖: stb_image, stb_image_write
验证: 能够加载和保存图像
```
#### Step 8.2: 纹理管理
```
优先级: ★★★★☆
文件:
- include/are/texture/texture.h
- include/are/texture/texture_manager.h
- include/are/texture/sampler.h
- src/texture/*.cpp
依赖: image_io
验证: 能够加载纹理并在材质中使用
```
#### Step 8.3: 集成到渲染管线
```
优先级: ★★★★☆
修改: src/rasterizer/rasterizer.cpp
src/raytracer/cpu_raytracer.cpp
shaders/raytracing/raytracing.comp
验证: 纹理能够正确显示
```
---
### Phase 9: 高级光线追踪特性Week 9-11
**目标**:实现高质量渲染特性
#### Step 9.1: 环境光遮蔽AO
```
优先级: ★★★★☆
修改: src/raytracer/cpu_raytracer.cpp
shaders/raytracing/raytracing.comp
验证: AO 效果正确
```
#### Step 9.2: 软阴影
```
优先级: ★★★☆☆
修改: 光线追踪器实现
验证: 软阴影效果
```
#### Step 9.3: 镜面反射
```
优先级: ★★★☆☆
修改: 光线追踪器实现
验证: 镜面反射效果
```
#### Step 9.4: 折射/透明
```
优先级: ★★☆☆☆
修改: 光线追踪器实现
验证: 透明材质效果
```
---
### Phase 10: 调试与性能分析Week 11-12
**目标**:提供调试工具和性能优化
#### Step 10.1: 性能分析器
```
优先级: ★★★★☆
文件:
- include/are/core/profiler.h
- src/core/profiler.cpp
依赖: logger
验证: 能够测量各阶段耗时
```
#### Step 10.2: 调试可视化
```
优先级: ★★★☆☆
文件:
- shaders/debug/visualize_gbuffer.frag
- shaders/debug/visualize_bvh.frag
修改: src/renderer/renderer.cpp
验证: 能够可视化 G-Buffer 各通道和 BVH 包围盒
```
#### Step 10.3: 帧捕获功能
```
优先级: ★★★★☆
修改: src/renderer/renderer.cpp
src/utils/image_io.cpp
验证: 能够保存渲染结果到文件
```
---
### Phase 11: 示例程序Week 12-13
**目标**:提供完整的使用示例
#### Step 11.1: Hello Triangle
```
优先级: ★★★★★
文件:
- examples/01_hello_triangle/main.cpp
- examples/01_hello_triangle/CMakeLists.txt
验证: 最简单的三角形渲染
```
#### Step 11.2: Cornell Box
```
优先级: ★★★★☆
文件:
- examples/02_cornell_box/main.cpp
- examples/02_cornell_box/CMakeLists.txt
验证: 经典的 Cornell Box 场景,展示全局光照
```
#### Step 11.3: Material Showcase
```
优先级: ★★★☆☆
文件:
- examples/03_material_showcase/main.cpp
- examples/03_material_showcase/CMakeLists.txt
验证: 展示不同材质参数的效果
```
#### Step 11.4: Performance Test
```
优先级: ★★★☆☆
文件:
- examples/04_performance_test/main.cpp
- examples/04_performance_test/CMakeLists.txt
验证: CPU vs GPU 性能对比
```
---
接下来是开发策略说明
### 开发原则
1. **自底向上构建**
- 先实现底层模块core, utils, platform
- 再实现数据层geometry, scene
- 最后实现算法层和接口层
2. **增量验证**
- 每个 Phase 完成后都有明确的验证目标
- 通过简单的测试程序验证功能正确性
- 避免大量代码堆积后才发现问题
3. **并行开发可能性**
- Phase 3光栅化和 Phase 4BVH可以并行开发
- Phase 5CPU 光追)和 Phase 6GPU 光追)可以并行开发
- 但建议先完成 CPU 版本,再实现 GPU 版本(便于调试)
4. **性能优先**
- 初期实现注重正确性
- 后期通过 Profiler 识别瓶颈
- 针对性优化热点代码
### 关键里程碑
**Milestone 1Week 4**:能够渲染静态场景到 G-Buffer
```cpp
// 验证代码
are::Renderer renderer(config);
renderer.add_mesh(triangle_mesh);
renderer.begin_frame();
renderer.render_gbuffer(); // 只渲染 G-Buffer
renderer.end_frame();
renderer.save_frame("gbuffer.png");
```
**Milestone 2Week 6**CPU 光线追踪能够产生正确结果
```cpp
// 验证代码
config.ray_tracing.backend = are::ARE_RT_BACKEND_CPU;
config.ray_tracing.spp = 16;
renderer.render(); // 完整的混合渲染
renderer.save_frame("cpu_result.png");
```
**Milestone 3Week 8**GPU 光线追踪能够产生正确结果
```cpp
// 验证代码
config.ray_tracing.backend = are::ARE_RT_BACKEND_COMPUTE_SHADER;
renderer.render();
renderer.save_frame("gpu_result.png");
// 对比 CPU 和 GPU 结果,误差应在可接受范围内
```
**Milestone 4Week 10**:支持纹理和多种光源
```cpp
// 验证代码
material.set_albedo_map("brick.png");
renderer.add_light(directional_light);
renderer.add_light(point_light);
renderer.render();
```
**Milestone 5Week 14**:项目完成,所有示例可运行
### 风险控制
**潜在风险**
1. **BVH 构建性能**:如果场景复杂,构建时间可能过长
- 缓解:使用多线程构建,考虑增量更新
2. **GPU 内存限制**:大场景可能超出 GPU 内存
- 缓解:实现场景分块,按需加载
3. **Compute Shader 调试困难**GPU 代码难以调试
- 缓解:先在 CPU 上验证算法正确性,再移植到 GPU
4. **跨平台兼容性**Windows 和 Linux 的差异
- 缓解:使用 CMake 和标准库,避免平台特定代码
接下来是一些小总结
### 项目规模估算
- **总文件数**:约 80-100 个文件(头文件 + 源文件 + Shader
- **代码量**:约 15,000-20,000 行(不含注释和空行)
- **开发周期**14 周(约 3.5 个月)
- **核心模块**10 个core, platform, utils, geometry, scene, acceleration, rasterizer, raytracer, texture, renderer
### 技术栈
- **语言**C++17
- **图形 API**OpenGL 4.3+
- **依赖库**GLFW, GLAD, GLM, spdlog, stb
- **构建系统**CMake 3.15+
- **并行**OpenMP / std::thread
### 设计亮点
1. **模块化设计**:清晰的层次结构,低耦合高内聚
2. **双后端支持**CPU 和 GPU 光线追踪可运行时切换
3. **工业级可扩展性**:预留接口,便于后期添加新特性
4. **性能优先**BVH 加速、多线程、GPU 计算
5. **易于调试**:完善的日志系统、性能分析、可视化工具
---
此外,还有一些额外要求:
### ⚠️ 关键修改记录
1. **config.h 成员变量已去除下划线**
- 原因:用户直接使用的结构体成员不加下划线
- 影响:所有访问 config 的代码都使用无下划线版本
- 示例:`config.window.width` 而不是 `config.window.width_`
### 📌 API 一致性检查清单
在实现时应该:
- [ ] 检查头文件中声明的所有函数是否都实现
- [ ] 不创造头文件中未声明的公共函数
- [ ] 成员变量命名符合规范(类成员变量后缀 `_`用户结构体即public成员变量不加
- [ ] 所有公共 API 都有 Doxygen 注释
- [ ] 错误处理使用 `ARE_LOG_ERROR`
- [ ] 性能关键函数使用 `ARE_PROFILE_FUNCTION()`
### 🎯 Phase 2 成功标准
- [ ] 所有源文件编译通过0 错误 0 警告)
- [ ] 验证程序能够创建场景对象
- [ ] 相机能够生成光线
- [ ] 网格能够计算 AABB
- [ ] 光源能够打包数据
- [ ] 场景管理器能够管理对象
对于目前的进度我们已经实现了Phase 1正在实现Phase 2请你帮我们进行Phase 2的实现。
但是因为我还没有给你我们已有的代码因此你需要哪些头文件的代码请在下一轮向我询问然后我们会开始Phase 2的开发。