unity shader入门精要_shader入门数学基础向量篇(非常新手向)

本文介绍了Unity Shader入门中的向量基础知识,包括向量的定义、加减乘除运算、向量的模、单位向量、点积和叉积的概念及应用场景,为理解3D图形计算和Shader编程打下基础。
摘要由CSDN通过智能技术生成

102c1e674746d75ca22dc6fea9323b18.png

最近在读《unity shader 入门精要》里面有些关于shader数学基础的。姑且做一下笔记和总结。

一,向量

这个东西非常非常牛皮。在三维图形计算中,我们的根本需求无非三点:

1)位置(坐标)。

2)方向(比如光照方向啊,模型朝向啊)。

3)长度(有长度就有体积,有体积就有肉体啊阴影啊之类的,总之就你想要啥就有啥)。

向量这个概念,从代数的层面整合了图形所需要的全部关键信息,可以看作是代码-->图像的,完美的桥梁。

二,向量运算

1,加减乘除

这个东西最屌的在于它的几何意义。

乘除的几何意义非常简单,就是scale缩放。加减法的几何意义在我看来是更有用的。

a2413926540c56fb82e3d96e80e6da0d.png

用处就多了,比如你的角色从一个地方移动到另一个地方,这个角色身上的全部的vertex坐标都会移动,新的坐标就是利用最原始的向量的加减法得到的。换句话说,你想知道一个点相对于另一个点的位移,就需要用到向量加减法。

2,向量的模(就是向量长度)

3D渲染中,一个三角面是基本单位,这个三角面的大小,就是通过向量模来获得的。非常有用。

3,单位向量(归一化)

指的是把向量变成模为1的向量。这个也超级有用。在shader计算中,很多向量最终都需要归一化处理(因为很多计算比如点积,只需要方向不需要长度)

unity中一般是这个函数normalize()来获得向量的单位向量。

4,点积

27d745ba317ba3514760f60d00c67907.png

可以看到,点积的结果变成了一个非坐标的常量。这个常量代表的意义是:向量b在a方向上的投影的长度。

运算律:

1)交换律:

2)结合律:

3)分配律:

点积属于在shader计算中,超级大量运用的东西。一般在unity中都是dot(x,y)来计算点积。

5,叉积

这个东西比较抽象了。但是用途非常广泛。先说公式运算率,最后捋一下用途。

几何意义:

9f4908aba7cf758cc2aa071e46ec966d.png

垂直于a,b的向量。

重要性质:

如果

,则a和b的夹角小于90°。

如果

,则a和b的夹角等于90°,a和b垂直。

如果

,则a和b的夹角大于90°。

这个性质可以判断a和b的方向关系。

运算率:

1)反交换律:

2)分配律加法:

3)雅可比恒等式:

用途:

1,判断三角形顺逆

2,判断折线拐向(光)

3,判断一个点在一条直线的哪一侧(或者点在是否在线段上)

4,判断两条直线是否相交

*说一下叉乘运算那个冗长的式子该如何记。

在unity中,叉乘都是直接cross()的,其实不需要记住公式,但是记一下公式总是没坏处。这里只陈述下我自己的方法,野路子……博君一笑。

=

第一个被减数a,是y-z-x的顺序

=

第一个b ,是z-x-y的顺序,为第一个a的顺序错后一位

=

再看减数,第一个a,是z-x-y的顺序(逆序)

=

减数b的顺序,是y-z-x的顺序。(和第一个被减数a的脚标顺序是一样的)

利用这个方法,直接摆积木一样就可以搞定这个超长的公式了。关键点是记住脚标的规律。

这一篇先预热下,下一篇重点说一下矩阵的基础知识和unity中的应用。矩阵和向量一样厉害。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值