Panoramica
Queste funzioni interpretano gli argomenti di input come rappresentazione di vettori nello spazio n-dimensionale.
La precisione delle operazioni matematiche su valori in virgola mobile a 32 bit è influenzata dai pragmas rs_fp_relaxed e rs_fp_full. Per maggiori dettagli, vedi Costanti e funzioni matematiche.
Utilizzando le varianti delle comuni funzioni matematiche, è possibile ottenere diversi compromessi in termini di precisione/velocità. Funzioni con un nome che inizia con
- native_: potrebbero avere implementazioni hardware personalizzate con una precisione più debole. Inoltre, i valori subnormali possono essere cancellati a zero, potrebbe essere utilizzato l'arrotondamento verso lo zero e l'input NAN e infinito potrebbe non essere gestito correttamente.
- fast_: può eseguire calcoli interni utilizzando valori in virgola mobile a 16 bit. Inoltre, i valori subnormali possono essere rimossi a zero ed è possibile utilizzare l'arrotondamento verso lo zero.
Riepilogo
Funzioni | |
---|---|
croce | Prodotto incrociato di due vettori |
distanza | Distanza tra due punti |
punto | Prodotto scalare di due vettori |
distanza_rapida | Distanza approssimativa tra due punti |
lunghezza_rapida | Lunghezza approssimativa di un vettore |
normalizzazione_rapida | Approssimativa del vettore normalizzato |
lunghezza | Lunghezza di un vettore |
distanza_nativa | Distanza approssimativa tra due punti |
lunghezza_nativa | Lunghezza approssimativa di un vettore |
normalizzazione_nativa | Normalizzare approssimativamente un vettore |
normalizzare | Normalizzare un vettore |
Funzioni
cross : prodotto incrociato di due vettori
float3 cross(float3 left_vector, float3 right_vector); | |
float4 cross(float4 left_vector, float4 right_vector); | |
half3 cross(half3 left_vector, half3 right_vector); | Aggiunto al livello API 24 |
half4 cross(half4 left_vector, half4 right_vector); | Aggiunto al livello API 24 |
Calcola il prodotto incrociato di due vettori.
distanza : distanza tra due punti
distanza in virgola mobile(float left_vector, float right_vector); | |
distanza in virgola mobile(float2 left_vector, float2 right_vector); | |
distanza in virgola mobile(float3 left_vector, float3 right_vector); | |
distanza in virgola mobile(float4 left_vector, float4 right_vector); | |
mezza distanza(mezza left_vector, mezza right_vector); | Aggiunto al livello API 24 |
mezza distanza(half2 left_vector, half2 right_vector); | Aggiunto al livello API 24 |
mezza distanza(half3 left_vector, half3 right_vector); | Aggiunto al livello API 24 |
mezza distanza(half4 left_vector, half4 right_vector); | Aggiunto al livello API 24 |
Calcola la distanza tra due punti.
Vedi anche fast_distance(), native_distance().
dot : prodotto scalare di due vettori
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); | Aggiunto al livello API 24 |
half dot(half2 left_vector, half2 right_vector); | Aggiunto al livello API 24 |
half dot(half3 left_vector, half3 right_vector); | Aggiunto al livello API 24 |
half dot(half4 left_vector, half4 right_vector); | Aggiunto al livello API 24 |
Calcola il prodotto scalare di due vettori.
fast_distance : distanza approssimativa tra due punti
float fast_distance(float left_vector, float right_vector); | Aggiunto al livello API 17 |
float fast_distance(float2 left_vector, float2 right_vector); | Aggiunto al livello API 17 |
float fast_distance(float3 left_vector, float3 right_vector); | Aggiunto al livello API 17 |
float fast_distance(float4 left_vector, float4 right_vector); | Aggiunto al livello API 17 |
Calcola la distanza approssimativa tra due punti.
La precisione è quella che ci si aspetta da un calcolo effettuato utilizzando valori in virgola mobile a 16 bit.
Vedi anche distance(), native_distance().
fast_length : lunghezza approssimativa di un vettore
float fast_length(float v); | Aggiunto al livello API 17 |
float fast_length(float2 v); | Aggiunto al livello API 17 |
float fast_length(float3 v); | Aggiunto al livello API 17 |
float fast_length(float4 v); | Aggiunto al livello API 17 |
Calcola la lunghezza approssimativa di un vettore.
La precisione è quella che ci si aspetta da un calcolo effettuato utilizzando valori in virgola mobile a 16 bit.
Vedi anche length(), native_length().
fast_normalize : vettore normalizzato approssimativo
float fast_normalize(float v); | Aggiunto al livello API 17 |
float2 fast_normalize(float2 v); | Aggiunto al livello API 17 |
float3 fast_normalize(float3 v); | Aggiunto al livello API 17 |
float4 fast_normalize(float4 v); | Aggiunto al livello API 17 |
Normalizza approssimativamente un vettore.
Per i vettori di dimensione 1, restituisce -1.f per i valori negativi, 0.f per i valori nulli e 1.f per i valori positivi.
La precisione è quella che ci si aspetta da un calcolo effettuato utilizzando valori in virgola mobile a 16 bit.
Vedi anche normalize(), native_normalize().
length : lunghezza di un vettore
lunghezza del numero in virgola mobile(float v); | |
lunghezza in virgola mobile(float2 v); | |
lunghezza in virgola mobile(float3 v); | |
lunghezza in virgola mobile(float4 v); | |
half length(half v); | Aggiunto al livello API 24 |
half length(half2 v); | Aggiunto al livello API 24 |
half length(half3 v); | Aggiunto al livello API 24 |
half length(half4 v); | Aggiunto al livello API 24 |
Calcola la lunghezza di un vettore.
Vedi anche le funzioni fast_length() e native_length().
native_distance : distanza approssimativa tra due punti
float native_distance(float left_vector, float right_vector); | Aggiunto al livello API 21 |
float native_distance(float2 left_vector, float2 right_vector); | Aggiunto al livello API 21 |
float native_distance(float3 left_vector, float3 right_vector); | Aggiunto al livello API 21 |
float native_distance(float4 left_vector, float4 right_vector); | Aggiunto al livello API 21 |
mezza native_distance(mezza vettore_sinistra, mezza vettore_destra); | Aggiunto al livello API 24 |
half native_distance(half2 left_vector, half2 right_vector); | Aggiunto al livello API 24 |
half native_distance(half3 left_vector, half3 right_vector); | Aggiunto al livello API 24 |
half native_distance(half4 left_vector, half4 right_vector); | Aggiunto al livello API 24 |
Calcola la distanza approssimativa tra due punti.
Vedi anche distance(), fast_distance().
native_length : lunghezza approssimativa di un vettore
float native_length(float v); | Aggiunto al livello API 21 |
float native_length(float2 v); | Aggiunto al livello API 21 |
float native_length(float3 v); | Aggiunto al livello API 21 |
float native_length(float4 v); | Aggiunto al livello API 21 |
half native_length(half v); | Aggiunto al livello API 24 |
half native_length(half2 v); | Aggiunto al livello API 24 |
half native_length(half3 v); | Aggiunto al livello API 24 |
half native_length(half4 v); | Aggiunto al livello API 24 |
Calcola la lunghezza approssimativa di un vettore.
Vedi anche length(), fast_length().
native_normalize : normalizza approssimativamente un vettore
float native_normalize(float v); | Aggiunto al livello API 21 |
float2 native_normalize(float2 v); | Aggiunto al livello API 21 |
float3 native_normalize(float3 v); | Aggiunto al livello API 21 |
float4 native_normalize(float4 v); | Aggiunto al livello API 21 |
half native_normalize(half v); | Aggiunto al livello API 24 |
half2 native_normalize(half2 v); | Aggiunto al livello API 24 |
half3 native_normalize(half3 v); | Aggiunto al livello API 24 |
half4 native_normalize(half4 v); | Aggiunto al livello API 24 |
Normalizza approssimativamente un vettore.
Vedi anche normalize(), fast_normalize().
normalize : normalizza un vettore
float normalize(float v); | |
float2 normalize(float2 v); | |
float3 normalize(float3 v); | |
float4 normalize(float4 v); | |
half normalize(half v); | Aggiunto al livello API 24 |
half2 normalize(half2 v); | Aggiunto al livello API 24 |
half3 normalize(half3 v); | Aggiunto al livello API 24 |
half4 normalize(half4 v); | Aggiunto al livello API 24 |
Normalizza un vettore.
Per i vettori di dimensione 1, restituisce -1.f per i valori negativi, 0.f per i valori nulli e 1.f per i valori positivi.
Vedi anche fast_normalize(), native_normalize().