Visão geral
Essas funções interpretam os argumentos de entrada como representação de vetores em um espaço de dimensão n.
A precisão das operações matemáticas em flutuações de 32 bits é afetada pelos pragmas rs_fp_relaxed e rs_fp_full. Consulte Constantes e funções matemáticas para mais detalhes.
Diferentes compensações de precisão/velocidade podem ser feitas usando variantes das funções matemáticas comuns. Funções com um nome que começa com
- native_: pode ter implementações de hardware personalizadas com precisão mais fraca. Além disso, valores subnormais podem ser desviados para zero, arredondamentos para zero podem ser usados e a entrada de NaN e infinito pode não ser tratada corretamente.
- fast_: pode realizar cálculos internos usando flutuações de 16 bits. Além disso, valores subnormais podem ser desviados para zero e arredondamentos até zero podem ser usados.
Resumo
| Funções | |
|---|---|
| cruz | Produto cruzado de dois vetores |
| distância | Distância entre dois pontos |
| ponto | Produto escalar de dois vetores |
| fast_distance | Distância aproximada entre dois pontos |
| fast_length (link em inglês) | Comprimento aproximado de um vetor |
| fast_normalize (link em inglês) | Vetor normalizado aproximado |
| tamanho | Comprimento de um vetor |
| native_distance | Distância aproximada entre dois pontos |
| native_length | Comprimento aproximado de um vetor |
| native_normalize (link em inglês) | Normalizar aproximadamente um vetor |
| normalizar | Normalizar um vetor |
Funções
cross : produto cruzado de dois vetores
| float3 cross(float3 left_vector, float3 right_vector); | |
| float4 cross(float4 left_vector, float4 right_vector); | |
| half3 cross(half3 left_vector, half3 right_vector); | Adicionado no nível 24 da API. |
| half4 cross(half4 left_vector, half4 right_vector); | Adicionado no nível 24 da API. |
Calcula o produto de dois vetores.
distance : distância entre dois pontos
| float distance(float left_vector, float right_vector); | |
| float distância(float2 left_vector, float2 right_vector); | |
| float distance(float3 left_vector, float3 right_vector); | |
| float distância(float4 left_vector, float4 right_vector); | |
| metade distância(metade vetor_esquerdo, meia direita_vetor); | Adicionado no nível 24 da API. |
| metade distância(half2 esquerda_vetor, half2 right_vector); | Adicionado no nível 24 da API. |
| half distance(half3 left_vector, half3 right_vector); | Adicionado no nível 24 da API. |
| metade distância(half4 esquerda_vetor, half4 right_vector); | Adicionado no nível 24 da API. |
Calcule a distância entre dois pontos.
Consulte também fast_distance(), native_distance().
ponto : produto escalar de dois vetores
| float ponto(float left_vector, float right_vector); | |
| ponto flutuante(float2 left_vector, float2 right_vector); | |
| ponto flutuante(float3 left_vector, float3 right_vector); | |
| ponto flutuante(float4 left_vector, float4 right_vector); | |
| half ponto(metade vetor_esquerdo, half right_vector); | Adicionado no nível 24 da API. |
| half ponto(half2 left_vector, half2 right_vector); | Adicionado no nível 24 da API. |
| half ponto(half3 left_vector, half3 right_vector); | Adicionado no nível 24 da API. |
| half ponto(half4 left_vector, half4 right_vector); | Adicionado no nível 24 da API. |
Calcula o produto escalar de dois vetores.
fast_distance : distância aproximada entre dois pontos
| float fast_distance(float left_vector, float right_vector); | Adicionado no nível 17 da API. |
| float fast_distance(float2 left_vector, float2 right_vector); | Adicionado no nível 17 da API. |
| float fast_distance(float3 left_vector, float3 right_vector); | Adicionado no nível 17 da API. |
| float fast_distance(float4 left_vector, float4 right_vector); | Adicionado no nível 17 da API. |
Calcula a distância aproximada entre dois pontos.
A precisão é o que esperaria do cálculo usando valores de ponto flutuante de 16 bits.
Consulte também distance(), native_distance().
fast_length : comprimento aproximado de um vetor
| float fast_length(float v); | Adicionado no nível 17 da API. |
| float fast_length(float2 v); | Adicionado no nível 17 da API. |
| float fast_length(float3 v); | Adicionado no nível 17 da API. |
| float fast_length(float4 v); | Adicionado no nível 17 da API. |
Calcula o comprimento aproximado de um vetor.
A precisão é o que esperaria do cálculo usando valores de ponto flutuante de 16 bits.
Consulte também length(), native_length().
fast_normalizar : vetor normalizado aproximado
| float fast_normal(float v); | Adicionado no nível 17 da API. |
| float2 fast_normalize(float2 v); | Adicionado no nível 17 da API. |
| float3 fast_normalize(float3 v); | Adicionado no nível 17 da API. |
| float4 fast_normalize(float4 v); | Adicionado no nível 17 da API. |
normaliza aproximadamente um vetor.
Para vetores de tamanho 1, retorna -1.f para valores negativos, 0.f para valores nulos e 1.f para valores positivos.
A precisão é o que esperaria do cálculo usando valores de ponto flutuante de 16 bits.
Consulte também normalizar() e native_normalize().
length : comprimento de um vetor
| float length(float v); | |
| float length(float2 v); | |
| float length(float3 v); | |
| float length(float4 v); | |
| half length(half v); | Adicionado no nível 24 da API. |
| half length(half2 v); | Adicionado no nível 24 da API. |
| half length(half3 v); | Adicionado no nível 24 da API. |
| half length(half4 v); | Adicionado no nível 24 da API. |
Calcula o comprimento de um vetor.
Consulte também fast_length(), native_length().
native_distance : distância aproximada entre dois pontos
| float native_distance(float left_vector, float right_vector); | Adicionado no nível 21 da API. |
| float native_distance(float2 left_vector, float2 right_vector); | Adicionado no nível 21 da API. |
| float native_distance(float3 left_vector, float3 right_vector); | Adicionado no nível 21 da API. |
| float native_distance(float4 left_vector, float4 right_vector); | Adicionado no nível 21 da API. |
| half native_distance(half left_vector, half right_vector); | Adicionado no nível 24 da API. |
| half native_distance(half2 left_vector, half2 right_vector); | Adicionado no nível 24 da API. |
| half native_distance(half3 left_vector, half3 right_vector); | Adicionado no nível 24 da API. |
| half native_distance(half4 left_vector, half4 right_vector); | Adicionado no nível 24 da API. |
Calcula a distância aproximada entre dois pontos.
Veja também distance(), fast_distance().
native_length : comprimento aproximado de um vetor
| float native_length(float v); | Adicionado no nível 21 da API. |
| float native_length(float2 v); | Adicionado no nível 21 da API. |
| float native_length(float3 v); | Adicionado no nível 21 da API. |
| float native_length(float4 v); | Adicionado no nível 21 da API. |
| half native_length(half v); | Adicionado no nível 24 da API. |
| half native_length(half2 v); | Adicionado no nível 24 da API. |
| half native_length(half3 v); | Adicionado no nível 24 da API. |
| half native_length(half4 v); | Adicionado no nível 24 da API. |
Calcular o comprimento aproximado de um vetor.
Consulte também length(), fast_length().
native_Normal : normaliza aproximadamente um vetor
| float native_normalize(float v); | Adicionado no nível 21 da API. |
| float2 native_normalize(float2 v); | Adicionado no nível 21 da API. |
| float3 native_normalize(float3 v); | Adicionado no nível 21 da API. |
| float4 native_normalize(float4 v); | Adicionado no nível 21 da API. |
| half native_normalize(half v); | Adicionado no nível 24 da API. |
| half2 native_normalize(half2 v); | Adicionado no nível 24 da API. |
| half3 native_normalize(half3 v); | Adicionado no nível 24 da API. |
| half4 native_normalize(half4 v); | Adicionado no nível 24 da API. |
normaliza aproximadamente um vetor.
Consulte também normal() e fast_normalize().
normalizar : normalizar um vetor
| float normalize(float v); | |
| float2 normalizar(float2 v); | |
| float3 normalizar(float3 v); | |
| float4 normalizar(float4 v); | |
| half normalize(half v); | Adicionado no nível 24 da API. |
| half2 normalize(half2 v); | Adicionado no nível 24 da API. |
| half3 normalize(half3 v); | Adicionado no nível 24 da API. |
| half4 normalize(half4 v); | Adicionado no nível 24 da API. |
Normalizar um vetor.
Para vetores de tamanho 1, retorna -1.f para valores negativos, 0.f para valores nulos e 1.f para valores positivos.
Consulte também fast_normalize(), native_normalize().