这次通过学习这个repository的内容,自己也实现了一个迷你渲染器。
实现的结果如下:
本次复现主要的收获是渲染器实现的工作原理,并且在实现过程中将Cpp也巩固了一番。
- 《tiny render》文件夹中《Lesson 1~Lesson 8》是在学习博客中写的。
- 《tiny render》文件夹中《Final render》是最后自己实现的。
我决定将这个过程中学习到的新东西,分享给大家。
学习的知识分为2种,一个是渲染器的原理,我将它归类为原理篇;
在这个实现的过程中,会将其中的c++的知识总结归纳出来,我将其归类为语法篇。
我首先对每篇教程进行了全文翻译,唯二的区别是博客里的图片都是我自己实现后跑出来的;为了大家可以全局地理解,我会加上每一章对应的小总结。
学习原理的过程中,很多知识点也搞不清楚,自己也google了很多的外部资料,其中很多的解惑都来自于这个网站。
原理篇的博客主要分为——
- Bresenham直线生成算法和线框渲染和Lesson 1 小总结
- 三角形栅格化和后向面剔除和Lesson 2 小总结
- 隐藏面移除(z缓冲区)和Lesson 3 小总结
- 透视投影和Lesson 4 小总结
- 移动的相机和Lesson 5 小总结
- 软件渲染器的着色器和Lesson 6 小总结
- TGA文件的读取及编码
- .OBJ文件的理解
- 双切线空间法线贴图和Lesson 6 小总结
- 阴影贴图和Lesson 7 小总结
- 环境光遮蔽
- 具有透视变形的线性插值技术难点
- 实现渲染器的易错点
语法篇的博客文章在这里
- size_t,this指针,初始化列表以及操作符重载
- 文件处理及TGA文件的使用
- vector的使用
- template模板的使用
- new,delete的使用
- int argc, char *argv[]的意义
当然,大家有任何问题都可以与我联系。
我的邮箱:
Outlook: [email protected]
Gmail: [email protected]