700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > unity shader入门精要_shader入门数学基础矩阵篇

unity shader入门精要_shader入门数学基础矩阵篇

时间:2019-05-04 09:23:59

相关推荐

unity shader入门精要_shader入门数学基础矩阵篇

一,简单介绍下几个概念。

1)线性空间:

实际上就是向量空间,一切的计算都是合理且符合数学规律的。例如在线性空间中1+1 = 2。在非线性空间中,1+1=0.7。这个例子很好解释了线性空间的概念。Gama空间就是典型的非线性空间,这里主要讨论矩阵,就不展开分析了。

2)矩阵和向量的本质:

向量的本质是物体(长宽高朝向之类的),矩阵的本质是物体的运动。基本上所有矩阵的运算,都是在对物体做运动。(这个物体是广义上的,包括坐标啊之类的,模型空间坐标到裁剪空间坐标的变换也看做是一种运动)。

二,矩阵与向量的结合

向量可以看成是nX1的列矩阵和1Xn的行矩阵。

三,矩阵运算

1,与常数相乘

公式见下图(知乎找了半天打不了矩阵orz)

2,矩阵与矩阵相乘

1)设A为rXn,B为nXl

也就是说,只有A的列数 ==B 的行数,才能相乘。

2)公式法(冗长的公式,我一般不用,这里只是理性列出来)

这个公式的意思就是,

中每一个元素 等于 的 行与 的 列的点积。

3)向量法(实际上和公式法本质一样,但是我感觉直观多了)

意思是把矩阵的行列,当作向量来看,从而直接写出点积。举个栗子。

可以看出来,左边矩阵的行是向量,右边矩阵列是向量。最终结果就是这两种向量的点积。最终矩阵的结果可以看出规律,行上面行不变列变,列上面列不变行遍。

然后就把点积算出来就行了。

手动算矩阵很累,一般来说在unity中,有提供的矩阵可以用,程序也可以自动帮助运算矩阵。

3,转置

转置的英文是:transpose 所以转置矩阵用上标

来表示。

举个栗子,顺便用ps告诉你,转置对矩阵进行了什么操作。

反折+旋转,就可以得到转置矩阵了。

重要性质:

1)矩阵转置的转置等于原矩阵:

2)矩阵相乘(也叫串接)的转置,等于矩阵反向相乘(反响串接)各个矩阵的转置:

4,逆矩阵

不是所有矩阵都有逆矩阵,必须满足下列条件

1)必须是方阵(行列数一样)

2)行列式不为0,非奇异矩阵

入门精要中并没有讨论如何手动求逆,据说是十分复杂,那在这里我们也不必去讨论了,真要是求逆,程序提供的算法会帮我们自动完成。

重要性质:

1)

矩阵和它的逆矩阵相乘等于单位矩阵

2)

矩阵逆矩阵的逆矩阵等于它本身

3)

单位矩阵的逆矩阵等于单位矩阵本身

4)

矩阵转置取逆等于矩阵取逆的转置

5)

矩阵相乘的取逆,等于矩阵反向相乘各个矩阵的取逆

6)有向量

。我们利用矩阵 对 进行一次变换,用 再进行一次变换,就会得到原来的向量 。( 是单位矩阵)

运算率:

1)*

(矩阵分左右乘,左右结果是不一样的)

2)结合律 :

3)分配律(分左右两部分):

4)和常数相乘:

5,特殊矩阵

方阵(行列数都相等的矩阵)

1) 逆矩阵(上文已经提到,逆矩阵属于方阵下面的子集)

2) 对角矩阵

一个矩阵如果除了对角线之外,其他元素都为0,那么我们称这个矩阵为对角矩阵

(1)普通对角矩阵

(2)单位矩阵

(对角线的元素都为1,其他元素都为0)

单位矩阵就是矩阵界的“1”。它的性质和地位都和常数里的“1”类似。比如任何矩阵和单位矩阵相乘都等于这个矩阵本身。

3)正交矩阵

如果

,那么我们就说这是一个正交矩阵。

公式一般都会看的一脸懵逼,但是举个栗子就懂了。

在正交矩阵中,向量

, , 是单位向量并且相互垂直。

正交矩阵还有一个很重要的性质是:

也就是说,正交矩阵的转置 ==它的逆矩阵。

这个有啥用呢?首先明确一下,在计算机运算中,求逆的运算量远远大于转置,shader因为是游戏中需要实时跑的东西,对性能的要求极高。所以,在shader计算中,能用转置就别求逆。一旦你确定你的矩阵是个正交矩阵,你又需要用它的逆矩阵,那么,对这个矩阵转置即可。省了很多性能,并且结果一致。

矩阵的东西目前就记录到这里,比较浅显(以后有需要了再深入)。下一篇讲一讲渲染流程和unity内置矩阵的应用。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。