rs_vector_math.rsh revision 4a73004df5231d188c41267fee17c566ae7c3631
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/* 20be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * rs_vector_math.rsh: TODO Add documentation 21be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 22be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * TODO Add documentation 23be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 244a73004df5231d188c41267fee17c566ae7c3631Jean-Luc Brouillet 25be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#ifndef RENDERSCRIPT_RS_VECTOR_MATH_RSH 26be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#define RENDERSCRIPT_RS_VECTOR_MATH_RSH 27be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 28be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 29be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * cross: Cross product of two vectors 30be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 31be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the cross product of two vectors. 32be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 33be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 34be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet cross(float3 left_vector, float3 right_vector); 35be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 36be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 37be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet cross(float4 left_vector, float4 right_vector); 38be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 39be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 40be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * distance: Distance between two points 41be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 42be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Compute the distance between two points. 43be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 44be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also fast_distance(), native_distance(). 45be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 46be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 47be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float left_vector, float right_vector); 48be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 49be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 50be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float2 left_vector, float2 right_vector); 51be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 52be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 53be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float3 left_vector, float3 right_vector); 54be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 55be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 56be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet distance(float4 left_vector, float4 right_vector); 57be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 58be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 59be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * dot: Dot product of two vectors 60be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 61be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the dot product of two vectors. 62be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 63be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 64be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float left_vector, float right_vector); 65be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 66be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 67be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float2 left_vector, float2 right_vector); 68be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 69be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 70be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float3 left_vector, float3 right_vector); 71be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 72be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 73be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet dot(float4 left_vector, float4 right_vector); 74be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 75be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 76be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fast_distance: Approximate distance between two points 77be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 78be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate distance between two points. 79be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 80be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is what would be expected from doing the computation using 16 bit floating point values. 81be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 82be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also distance(), native_distance(). 83be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 84be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 85be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 86be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_distance(float left_vector, float right_vector); 87be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 88be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 89be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 90be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 91be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_distance(float2 left_vector, float2 right_vector); 92be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 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(float3 left_vector, float3 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(float4 left_vector, float4 right_vector); 102be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 103be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 104be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 105be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fast_length: Approximate length of a vector 106be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 107be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate length of a vector. 108be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 109be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is what would be expected from doing the computation using 16 bit floating point values. 110be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 111be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also length(), native_length(). 112be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 113be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 114be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 115be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_length(float v); 116be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 117be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 118be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 119be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 120be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_length(float2 v); 121be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 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(float3 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(float4 v); 131be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 132be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 133be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 134be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * fast_normalize: Approximate normalized vector 135be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 136be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Approximately normalizes a vector. 137be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 138be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values. 139be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 140be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * The precision is what would be expected from doing the computation using 16 bit floating point values. 141be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 142be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also normalize(), native_normalize(). 143be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 144be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 145be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 146be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float v); 147be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 148be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 149be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 150be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable)) 151be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float2 v); 152be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 153be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 154be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 155be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 156be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float3 v); 157be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 158be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 159be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 17)) 160be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 161be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet fast_normalize(float4 v); 162be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 163be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 164be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 165be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * length: Length of a vector 166be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 167be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the length of a vector. 168be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 169be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also fast_length(), native_length(). 170be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 171be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 172be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float v); 173be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 174be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 175be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float2 v); 176be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 177be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 178be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float3 v); 179be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 180be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 181be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet length(float4 v); 182be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 183be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 184be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_distance: Approximate distance between two points 185be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 186be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Computes the approximate distance between two points. 187be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 188be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also distance(), fast_distance(). 189be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 190be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 191be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 192be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_distance(float left_vector, float right_vector); 193be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 194be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 195be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 196be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 197be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_distance(float2 left_vector, float2 right_vector); 198be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 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(float3 left_vector, float3 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(float4 left_vector, float4 right_vector); 208be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 209be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 210be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 211be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_length: Approximate length of a vector 212be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 213be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Compute the approximate length of a vector. 214be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 215be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also length(), fast_length(). 216be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 217be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 218be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 219be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_length(float v); 220be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 221be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 222be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 223be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 224be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_length(float2 v); 225be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 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(float3 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(float4 v); 235be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 236be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 237be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 238be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * native_normalize: Approximately normalize a vector 239be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 240be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Approximately normalizes a vector. 241be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 242be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also normalize(), fast_normalize(). 243be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 244be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 245be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 246be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float v); 247be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 248be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 249be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 250be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable)) 251be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float2 v); 252be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 253be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 254be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 255be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 256be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float3 v); 257be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 258be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 259be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#if (defined(RS_VERSION) && (RS_VERSION >= 21)) 260be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 261be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet native_normalize(float4 v); 262be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif 263be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 264be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet/* 265be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * normalize: Normalize a vector 266be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 267be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * Normalize a vector. 268be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 269be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * For vectors of size 1, returns -1.f for negative values, 0.f for null values, and 1.f for positive values. 270be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * 271be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet * See also fast_normalize(), native_normalize(). 272be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet */ 273be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float __attribute__((const, overloadable)) 274be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float v); 275be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 276be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float2 __attribute__((const, overloadable)) 277be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float2 v); 278be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 279be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float3 __attribute__((const, overloadable)) 280be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float3 v); 281be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 282be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouilletextern float4 __attribute__((const, overloadable)) 283be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet normalize(float4 v); 284be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet 285be2163801c33d6849ae580d42b919b8803d55095Jean-Luc Brouillet#endif // RENDERSCRIPT_RS_VECTOR_MATH_RSH 286