- 基于物理的渲染
- 纯CPU运行,专注算法原理
- 使用C++ 17进行开发
- 从Hello World开始
- 尽量避免使用C++高级语言特性
- 下载源码
git clone https://github.com/HeaoYe/CPUPathTracing
- 进入代码文件夹 更新子模块
cd CPUPathTracing git submodule update --init --recursive - 下载模型与贴图文件
- 新建models和hdris文件夹
- 下载模型与贴图文件
- 将.obj模型文件放入models文件夹
- 将.exr贴图文件放入hdris文件夹
- 文件夹结构预览
CPUPathTracing ├── hdris │ ├── HdrOutdoorSnowMountainsEveningClear001_HDR_4K.exr │ ├── kloppenheim_07_puresky_4k.exr │ └── qwantani_night_puresky_4k.exr ├── models │ ├── buddha.obj │ ├── dragon_871k.obj │ ├── dragon_87k.obj │ └── simple_dragon.obj ├── resource/ ├── source/ ├── thirdparty/ ├── .vscode/ ├── CMakeLists.txt ├── .gitignore ├── .gitmodules ├── README.md └── LICENSE
- 编译
cmake -B build cmake --build build -j 8
- 运行
./build/source/CPUPathTracing
- 第1讲 课程介绍
- 第2讲 线程池与胶片
- 第3讲 自旋锁与并行for循环
- 第4讲 球体与相交测试
- 第5讲 模型渲染
- 第6讲 平面与场景
- 第7讲 材质与极简光追
- 第8讲 一些代码重构
- 第9讲 性能优化(上)并行优化
- 第10讲 性能优化(中)高性能BVH加速结构
- 第11讲 性能优化(下)场景管理
- 第12讲 路径追踪&重要性采样
- 第13讲 代码勘误&新材质类
- 第14讲 电介质与导体
- 第15讲 往期勘误&代码重构
- 第16讲 微表面理论
- 第17讲 实时预览
- 第18讲 向光源采样
- 第19讲 多重重要性采样
- 第20讲 BVH构建优化
- 第21讲 环境光照
- 第22讲 光谱渲染
- 第23讲 体渲染
- 第24讲 微表面理论——多重散射
- 第25讲 材质与采样
