概述
这些函数将输入参数解释为 n 维空间中向量的表示。
32 位浮点数学运算的精度受 pragmas rs_fp_relaxed 和 rs_fp_full 的影响。有关详细信息,请参阅数学常量和函数。
通过使用常见数学函数的变体,可以实现不同的精度/速度权衡。名称以以下开头的函数:
- native_:可能具有精度较弱的自定义硬件实现。此外,非正规值可能被刷新为零,可能使用向零舍入,且 NaN 和无穷大输入可能未得到正确处理。
- fast_:可能使用 16 位浮点进行内部计算。此外,非正规值可能被刷新为零,且可能使用向零舍入。
摘要
函数 | |
---|---|
cross | 两个向量的叉积 |
distance | 两点之间的距离 |
dot | 两个向量的点积 |
fast_distance | 两点之间的近似距离 |
fast_length | 向量的近似长度 |
fast_normalize | 近似归一化向量 |
length | 向量的长度 |
native_distance | 两点之间的近似距离 |
native_length | 向量的近似长度 |
native_normalize | 近似归一化向量 |
normalize | 归一化向量 |
函数
cross : 两个向量的叉积
float3 cross(float3 left_vector, float3 right_vector); | |
float4 cross(float4 left_vector, float4 right_vector); | |
half3 cross(half3 left_vector, half3 right_vector); | 添加于 API level 24 |
half4 cross(half4 left_vector, half4 right_vector); | 添加于 API level 24 |
计算两个向量的叉积。
distance : 两点之间的距离
float distance(float left_vector, float right_vector); | |
float distance(float2 left_vector, float2 right_vector); | |
float distance(float3 left_vector, float3 right_vector); | |
float distance(float4 left_vector, float4 right_vector); | |
half distance(half left_vector, half right_vector); | 添加于 API level 24 |
half distance(half2 left_vector, half2 right_vector); | 添加于 API level 24 |
half distance(half3 left_vector, half3 right_vector); | 添加于 API level 24 |
half distance(half4 left_vector, half4 right_vector); | 添加于 API level 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 level 24 |
half dot(half2 left_vector, half2 right_vector); | 添加于 API level 24 |
half dot(half3 left_vector, half3 right_vector); | 添加于 API level 24 |
half dot(half4 left_vector, half4 right_vector); | 添加于 API level 24 |
计算两个向量的点积。
fast_distance : 两点之间的近似距离
float fast_distance(float left_vector, float right_vector); | 添加于 API level 17 |
float fast_distance(float2 left_vector, float2 right_vector); | 添加于 API level 17 |
float fast_distance(float3 left_vector, float3 right_vector); | 添加于 API level 17 |
float fast_distance(float4 left_vector, float4 right_vector); | 添加于 API level 17 |
fast_length : 向量的近似长度
float fast_length(float v); | 添加于 API level 17 |
float fast_length(float2 v); | 添加于 API level 17 |
float fast_length(float3 v); | 添加于 API level 17 |
float fast_length(float4 v); | 添加于 API level 17 |
fast_normalize : 近似归一化向量
float fast_normalize(float v); | 添加于 API level 17 |
float2 fast_normalize(float2 v); | 添加于 API level 17 |
float3 fast_normalize(float3 v); | 添加于 API level 17 |
float4 fast_normalize(float4 v); | 添加于 API level 17 |
近似归一化向量。
对于大小为 1 的向量,负值返回 -1.f,空值返回 0.f,正值返回 1.f。
精度与使用 16 位浮点值进行计算时预期的精度一致。
另请参阅 normalize()、native_normalize()。
length : 向量的长度
float length(float v); | |
float length(float2 v); | |
float length(float3 v); | |
float length(float4 v); | |
half length(half v); | 添加于 API level 24 |
half2 length(half2 v); | 添加于 API level 24 |
half3 length(half3 v); | 添加于 API level 24 |
half4 length(half4 v); | 添加于 API level 24 |
计算向量的长度。
另请参阅 fast_length()、native_length()。
native_distance : 两点之间的近似距离
float native_distance(float left_vector, float right_vector); | 添加于 API level 21 |
float native_distance(float2 left_vector, float2 right_vector); | 添加于 API level 21 |
float native_distance(float3 left_vector, float3 right_vector); | 添加于 API level 21 |
float native_distance(float4 left_vector, float4 right_vector); | 添加于 API level 21 |
half native_distance(half left_vector, half right_vector); | 添加于 API level 24 |
half2 native_distance(half2 left_vector, half2 right_vector); | 添加于 API level 24 |
half3 native_distance(half3 left_vector, half3 right_vector); | 添加于 API level 24 |
half4 native_distance(half4 left_vector, half4 right_vector); | 添加于 API level 24 |
计算两点之间的近似距离。
另请参阅 distance()、fast_distance()。
native_length : 向量的近似长度
float native_length(float v); | 添加于 API level 21 |
float native_length(float2 v); | 添加于 API level 21 |
float native_length(float3 v); | 添加于 API level 21 |
float native_length(float4 v); | 添加于 API level 21 |
half native_length(half v); | 添加于 API level 24 |
half2 native_length(half2 v); | 添加于 API level 24 |
half3 native_length(half3 v); | 添加于 API level 24 |
half4 native_length(half4 v); | 添加于 API level 24 |
计算向量的近似长度。
另请参阅 length()、fast_length()。
native_normalize : 近似归一化向量
float native_normalize(float v); | 添加于 API level 21 |
float2 native_normalize(float2 v); | 添加于 API level 21 |
float3 native_normalize(float3 v); | 添加于 API level 21 |
float4 native_normalize(float4 v); | 添加于 API level 21 |
half native_normalize(half v); | 添加于 API level 24 |
half2 native_normalize(half2 v); | 添加于 API level 24 |
half3 native_normalize(half3 v); | 添加于 API level 24 |
half4 native_normalize(half4 v); | 添加于 API level 24 |
近似归一化向量。
另请参阅 normalize()、fast_normalize()。
normalize : 归一化向量
float normalize(float v); | |
float2 normalize(float2 v); | |
float3 normalize(float3 v); | |
float4 normalize(float4 v); | |
half normalize(half v); | 添加于 API level 24 |
half2 normalize(half2 v); | 添加于 API level 24 |
half3 normalize(half3 v); | 添加于 API level 24 |
half4 normalize(half4 v); | 添加于 API level 24 |