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