總覽
這些函式會將輸入引數解讀為 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()。