Unity Shader數學基礎

2021-09-29 09:06:29 字數 1324 閱讀 1236

叉積向量也被叫做向量,是指乙個包含了模長和方向的

有向線段標量是只有模沒有方向。

向量和標量的區別

向量表達的是,從這裡向東走500公尺

標量表達的則是,距離這裡500公尺

向量的模指的是這個是向量的長度。乙個模的長度可以是任意的非負數

kv=(kvx,kvykvz)

即:5(1,2,3)=(51,52,5*3)=(5,10,15)

//向量乘法向量和標量可以互換

v/k=((vx,vy,vz)/k)=(vx/k,vy/k,vz/k)

即:(1,2,3)/5=(1/5,2/5,3/5)=(0.2,0.4,0.6)

//只能向量除標量 標量除向量沒有意義

a+b=(ax+bx,ay+by,az+bz)

a-b=(ax-bx,ay-by,az-bz)

減法:可用於計算位移

加法:計算向量a的尾到向量b的頭的乙個新的向量

向量的模長=|a|=√(ax

2+ay

2+az

2)即;

(1,2,3)=√(12+22+32)=√14≈3.741

單位向量指的是模長為1的向量,單位向量也被稱為歸一化向量對給定任何的非0向量,將其轉化成單位向量的過程就被稱為歸一化

單位向量=v/|v|=(ax+ay+az)/√(ax

2+ay

2+az

2)即:

(3,-4)/|(3,-4)|=(3,-4)/√(32+(-4)2)=(3,-4)/√25=(3,-4)/5=(3/5,-4/5)=(0.6,0.8)

向量之間也可以進行乘法,但是和標量的乘法有很大不同,向量的乘法有兩種最常見的種類點積和叉積

點積也被稱為內積

叉積也被稱為外積

公式一:

kv=(kx,ky,kz)*(vx, vy,vz)=kx*vx +ky*vy+kz*vz

在幾何上可以用於求一條線到另一條線的陰影(投影)

公式二:

kv=|k||v|cosθ

\theta

θ可以用於求兩條線的角度

公式二求導:

因為c2=a2+b2+2|a||b|cosθ

\theta

θ兩點間距離為a-b

即c2=(a-b)(a-b)=aa+bb-2ab

對比得到公式二

公式一:

kv=(ky*vz-kz*vy,kz*vx-kx*vz,kx*vy-ky*vx)

叉積的結果可以得到乙個同時垂直於這兩個向量的新向量(新向量的正負值可以用於計算正反面)

公式二:

kv=|k||v|sinθ

\theta

θ

UnityShader中的數學(矩陣)

ps 本文章摘取自 unityshader入門精要 一書。unity matrix mvp 把模型空間座標轉換為裁剪空間座標 unity matrix mv 把模型空間座標轉換為觀察空間座標 unity matrix v 把世界空間座標轉換為觀察空間座標 unity matrix p 把觀察空間座標...

unity Shader基礎光照

一 光 1 輻射度 用來量化光。對於平行光來說,輻射度可以通過計算在垂直於l的單位面積上單位時間內穿過的能量來得到。2 散射和吸收 光線和物體相交會發生的現象。散射 只改變光線的方向,不改變光線的密度和顏色。散射後兩個方向 折射和反射。在關照模型中,高光反射部分體現反射,漫反射部分體現折射 吸收 只...

Unity Shader (六)基礎光照

一 輻照度 q1.如何量化光?a 用輻照度irradiance。q2 什麼是輻照度?圖中a點單位時間內穿過的能量就是輻照度。q2 怎麼計算輻照度呢?上圖中cos 值就是輻照度。0 時,cos 1,也就是說光線垂直於物體表面時,輻照度最大。越大,表示光線越不垂直,輻照度越小。二 吸收和散射 學過基礎光...