總覽
這些函式會將輸入引數解讀為 N 維空間中的向量表示法。
32 位元浮點數的數學運算的精確度會受到 pragmas rs_fp_relaxed 和 rs_fp_full 影響。詳情請參閱數學常數和函式。
使用常見數學函式的變體,即可達成不同的精確度/速度的取捨。名稱開頭為
- native_:可能採用精確度較低的自訂硬體實作。此外,子常值可能會完全清除至零,使用四捨五入為零,且無法正確處理 NaN 和無限輸入的資料。
- 快速_:可能會使用 16 位元浮點值執行內部運算。此外,子常態值可清除至零,也可以使用捨入為零。
摘要
| 函式 | |
|---|---|
| cross | 兩個向量的交叉乘積 |
| 距離 | 兩點之間的距離 |
| 點 | 兩個向量的點積 |
| Fast_distance | 兩點之間的概略距離 |
| Fast_length | 向量的約略長度 |
| Fast_normalize | 近似正規化向量 |
| length | 向量長度 |
| native_distance | 兩點之間的概略距離 |
| native_length | 向量的約略長度 |
| native_normalize | 對向量進行大致正規化處理 |
| 正規化 | 將向量正規化 |
函式
cross :兩個向量的交叉乘積
| float3 cross(float3 left_vector, float3 right_vector); | |
| float4 cross(float4 left_vector, float4 right_vector); | |
| half3 Cross(half3 left_vector, half3right_vector); | 已在 API 級別 24 中新增。 |
| half4 Cross(half4 left_vector, half4right_vector); | 已在 API 級別 24 中新增。 |
計算兩個向量的外積。
distance :兩點之間的距離
| floatDistance(float left_vector, float right_vector); | |
| floatDistance(float2 left_vector, float2right_vector); | |
| floatDistance(float3 left_vector, float3 right_vector); | |
| floatDistance(float4 left_vector, float4right_vector); | |
| halfDistance(half left_vector, halfright_vector); | 已在 API 級別 24 中新增。 |
| halfDistance(half2 left_vector, half2right_vector); | 已在 API 級別 24 中新增。 |
| halfDistance(half3 left_vector, half3right_vector); | 已在 API 級別 24 中新增。 |
| halfDistance(half4 left_vector, half4right_vector); | 已在 API 級別 24 中新增。 |
計算兩點之間的距離。
另請參閱 fast_distance()、native_distance()。
dot :兩個向量的點積
| float dot(float left_vector, float right_vector); | |
| float dot(float2 left_vector, float2 right_vector); | |
| float dot(float3 left_vector, float3 right_vector); | |
| float dot(float4 left_vector, float4 right_vector); | |
| half dot(half left_vector, half right_vector); | 已在 API 級別 24 中新增。 |
| half dot(half2 left_vector, half2 right_vector); | 已在 API 級別 24 中新增。 |
| half dot(half3 left_vector, half3 right_vector); | 已在 API 級別 24 中新增。 |
| half dot(half4 left_vector, half4 right_vector); | 已在 API 級別 24 中新增。 |
計算兩個向量的內積。
Fast_distance :兩點之間的概略距離
| float Express_distance(float left_vector, float right_vector); | 已在 API 級別 17 中新增。 |
| floatFast_distance(float2 left_vector, float2right_vector); | 已在 API 級別 17 中新增。 |
| floatFast_distance(float3 left_vector, float3right_vector); | 已在 API 級別 17 中新增。 |
| float Quick_distance(float4 left_vector, float4right_vector); | 已在 API 級別 17 中新增。 |
Fast_length :向量的約略長度
Fast_normalize :近似正規化向量
| float Express_normalize(float v); | 已在 API 級別 17 中新增。 |
| float2Fast_normalize(float2 v); | 已在 API 級別 17 中新增。 |
| float3Fast_normalize(float3 v); | 已在 API 級別 17 中新增。 |
| float4Fast_normalize(float4 v); | 已在 API 級別 17 中新增。 |
大致將向量正規化。
針對大小為 1 的向量,系統會傳回 -1.f 代表負值,傳回 0.f 代表空值,再傳回 1.f 代表正值。
精確度指的是使用 16 位元浮點值進行計算。
另請參閱 正規化()、native_normalize()。
length :向量長度
| 浮點長度(float v); | |
| 浮點長度(float2 v); | |
| 浮點長度(float3 v); | |
| 浮點長度(float4 v); | |
| half length(half v); | 已在 API 級別 24 中新增。 |
| half length(half2 v); | 已在 API 級別 24 中新增。 |
| half length(half3 v); | 已在 API 級別 24 中新增。 |
| half length(half4 v); | 已在 API 級別 24 中新增。 |
計算向量的長度。
另請參閱 fast_length()、native_length()。
native_distance :兩點之間的概略距離
| float native_distance(float left_vector, float right_vector); | 已在 API 級別 21 中新增。 |
| float native_distance(float2 left_vector, float2 right_vector); | 已在 API 級別 21 中新增。 |
| float native_distance(float3 left_vector, float3 right_vector); | 已在 API 級別 21 中新增。 |
| float native_distance(float4 left_vector, float4 right_vector); | 已在 API 級別 21 中新增。 |
| half native_distance(half left_vector, half right_vector); | 已在 API 級別 24 中新增。 |
| half native_distance(half2 left_vector, half2 right_vector); | 已在 API 級別 24 中新增。 |
| half native_distance(half3 left_vector, half3 right_vector); | 已在 API 級別 24 中新增。 |
| half native_distance(half4 left_vector, half4 right_vector); | 已在 API 級別 24 中新增。 |
計算兩點之間的近距離。
另請參閱 distance(), fast_distance()。
native_length :向量的約略長度
| float native_length(float v); | 已在 API 級別 21 中新增。 |
| float native_length(float2 v); | 已在 API 級別 21 中新增。 |
| float native_length(float3 v); | 已在 API 級別 21 中新增。 |
| float native_length(float4 v); | 已在 API 級別 21 中新增。 |
| half native_length(half v); | 已在 API 級別 24 中新增。 |
| half native_length(half2 v); | 已在 API 級別 24 中新增。 |
| half native_length(half3 v); | 已在 API 級別 24 中新增。 |
| half native_length(half4 v); | 已在 API 級別 24 中新增。 |
計算向量的約略長度。
另請參閱 length()、fast_length()。
native_normalize :將向量正規化
| float native_normalize(float v); | 已在 API 級別 21 中新增。 |
| float2 native_normalize(float2 v); | 已在 API 級別 21 中新增。 |
| float3 native_normalize(float3 v); | 已在 API 級別 21 中新增。 |
| float4 native_normalize(float4 v); | 已在 API 級別 21 中新增。 |
| half native_normalize(half v); | 已在 API 級別 24 中新增。 |
| half2 native_normalize(half2 v); | 已在 API 級別 24 中新增。 |
| half3 native_normalize(half3 v); | 已在 API 級別 24 中新增。 |
| half4 native_normalize(half4 v); | 已在 API 級別 24 中新增。 |
大致將向量正規化。
另請參閱 正規化()、fast_normalize()。
正規化 :將向量正規化
| float microize(float v); | |
| float2 正規化(float2 v); | |
| float3 正規化(float3 v); | |
| float4 正規化(float4 v); | |
| half 正規化(half v); | 已在 API 級別 24 中新增。 |
| half2 正規化(half2 v); | 已在 API 級別 24 中新增。 |
| half3 正規化(half3 v); | 已在 API 級別 24 中新增。 |
| half4 正規化(half4 v); | 已在 API 級別 24 中新增。 |
將向量正規化。
針對大小為 1 的向量,系統會傳回 -1.f 代表負值,傳回 0.f 代表空值,再傳回 1.f 代表正值。
另請參閱 fast_normalize()、native_normalize()。