一个软件光栅化渲染器。寒假在家自学计算机图形学时利用所学知识写的一个渲染器。
- 支持使用json格式定义场景、相机、灯光等参数。
- 支持obj格式模型,支持ppm格式图片贴图,采用双线性过滤,使用平铺纹理坐标寻址。
- 渲染结果输出为ppm图片格式
- 支持方向光和点光源两种光源
- 采用Z-Buffer保证渲染正确的顺序,支持背面消影和三角形剔除(
未实现三角形裁剪)
请确认您已经安装了make和支持C++11的C++编译器(默认使用g++,可以在Makefile修改)
- 下载.zip或是git clone把代码下载下来。
- 进入Src目录,使用make命令进行构建,构建成功后可以使用make clean把编译过程中的.o文件删除。
./Aurora [json场景文件]
Example:
./Aurora ../Example/bunny/bunny.json
{
"width" : 1920, 宽
"height" : 1080, 高
"camera" :{ 相机参数
"position" : [0.800000, 0.800000, 0.800000], 位置
"u" : [0.707106, -0.707106, 0], 右向量
"v" : [-0.408248, -0.408248, 0.816496], 上向量
"n" : [-0.577349, -0.577349, -0.577349], 前向量
"fov" : 80, 视角
"near" : 0.1, 近裁剪面
"far" : 1000 远裁剪面
},
"object" :[ 模型参数
{
"path" : "cube.obj", obj文件目录
"position" : [0.000000, 0.000000, 0.000000], 位置
"u" : [1, 0, 0], 同相机
"v" : [0, 1, 0],
"n" : [0, 0, 1]
}
],
"light" :[ 光源参数
{
"type" : "DirectLight", 方向光
"direction" : [-0.267261, -0.534522, -0.801784],方向
"color" : [1, 1, 1] 颜色
},
{
"type" : "PointLight", 点光源
"position" : [1, 1, 1], 位置
"color" : [0.5, 0.5, 0.5] 颜色
}
]
}
nlohmann/json的json库提供json解析功能