学习Shader所需的数学基础
笛卡尔坐标系
三维笛卡尔坐标系
- 左手坐标系
- 右手坐标系
Unity使用的坐标系
- 模型空间 左手坐标系
- 世界空间 左手坐标系
- 观察空间 右手坐标系,摄像机前向是z轴的负方向。
坐标变换
- 模型空间变换到世界空间中,这个变换叫做模型变换。
- 世界空间变换的观察空间,这个变换叫做观察变换。
- 观察空间变换到裁剪空间(齐次剪切空间),这个变换的矩阵叫做裁剪矩阵,也被称为投影矩阵。
裁剪空间由视锥体决定
视锥体定义了场景内的一个坐标空间,只有空间内的物体会被渲染,Camera中的设置影响这个空间。
透视投影
FOV为视锥体纵向张开角度
Near决定近裁剪平面距离相机的距离
Far决定远裁剪平面距离相机的距离
Viewport Rect中的W,H属性共同决定纵横比
变换后若一点在空间内,则:
-w <= x <= w
-w <= y <= w
-w <= z <= w
正交投影
Size决定视锥体竖直方向上高度的一半
Near决定近裁剪平面距离相机的距离
Far决定远裁剪平面距离相机的距离
- 视锥体投影到屏幕空间中,我们便会的得到真正的像素位置,而不是虚拟的三维坐标
我们需要先进行齐次除法:用w分量去处理x,y,z分量,得到归一化的设备坐标。
这章的内容比较广泛,并且设计很多数学知识,我不知道怎么来写这章的笔记,但是这章真的很重要,并且可能会回头查阅这章,我贴出作者发布在github上的第四章pdf档的地址,自习阅读原书对之后学习帮助很大:
《Unity Shader入门精要》第四章