本项目是一个基于c++编写的软光栅化渲染器,除了使用stb_image进行贴图加载和qt进行界面展示无其他任何依赖,使用MVVM框架,通过数据绑定机制,将view和model部分相互关联的数据同步起来,有效分离UI层和逻辑层。本项目的MVVM的基本结构图为:
基本的UI布局
- 透视插值校正
- 背向面剔除
- 视锥剔除
- Sutherland Hodgeman齐次裁剪
- 深度测试
- 线框模型
- 切线空间的法线贴图
- 天空盒
- FPS相机
- Blinn-Phong光照模型
- Gouraud光照模型
- 基于微表面理论的PBR光照模型
- 常规光源:点光源、方向光、聚光灯
- ACES ToneMapping
渲染管线:
- forward pipeline
- deferred pipeline
三种光源(点光源、方向光、聚光灯)【使用Blinn-Phong模型和切线空间的法线贴图】:
线框模式:
天空盒测试:
PBR材质
deferred shading G-buffer
irradiance生成
- 按住鼠标左键并拖动改变相机的Pitch和Raw以实现旋转
- 滚动鼠标滚轮切换相机Zoom大小
- WASDQE:相机位置的前后左右和上下移动
- GAMES101
- GAMES104
- SRenderer
- TinySoftRenderer