rs_vector_math.rsh revision 20b27d602a4778ed50a83df2147416a35b7c92be
1be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 2be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Copyright (C) 2015 The Android Open Source Project 3be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 4be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Licensed under the Apache License, Version 2.0 (the "License"); 5be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * you may not use this file except in compliance with the License. 6be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * You may obtain a copy of the License at 7be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 8be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * http://www.apache.org/licenses/LICENSE-2.0 9be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 10be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Unless required by applicable law or agreed to in writing, software 11be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * distributed under the License is distributed on an "AS IS" BASIS, 12be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See the License for the specific language governing permissions and 14be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * limitations under the License. 15be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 16be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 174a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet// Don't edit this file! It is auto-generated by frameworks/rs/api/generate.sh. 18be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 19be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 2020b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * rs_vector_math.rsh: Vector Math Functions 2120b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * 2220b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * These functions interpret the input arguments as representation of vectors in n-dimensional space. 2320b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * 2420b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * The precision of the mathematical operations is affected by the pragmas 2520b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * rs_fp_relaxed and rs_fp_full. 2620b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * 2720b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * Different precision/speed tradeoffs can be achieved by using three variants 2820b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * of common math functions. Functions with a name starting with 2920b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * - native_ may have custom hardware implementations with weaker precision, 3020b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * - half_ may perform internal computations using 16 bit floats, and 3120b27d602a4778ed50a83df2147416a35b7c92beJean-Luc Brouillet * - fast_ are n-dimensional space computations that may use 16 bit floats. 32be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 33be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 344a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet 35be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#ifndef RENDERSCRIPT_RS_VECTOR_MATH_RSH 36be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define RENDERSCRIPT_RS_VECTOR_MATH_RSH 37be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 38be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 39be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * cross: Cross product of two vectors 40be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 41be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the cross product of two vectors. 42be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 43be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 44be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet cross(float3 left_vector, float3 right_vector); 45be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 46be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 47be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet cross(float4 left_vector, float4 right_vector); 48be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 49be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 50be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * distance: Distance between two points 51be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 52be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Compute the distance between two points. 53be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 54be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also fast_distance(), native_distance(). 55be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 56be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 57be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float left_vector, float right_vector); 58be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 59be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 60be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float2 left_vector, float2 right_vector); 61be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 62be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 63be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float3 left_vector, float3 right_vector); 64be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 65be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 66be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float4 left_vector, float4 right_vector); 67be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 68be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 69be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * dot: Dot product of two vectors 70be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 71be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the dot product of two vectors. 72be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 73be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 74be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float left_vector, float right_vector); 75be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 76be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 77be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float2 left_vector, float2 right_vector); 78be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 79be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 80be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float3 left_vector, float3 right_vector); 81be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 82be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 83be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float4 left_vector, float4 right_vector); 84be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 85be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 86be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fast_distance: Approximate distance between two points 87be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 88be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate distance between two points. 89be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 90be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is what would be expected from doing the computation using 16 bit floating point values. 91be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 92be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also distance(), native_distance(). 93be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 94be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 95be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 96be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_distance(float left_vector, float right_vector); 97be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 98be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 99be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 100be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 101be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_distance(float2 left_vector, float2 right_vector); 102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_distance(float3 left_vector, float3 right_vector); 107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_distance(float4 left_vector, float4 right_vector); 112be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 113be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 114be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 115be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fast_length: Approximate length of a vector 116be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 117be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate length of a vector. 118be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 119be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is what would be expected from doing the computation using 16 bit floating point values. 120be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 121be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also length(), native_length(). 122be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 123be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 124be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 125be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_length(float v); 126be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 127be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 128be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 129be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 130be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_length(float2 v); 131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_length(float3 v); 136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_length(float4 v); 141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fast_normalize: Approximate normalized vector 145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Approximately normalizes a vector. 147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values. 149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is what would be expected from doing the computation using 16 bit floating point values. 151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also normalize(), native_normalize(). 153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float v); 157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable)) 161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float2 v); 162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float3 v); 167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float4 v); 172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * length: Length of a vector 176be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 177be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the length of a vector. 178be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also fast_length(), native_length(). 180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float v); 183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float2 v); 186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float3 v); 189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float4 v); 192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_distance: Approximate distance between two points 195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate distance between two points. 197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also distance(), fast_distance(). 199be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 200be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 201be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 202be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_distance(float left_vector, float right_vector); 203be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 204be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 205be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 206be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 207be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_distance(float2 left_vector, float2 right_vector); 208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_distance(float3 left_vector, float3 right_vector); 213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 216be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 217be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_distance(float4 left_vector, float4 right_vector); 218be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 220be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 221be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_length: Approximate length of a vector 222be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 223be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Compute the approximate length of a vector. 224be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 225be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also length(), fast_length(). 226be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 227be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 228be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 229be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_length(float v); 230be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 231be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 232be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 233be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 234be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_length(float2 v); 235be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_length(float3 v); 240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_length(float4 v); 245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_normalize: Approximately normalize a vector 249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Approximately normalizes a vector. 251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also normalize(), fast_normalize(). 253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 254be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float v); 257be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 258be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 259be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 260be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable)) 261be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float2 v); 262be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 263be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 264be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 265be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 266be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float3 v); 267be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 268be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 269be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 270be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 271be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float4 v); 272be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 273be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * normalize: Normalize a vector 276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Normalize a vector. 278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values. 280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also fast_normalize(), native_normalize(). 282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float v); 285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 286be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable)) 287be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float2 v); 288be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 289be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 290be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float3 v); 291be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 292be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 293be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float4 v); 294be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 295be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif // RENDERSCRIPT_RS_VECTOR_MATH_RSH 296