跟shader的关系
因为这是在学习shader期间写的文章,我会将它和着色器联系起来。
在顶点着色器中,完成的主要工作是坐标变换和逐顶点光照,一般而言,片段着色器会在其后根据顶点进行插值得出每个片元的信息。
从模型空间到屏幕投影,这是顶点着色器所控制的主要过程。刚刚说到主要工作有二,坐标变换自不必说,即便是逐顶点光照,也需要用到顶点的切向量和法向量,而切向量和法向量,也需要进行相应的变换。
关于切向量、法向量变换和顶点变换之间的关系,在计算机图形学坐标变换博客的最后有详细介绍。本文主要讲述整个过程,以及对每个过程的理解,如果你对图形学有粗浅的了解,那么从模型空间一直到相机空间,你可能都比较熟悉。而这篇文章的重点,也会放在相机空间到齐次裁剪空间那一段。
过程简介
物体最开始处于模型空间,这是一个左手坐标系,坐标点由建模者给出;随后经过矩阵变换到世界空间,再转换到相机空间。上述过程通常在顶点着色器中串联成一个MVP矩阵,在图形学的实现中,我们更多可操控的地方在于模型空间到世界空间的转换,而关于世界空间到视线空间,我们往往只需要指定相机的位置,朝向,和一个相对相机向上的向量,这三个向量可以唯一确定相机的位置和状态。
相机空间到屏幕投影发生了什么?
终于到重点了。
首先我们知道相机空间是以相机为原点的一个右手坐标系,而屏幕投影则是一个二维平面,所以我们至少需要完成两件事。
1. 有哪些物体会出现到二维平面上(这叫裁剪)
2. 那些物体应该出现在二维平面的哪个位置&