《Unity Shader入门精要》第四章学习笔记

学习Shader所需要的数学基础

不懂数学者不得入内 -- 柏拉图学院碑文

  • 笛卡尔坐标系 二维坐标系:

《Unity Shader入门精要》第四章学习笔记

  • 三维坐标系:
    坐标轴,也被成为坐标系的基矢量,

**三维坐标系分为: **
左手系:顺时针旋转为正
右手系:逆时针旋转为正

左手系和右手系,不能通过旋转来经行转换。

  • Unity使用的坐标系: Unity 模型空间和世界空间使用左手系: right:+x up: +y forward: +z Unity 观察空间使用右手系
  • 矢量运算:

矢量加减法: a+b = (ax+bx,ay+by,az+bz) a-b = (ax-bx,ay-by,az-bz) 矢量点积(内积):a.b = (ax,ay,az).(bx,by,bz) = (axbx + ayby + azbz
a.b = |a||b|cos$ 点积的几何意义:b矢量在矢量a上的投影 矢量叉积(外积):axb = (ax,ay,az)x(bx,by,bz) = (aybz-azby,azbx-axbz,axby-aybx)

  • Matrix 转置矩阵 逆矩阵 正交矩阵: 一个方阵M和它的转置矩阵的成绩是单位矩阵,则该矩阵是正交矩阵,反之也成立。 正交矩阵的逆矩阵等于它的转置矩阵 《Unity Shader入门精要》第四章学习笔记

行矩阵、列矩阵表示矢量决定了矢量是左乘还是右乘。 Unity中,把矢量放在矩阵的右侧,即把矢量转换成列矩阵来计算,这意味着我们的矩阵通常都是右乘矢量,对于矢量则是:矢量左乘变换矩阵。 常规认为:列矩阵(openGL矩阵)叫左乘。

坐标系变换:

模型空间(Model space)也叫作对象空间、局部空间
 
世界空间
| 
观察空间(摄像机空间) 
| 
裁剪空间(clip space,也被称为齐次裁剪空间) 它使用的矩阵被叫做投影矩阵(包含正交投影矩阵和透视投影矩阵) 
|
透视除法

屏幕空间

《Unity Shader入门精要》第四章学习笔记

OpenGl的变换流程: 《Unity Shader入门精要》第四章学习笔记