本项目源于课程作业,以实现如下功能:texture shader,Blinn-Phong,Bump Mapping,Displacement Mapping。
为保障顺利运行需安装Eigen,OpenCV。若是使用Visual Studio 中NuGet 包管理器安装Eigen ,需修改部分代码。
- 读取模型数据
- MVP变换
- 确认渲染模式
- 渲染
- 输出
在本项目中,对像素投影回原坐标系的实现方法是采用一种近似处理,而非标准插值矫正。透视矫正插值看这里
float zp = alpha * v[0].z() / v[0].w() + beta * v[1].z() / v[1].w() + gamma * v[2].z() / v[2].w();
本系统采用右手系,相机方法朝向-Z方向,故未取倒数。
使用代码中的 texture shader
./Rasterizer output.png texture
使用代码中的 normal shader.
./Rasterizer output.png normal
使用代码中的 blinn-phong shader.
./Rasterizer output.png phong
使用代码中的 bump shader.
./Rasterizer output.png bump
使用代码中的 displacement shader.
./Rasterizer output.png displacement
若是使用VS 中NuGet工具添加 Eigen 库,需进行如下操作:
原:#include <eigen3/Eigen/Eigen>
改:#include <Eigen/Eigen>
- normal shader
- Blinn-Phong
- texture shader
- bump shader
- displacement shader