阴影映射通过渲染模型的光视角zbuffer来确定光的遮挡部分。结合阴影着色器和Phong着色器计算阴影,以实现更真实的渲染效果。需注意深度冲突问题和重心坐标计算。
本文介绍了TinyRenderer中的着色器实现,重点讲解了Gouraud着色器的实现过程,包括通过顶点法向量计算光照强度和在片段着色器中进行颜色插值。此外,讨论了法线贴图和高光贴图的应用,展示了不同着色方法(如平面、Gouraud和Phong着色)的效果,并提供了代码示例。
在三维空间中,坐标系的变换通过矩阵实现。给定原点和基底,可以将一个坐标系的点转换到另一个坐标系。模型视图矩阵和视口矩阵用于将场景渲染到屏幕上。法向量的变换需使用模型变换矩阵的逆转置。
前面渲染模型时候,没有考虑每个点的z坐标,这种方式叫做正交投影Orthographic projection,模型看起来偏胖,因为我们平时在3d世界看到的物体都是近大远小的。透视投影Perspective projection就是用近大远小的方式投影。 两种投影对比: 正交 透视 2维几何 线性变换Linear...
上一篇结尾渲染出了光照下的模型: 但是这个模型看起来有些奇怪,尤其是嘴巴的部分。因为渲染时候仅仅是按照从模型中读取的顶点信息,将三角形一个个的画了出来,但是并没有考虑三角形的遮挡关系。如果我们先画出了面部的三角形,然后又画了脑后勺的三角形,那最终展示出来的图形就会像上面一样很奇怪,原因是我们没有处理深度信息。 Y-buffer渲染模型是将3维映射到2维,先来考虑将2维映射到1维该怎么做。目...
这篇是自己学习tinyrenderer的笔记,不务正业系列。 tinyrenderer教程地址:https://github.com/ssloy/tinyrenderer/wiki 作者教程是用cpp实现的,我用rust来学,列一下用到的库: image - 这是个图片库,充当画布,控制每个像素的颜色,生成图片 obj-rs - 解析obj文件的库,关于obj文件可以看Wavefront...
完成下面两步后,将自动完成登录并继续当前操作。