AnyaRenderer
是一个迷你的软渲染器,目前实现了光栅化和 Whitted Style / Path Tracing 风格的光线追踪的功能,基于 C++20 开发。- 实现了矩阵向量库,线性插值,z-buffer 深度检测, MSAA 抗锯齿等功能。
- Clion + MinGW w64 9.0
- Windows
- CMake VERSION 3.20
- GLFW
- nlohmann
- stb_image
- Move : 按下
W
S
A
D
前后左右移动 - Mouse: 鼠标水平移动影响偏航角,鼠标垂直移动影响俯仰角
- Scroll: 鼠标滚轮控制缩放
- Reset: 按下
SPACE
恢复默认位置 - Quit: 按下
ESC
退出程序 - Tips: 目前仅光栅化支持相机环游,光追由于渲染时间长,故暂不支持
Scene | Description |
---|---|
Triangle |
|
MSAA |
|
Cow |
|
Elfgirl |
|
Azura |
|
Diablo3 |
|
Boggie |
|
Robot |
|
Assassin |
|
Marry |
|
Kgirl |
Scene | Description |
---|---|
Sphere |
|
Bunny |
Scene | Description |
---|---|
Cornell_Box_5000SPP |
|
Cornell_Sphere_Mirror_5000SPP |
|
Cornell_Sphere3_Mirror_5000SPP |
- 数学
- 向量运算
- 矩阵运算
- 工具函数
- 图元
- 球体
- 矩形
- 三角形
- 模型
- 纹理
- 单色纹理
- 图片纹理
- 凹凸纹理
- Bilinear双线性插值
- 渲染
- 光栅化
- 光线追踪
- Whitted Style
- Path Tracing
- 着色器
- MSAA抗锯齿
- 加速结构
- AABB包围盒
- BVH包围盒
- 背面剔除
- 相机系统
- 水平移动
- 俯仰角
- 偏航角
- 缩放
- 复位
AnyaRenderer
├── art // 美术资源
│ ├── context // 上下文配置文件
│ ├── models // 模型文件
│ └── images // 输出图片
│
├── dependent // 第三方库
│ ├── include // 引入的头文件
│ ├── lib // 需要链接的静态库和动态库文件
│ └── src // 引入的源码
│
├── docs // 文档相关
│ └── images // 文档引用图片
│
├── src // 项目源码
├── .gitattributes // git项目属性
├── .gitignore // git忽略文件
├── .clang-format // 格式控制文件
├── CMakeLists.txt // 项目构建配置
└── README.md // 介绍文件
src
├── engine
│ ├── component // 场景组件
│ │ ├── camera.hpp // 摄像机
│ │ ├── color.hpp // 颜色
│ │ ├── light.hpp // 光源
│ │ ├── ray.hpp // 光线
│ │ ├── object // 图元
│ │ │ ├── sphere.hpp // 球
│ │ │ └── triangle.hpp // 三角形
│ │ └── scene.hpp // 场景类
│ │
│ ├── interface // 接口
│ │ ├── object.hpp // 图元接口
│ │ └── renderer.hpp // 渲染器接口
│ │
│ ├── load // 资源载入
│ │ ├── context.hpp // 上下文载入
│ │ ├── model.hpp // 模型载入
│ │ └── texture.hpp // 图像纹理载入
│ │
│ ├── renderer // 渲染器
│ │ ├── raytracer.hpp // 光线追踪器
│ │ └── rasterizer.hpp // 光栅化器
│ │
│ ├── shader // 着色器
│ │ ├── fragment_shader.hpp // 片元着色器
│ │ ├── vertex_shader.hpp // 顶点着色器
│ │ └── methods.hpp // 着色方法
│ │
│ └── tool // 工具
│ ├── matrix.hpp // 矩阵类
│ ├── vec.hpp // 向量类
│ ├── progress.hpp // 进度条类
│ └── utils.hpp // 常用工具函数
│
├── ui // 图形界面
│ └── gui.hpp // 负责展示实时渲染效果和实现交互
├── test // 测试
│ ├── test.cpp // 测试单元
│ └── test.h // 测试头文件
└── main.cpp // 入口文件