Skip to content

lime20/Rasterizer-renderer

Repository files navigation

光栅渲染器

项目来源及依赖

  本项目源于课程作业,以实现如下功能:texture shader,Blinn-Phong,Bump Mapping,Displacement Mapping。

  为保障顺利运行需安装Eigen,OpenCV。若是使用Visual Studio 中NuGet 包管理器安装Eigen ,需修改部分代码。

工作流程

  1. 读取模型数据
  2. MVP变换
  3. 确认渲染模式
  4. 渲染
  5. 输出

注意事项

Z坐标插值修正

在本项目中,对像素投影回原坐标系的实现方法是采用一种近似处理,而非标准插值矫正。透视矫正插值看这里

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

normal shader

  • Blinn-Phong

Blinn-Phong

  • texture shader

texture shader

  • bump shader

bump shader

  • displacement shader

displacement shader

About

光栅化渲染器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages