summaryrefslogtreecommitdiff
path: root/api/rs_math.spec
diff options
context:
space:
mode:
authorJason Sams <jsams@google.com>2015-03-26 20:46:57 +0000
committerJason Sams <jsams@google.com>2015-03-26 20:46:57 +0000
commit41371c7c23c4115cf0b3e7dc83240d5bcfb828b3 (patch)
tree13e7ad83c8f4218cc85a2dfcd4bbefc6b1d0025d /api/rs_math.spec
parent386e87ecf4114084c10dd385edc1c2baebe80a04 (diff)
downloadrs-41371c7c23c4115cf0b3e7dc83240d5bcfb828b3.tar.gz
Revert "Reorganize the header files in a way that's easier to document."
This reverts commit 386e87ecf4114084c10dd385edc1c2baebe80a04. Change-Id: Icaeedd9badfec2c51a8120c72eb6297736d68c2a
Diffstat (limited to 'api/rs_math.spec')
-rw-r--r--api/rs_math.spec2295
1 files changed, 162 insertions, 2133 deletions
diff --git a/api/rs_math.spec b/api/rs_math.spec
index 01bc5632..af84461a 100644
--- a/api/rs_math.spec
+++ b/api/rs_math.spec
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2014 The Android Open Source Project
+# Copyright (C) 2015 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,2171 +15,176 @@
#
header:
-summary: Mathematical functions
+summary: TODO Add documentation
description:
- Most mathematical functions can be applied to scalars and vectors.
- When applied to vectors, a vector of the function applied to each entry
- of the input is returned.
-
- For example:<br/>
- <code>
- float3 a, b;<br/>
- // The following call sets<br/>
- // a.x to sin(b.x),<br/>
- // a.y to sin(b.y), and<br/>
- // a.z to sin(b.z).<br/>
- a = sin(b);<br/>
- </code>
-
-# TODO Adjust documentation
- A few functions like @distance() and @length() interpret instead the input
- as a single vector in n-dimensional space.
-
- The precision of the mathematical operations is affected by the pragmas
-# TODO Create an anchor for the section of http://developer.android.com/guide/topics/renderscript/compute.html that details rs_fp_* and link them here.
- rs_fp_relaxed and rs_fp_full.
-
- Different precision/speed tradeoffs can be achieved by using three variants
- of common math functions. Functions with a name starting with<ul>
- <li>native_ may have custom hardware implementations with weaker precision,</li>
- <li>half_ may perform internal computations using 16 bit floats, and</li>
- <li>fast_ are n-dimensional space computations that may use 16 bit floats.
- </ul>
-end:
-
-constant: M_1_PI
-value: 0.318309886183790671537767526745028724f
-summary: 1 / pi, as a 32 bit float
-description:
- The inverse of pi, as a 32 bit float.
-end:
-
-constant: M_2_PI
-value: 0.636619772367581343075535053490057448f
-summary: 2 / pi, as a 32 bit float
-description:
- 2 divided by pi, as a 32 bit float.
-end:
-
-constant: M_2_PIl
-value: 0.636619772367581343075535053490057448f
-hidden:
-summary: Deprecated. Use M_2_PI instead.
-description:
-end:
-
-constant: M_2_SQRTPI
-value: 1.128379167095512573896158903121545172f
-summary: 2 / sqrt(pi), as a 32 bit float
-description:
- 2 divided by the square root of pi, as a 32 bit float.
-end:
-
-constant: M_E
-value: 2.718281828459045235360287471352662498f
-summary: e, as a 32 bit float
-description:
- The number e, the base of the natural logarithm, as a 32 bit float.
-end:
-
-constant: M_LN10
-value: 2.302585092994045684017991454684364208f
-summary: log_e(10), as a 32 bit float
-description:
- The natural logarithm of 10, as a 32 bit float.
-end:
-
-constant: M_LN2
-value: 0.693147180559945309417232121458176568f
-summary: log_e(2), as a 32 bit float
-description:
- The natural logarithm of 2, as a 32 bit float.
-end:
-
-constant: M_LOG10E
-value: 0.434294481903251827651128918916605082f
-summary: log_10(e), as a 32 bit float
-description:
- The logarithm base 10 of e, as a 32 bit float.
+ TODO Add documentation
end:
-constant: M_LOG2E
-value: 1.442695040888963407359924681001892137f
-summary: log_2(e), as a 32 bit float
-description:
- The logarithm base 2 of e, as a 32 bit float.
-end:
-
-constant: M_PI
-value: 3.141592653589793238462643383279502884f
-summary: pi, as a 32 bit float
-description:
- The constant pi, as a 32 bit float.
-end:
-
-constant: M_PI_2
-value: 1.570796326794896619231321691639751442f
-summary: pi / 2, as a 32 bit float
-description:
- Pi divided by 2, as a 32 bit float.
-end:
-
-constant: M_PI_4
-value: 0.785398163397448309615660845819875721f
-summary: pi / 4, as a 32 bit float
-description:
- Pi divided by 4, as a 32 bit float.
-end:
-
-constant: M_SQRT1_2
-value: 0.707106781186547524400844362104849039f
-summary: 1 / sqrt(2), as a 32 bit float
-description:
- The inverse of the square root of 2, as a 32 bit float.
-end:
-
-constant: M_SQRT2
-value: 1.414213562373095048801688724209698079f
-summary: sqrt(2), as a 32 bit float
-description:
- The square root of 2, as a 32 bit float.
-end:
-
-function: abs
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: i8, i16, i32
-ret: u#2#1
-arg: #2#1 v
-summary: Absolute value of an integer
-description:
- Returns the absolute value of an integer.
-
- For floats, use @fabs().
-end:
-
-function: acos
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse cosine
-description:
- Returns the inverse cosine, in radians.
-
- See also @native_acos().
-end:
-
-function: acosh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Inverse hyperbolic cosine
-description:
- Returns the inverse hyperbolic cosine, in radians.
-
- See also @native_acosh().
-end:
-
-function: acospi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse cosine divided by pi
-description:
- Returns the inverse cosine in radians, divided by pi.
-
- To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
-
- See also @native_acospi().
-end:
-
-function: asin
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse sine
-description:
- Returns the inverse sine, in radians.
-
- See also @native_asin().
-end:
-
-function: asinh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Inverse hyperbolic sine
-description:
- Returns the inverse hyperbolic sine, in radians.
-
- See also @native_asinh().
-end:
-
-function: asinpi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse sine divided by pi
-description:
- Returns the inverse sine in radians, divided by pi.
-
- To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
-
- See also @native_asinpi().
-end:
-
-function: atan
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse tangent
-description:
- Returns the inverse tangent, in radians.
-
- See also @native_atan().
-end:
-
-function: atan2
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Inverse tangent of a ratio
-description:
- Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians.
-
- See also @native_atan2().
-end:
-
-function: atan2pi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Inverse tangent of a ratio, divided by pi
-description:
- Returns the inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
-
- See also @native_atan2pi().
-end:
-
-function: atanh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse hyperbolic tangent
-description:
- Returns the inverse hyperbolic tangent, in radians.
-
- See also @native_atanh().
-end:
-
-function: atanpi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Inverse tangent divided by pi
-description:
- Returns the inverse tangent in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
-
- See also @native_atanpi().
-end:
-
-function: cbrt
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Cube root
-description:
- Returns the cube root.
-
- See also @native_cbrt().
-end:
-
-function: ceil
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Smallest integer not less than a value
-description:
- Returns the smallest integer not less than a value.
-
- For example, <code>ceil(1.2f)</code> returns 2.f, and <code>ceil(-1.2f)</code> returns -1.f.
-
- See also @floor().
-end:
-
-function: clamp
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 value, "Value to be clamped."
-arg: #2#1 min_value, "Lower bound, a scalar or matching vector."
-arg: #2#1 max_value, above(min_value), "High bound, must match the type of low."
+function: rsClamp
+# TODO Why always_inline?
+attrib: const, always_inline
+t: i8, i16, i32, u8, u16, u32
+ret: #1
+arg: #1 amount, "The value to clamp"
+arg: #1 low, "Lower bound"
+arg: #1 high, "Upper bound"
summary: Restrain a value to a range
description:
- Clamps a value to a specified high and low bound. clamp() returns min_value
- if value &lt; min_value, max_value if value &gt; max_value, otherwise value.
-
- There are two variants of clamp: one where the min and max are scalars applied
- to all entries of the value, the other where the min and max are also vectors.
-
- If min_value is greater than max_value, the results are undefined.
-end:
-
-function: clamp
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 value
-arg: #2 min_value
-arg: #2 max_value, above(min_value)
-end:
-
-function: clamp
-version: 19
-attrib: const
-w: 1, 2, 3, 4
-t: u8, u16, u32, u64, i8, i16, i32, i64
-ret: #2#1
-arg: #2#1 value
-arg: #2#1 min_value
-arg: #2#1 max_value, above(min_value)
-end:
-
-function: clamp
-version: 19
-attrib: const
-w: 2, 3, 4
-t: u8, u16, u32, u64, i8, i16, i32, i64
-ret: #2#1
-arg: #2#1 value
-arg: #2 min_value
-arg: #2 max_value, above(min_value)
-end:
-
-function: clz
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: u8, u16, u32, i8, i16, i32
-ret: #2#1
-arg: #2#1 value
-summary: Number of leading 0 bits
-description:
- Returns the number of leading 0-bits in a value.
-
- For example, <code>clz((char)0x03)</code> returns 6.
-end:
-
-function: copysign
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 magnitude_value
-arg: #2#1 sign_value
-summary: Copies the sign of a number to another
-description:
- Copies the sign from sign_value to magnitude_value.
-
- The value returned is either magnitude_value or -magnitude_value.
-
- For example, <code>copysign(4.0f, -2.7f)</code> returns -4.0f and <code>copysign(-4.0f, 2.7f)</code> returns 4.0f.
-end:
-
-function: cos
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Cosine
-description:
- Returns the cosine of an angle measured in radians.
-
- See also @native_cos().
-end:
-
-function: cosh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Hypebolic cosine
-description:
- Returns the hypebolic cosine of v, where v is measured in radians.
-
- See also @native_cosh().
-end:
-
-function: cospi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Cosine of a number multiplied by pi
-description:
- Returns the cosine of <code>(v * pi)</code>, where <code>(v * pi)</code> is measured in radians.
-
- To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
-
- See also @native_cospi().
-end:
-
-function: degrees
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Converts radians into degrees
-description:
- Converts from radians to degrees.
-end:
-
-function: erf
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Mathematical error function
-description:
- Returns the error function.
-end:
-
-function: erfc
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Mathematical complementary error function
-description:
- Returns the complementary error function.
-end:
-
-function: exp
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: e raised to a number
-description:
- Returns e raised to v, i.e. e ^ v.
-
- See also @native_exp().
-end:
-
-function: exp10
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: 10 raised to a number
-description:
- Returns 10 raised to v, i.e. 10.f ^ v.
-
- See also @native_exp10().
-end:
-
-function: exp2
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: 2 raised to a number
-description:
- Returns 2 raised to v, i.e. 2.f ^ v.
-
- See also @native_exp2().
-end:
-
-function: expm1
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: e raised to a number minus one
-description:
- Returns e raised to v minus 1, i.e. (e ^ v) - 1.
-
- See also @native_expm1().
-end:
-
-function: fabs
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Absolute value of a float
-description:
- Returns the absolute value of the float v.
-
- For integers, use @abs().
-end:
-
-function: fdim
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Positive difference between two values
-description:
- Returns the positive difference between two values.
-
- If a &gt; b, returns (a - b) otherwise returns 0f.
-end:
-
-function: floor
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Smallest integer not greater than a value
-description:
- Returns the smallest integer not greater than a value.
-
- For example, <code>floor(1.2f)</code> returns 1.f, and <code>floor(-1.2f)</code> returns -2.f.
-
- See also @ceil().
-end:
-
-function: fma
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 multiplicand1
-arg: #2#1 multiplicand2
-arg: #2#1 offset
-summary: Multiply and add
-description:
- Multiply and add. Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
-
- This function is similar to @mad(). fma() retains full precision of the
- multiplied result and rounds only after the addition. @mad() rounds after the
- multiplication and the addition. This extra precision is not guaranteed in
- rs_fp_relaxed mode.
-end:
-
-function: fmax
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Maximum of two floats
-description:
- Returns the maximum of a and b, i.e. <code>(a &lt; b ? b : a)</code>.
-
- The @max() function returns identical results but can be applied to more data types.
-end:
-
-function: fmax
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2 b
-end:
-
-function: fmin
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Minimum of two floats
-description:
- Returns the minimum of a and b, i.e. <code>(a &gt; b ? b : a)</code>.
-
- The @min() function returns identical results but can be applied to more data types.
-end:
-
-function: fmin
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2 b
-end:
-
-function: fmod
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator
-arg: #2#1 denominator
-summary: Modulo
-description:
- Returns the remainder of (numerator / denominator), where the quotient is rounded towards zero.
+ Clamp a value between low and high.
- The function @remainder() is similar but rounds toward the closest interger.
- For example, <code>fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
- while <code>@remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
+ Deprecated. Use @clamp() instead.
+test: none
end:
-function: fract
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, "Input value."
-arg: #2#1* floor, "If floor is not null, *floor will be set to the floor of v."
-summary: Positive fractional part
+function: rsExtractFrustumPlanes
+# TODO Why always_inline?
+attrib: always_inline
+ret: void
+arg: const rs_matrix4x4* viewProj, "matrix to extract planes from"
+arg: float4* left, "left plane"
+arg: float4* right, "right plane"
+arg: float4* top, "top plane"
+arg: float4* bottom, "bottom plane"
+arg: float4* near, "near plane"
+arg: float4* far, "far plane"
+summary:
description:
- Returns the positive fractional part of v, i.e. <code>v - floor(v)</code>.
-
- For example, <code>fract(1.3f, &val)</code> returns 0.3f and sets val to 1.f.
- <code>fract(-1.3f, &val)</code> returns 0.7f and sets val to -2.f.
-end:
-
-function: fract
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
+ Computes 6 frustum planes from the view projection matrix
inline:
- #2#1 unused;
- return fract(v, &unused);
-end:
-
-function: frexp
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, "Input value."
-arg: int#1* exponent, "If exponent is not null, *exponent will be set to the exponent of v."
-summary: Binary mantissa and exponent
-description:
- Returns the binary mantissa and exponent of v, i.e. <code>v == mantissa * 2 ^ exponent</code>.
-
- The mantissa is always between 0.5 (inclusive) and 1.0 (exclusive).
-
- See @ldexp() for the reverse operation. See also @logb() and @ilogb().
-end:
-
-function: half_recip
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Reciprocal computed to 16 bit precision
-description:
- Returns the approximate reciprocal of a value.
-
- The precision is that of a 16 bit floating point value.
-
- See also @native_recip().
-end:
-
-function: half_rsqrt
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Reciprocal of a square root computed to 16 bit precision
-description:
- Returns the approximate value of <code>(1.f / sqrt(value))</code>.
-
- The precision is that of a 16 bit floating point value.
-
- See also @rsqrt(), @native_rsqrt().
-end:
-
-function: half_sqrt
-version: 17
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Square root computed to 16 bit precision
-description:
- Returns the approximate square root of a value.
-
- The precision is that of a 16 bit floating point value.
-
- See also @sqrt(), @native_sqrt().
-end:
-
-function: hypot
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Hypotenuse
-description:
- Returns the hypotenuse, i.e. <code>sqrt(a * a + b * b)</code>.
-
- See also @native_hypot().
-end:
-
-function: ilogb
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: int#1
-arg: float#1 v
-summary: Base two exponent
-description:
- Returns the base two exponent of a value, where the mantissa is between
- 1.f (inclusive) and 2.f (exclusive).
-
- For example, <code>ilogb(8.5f)</code> returns 3.
-
- Because of the difference in mantissa, this number is one less than
- is returned by @frexp().
-
- @logb() is similar but returns a float.
-test: custom
-end:
-
-function: ldexp
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-ret: float#1
-arg: float#1 mantissa, "The mantissa"
-arg: int#1 exponent, "The exponent, a single component or matching vector."
-summary: Creates a floating point from mantissa and exponent
-description:
- Returns the floating point created from the mantissa and exponent,
- i.e. (mantissa * 2 ^ exponent).
-
- See @frexp() for the reverse operation.
-end:
-
-function: ldexp
-version: 9
-attrib: const
-w: 2, 3, 4
-ret: float#1
-arg: float#1 mantissa
-arg: int exponent
-end:
-
-function: lgamma
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Natural logarithm of the gamma function
-description:
- Returns the natural logarithm of the absolute value of the gamma function,
- i.e. <code>@log(@fabs(@tgamma(v)))</code>.
-
- See also @tgamma().
-end:
-
-function: lgamma
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: int#1* sign_of_gamma, "If sign_of_gamma is not null, *sign_of_gamma will be set to -1.f if the gamma of v is negative, otherwise to 1.f."
-test: custom
-#TODO Temporary until bionic & associated drivers are fixed
-end:
-
-function: log
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Natural logarithm
-description:
- Returns the natural logarithm.
-
- See also @native_log().
-end:
-
-function: log10
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Base 10 logarithm
-description:
- Returns the base 10 logarithm.
-
- See also @native_log10().
-end:
-
-function: log1p
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Natural logarithm of a value plus 1
-description:
- Returns the natural logarithm of <code>(v + 1.f)</code>.
-
- See also @native_log1p().
-end:
-
-function: log2
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Base 2 logarithm
-description:
- Returns the base 2 logarithm.
-
- See also @native_log2().
-end:
-
-function: logb
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Base two exponent
-description:
- Returns the base two exponent of a value, where the mantissa is between
- 1.f (inclusive) and 2.f (exclusive).
-
- For example, <code>logb(8.5f)</code> returns 3.f.
-
- Because of the difference in mantissa, this number is one less than
- is returned by frexp().
-
- @ilogb() is similar but returns an integer.
-end:
-
-function: mad
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 multiplicand1
-arg: #2#1 multiplicand2
-arg: #2#1 offset
-summary: Multiply and add
-description:
- Multiply and add. Returns <code>(multiplicand1 * multiplicand2) + offset</code>.
-
- This function is similar to @fma(). @fma() retains full precision of the
- multiplied result and rounds only after the addition. mad() rounds after the
- multiplication and the addition. In rs_fp_relaxed mode, mad() may not do the
- rounding after multiplicaiton.
+ // x y z w = a b c d in the plane equation
+ left->x = viewProj->m[3] + viewProj->m[0];
+ left->y = viewProj->m[7] + viewProj->m[4];
+ left->z = viewProj->m[11] + viewProj->m[8];
+ left->w = viewProj->m[15] + viewProj->m[12];
+
+ right->x = viewProj->m[3] - viewProj->m[0];
+ right->y = viewProj->m[7] - viewProj->m[4];
+ right->z = viewProj->m[11] - viewProj->m[8];
+ right->w = viewProj->m[15] - viewProj->m[12];
+
+ top->x = viewProj->m[3] - viewProj->m[1];
+ top->y = viewProj->m[7] - viewProj->m[5];
+ top->z = viewProj->m[11] - viewProj->m[9];
+ top->w = viewProj->m[15] - viewProj->m[13];
+
+ bottom->x = viewProj->m[3] + viewProj->m[1];
+ bottom->y = viewProj->m[7] + viewProj->m[5];
+ bottom->z = viewProj->m[11] + viewProj->m[9];
+ bottom->w = viewProj->m[15] + viewProj->m[13];
+
+ near->x = viewProj->m[3] + viewProj->m[2];
+ near->y = viewProj->m[7] + viewProj->m[6];
+ near->z = viewProj->m[11] + viewProj->m[10];
+ near->w = viewProj->m[15] + viewProj->m[14];
+
+ far->x = viewProj->m[3] - viewProj->m[2];
+ far->y = viewProj->m[7] - viewProj->m[6];
+ far->z = viewProj->m[11] - viewProj->m[10];
+ far->w = viewProj->m[15] - viewProj->m[14];
+
+ float len = length(left->xyz);
+ *left /= len;
+ len = length(right->xyz);
+ *right /= len;
+ len = length(top->xyz);
+ *top /= len;
+ len = length(bottom->xyz);
+ *bottom /= len;
+ len = length(near->xyz);
+ *near /= len;
+ len = length(far->xyz);
+ *far /= len;
+test: none
end:
-function: max
-version: 9
+function: rsFrac
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Maximum
+ret: float
+arg: float v
+summary:
description:
- Returns the maximum value of two arguments.
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 1
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- return (a > b ? a : b);
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 2
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x > b.x ? a.x : b.x);
- tmp.y = (a.y > b.y ? a.y : b.y);
- return tmp;
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 3
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x > b.x ? a.x : b.x);
- tmp.y = (a.y > b.y ? a.y : b.y);
- tmp.z = (a.z > b.z ? a.z : b.z);
- return tmp;
-end:
-
-function: max
-version: 9 20
-attrib: const
-w: 4
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x > b.x ? a.x : b.x);
- tmp.y = (a.y > b.y ? a.y : b.y);
- tmp.z = (a.z > b.z ? a.z : b.z);
- tmp.w = (a.w > b.w ? a.w : b.w);
- return tmp;
-end:
-
-function: max
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: i8, i16, i32, i64, u8, u16, u32, u64
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
+ Returns the fractional part of a float
+test: none
end:
-function: min
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Minimum
+function: rsIsSphereInFrustum
+attrib: always_inline
+ret: bool
+arg: float4* sphere, "float4 representing the sphere"
+arg: float4* left, "left plane"
+arg: float4* right, "right plane"
+arg: float4* top, "top plane"
+arg: float4* bottom, "bottom plane"
+arg: float4* near, "near plane"
+arg: float4* far, "far plane"
+summary:
description:
- Returns the minimum value of two arguments.
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 1
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- return (a < b ? a : b);
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 2
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x < b.x ? a.x : b.x);
- tmp.y = (a.y < b.y ? a.y : b.y);
- return tmp;
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 3
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
+ Checks if a sphere is withing the 6 frustum planes
inline:
- #2#1 tmp;
- tmp.x = (a.x < b.x ? a.x : b.x);
- tmp.y = (a.y < b.y ? a.y : b.y);
- tmp.z = (a.z < b.z ? a.z : b.z);
- return tmp;
-end:
-
-function: min
-version: 9 20
-attrib: const
-w: 4
-t: i8, i16, i32, u8, u16, u32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-inline:
- #2#1 tmp;
- tmp.x = (a.x < b.x ? a.x : b.x);
- tmp.y = (a.y < b.y ? a.y : b.y);
- tmp.z = (a.z < b.z ? a.z : b.z);
- tmp.w = (a.w < b.w ? a.w : b.w);
- return tmp;
-end:
-
-function: min
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: i8, i16, i32, i64, u8, u16, u32, u64
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-end:
-
-function: mix
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 start
-arg: #2#1 stop
-arg: #2#1 fraction
-summary: Mixes two values
-description:
- Returns start + ((stop - start) * fraction).
-
- This can be useful for mixing two values. For example, to create a new color that is 40% color1 and 60% color2, use <code>mix(color1, color2, 0.6f)</code>.
-end:
-
-function: mix
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 start
-arg: #2#1 stop
-arg: #2 fraction
-end:
-
-function: modf
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "The floating point portion of the value."
-arg: #2#1 v, "Source value"
-arg: #2#1* integral_part, "*integral_part will be set to the integral portion of the number."
-summary: Integral and fractional components
-description:
- Returns the integral and fractional components of a number.
-
- Both components will have the same sign as x. For example, for an input of -3.72f, iret will be set to -3.f and .72f will be returned.
-end:
-
-function: nan
-version: 9
-attrib: const
-w: 1
-t: f32
-ret: #2#1
-arg: uint#1 v, "Not used."
-#TODO We're not using the argument. Once we do, add this documentation line:
-# The argument is embedded into the return value and can be used to distinguish various NaNs.
-summary: Not a Number
-description:
- Returns a NaN value (Not a Number).
-end:
-
-function: native_acos
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse cosine
-description:
- Returns the approximate inverse cosine, in radians.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @acos().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_acosh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate inverse hyperbolic cosine
-description:
- Returns the approximate inverse hyperbolic cosine, in radians.
-
- See also @acosh().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_acospi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse cosine divided by pi
-description:
- Returns the approximate inverse cosine in radians, divided by pi.
-
- To get an inverse cosine measured in degrees, use <code>acospi(a) * 180.f</code>.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @acospi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_asin
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse sine
-description:
- Returns the approximate inverse sine, in radians.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @asin().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_asinh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate inverse hyperbolic sine
-description:
- Returns the approximate inverse hyperbolic sine, in radians.
-
- See also @asinh().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_asinpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse sine divided by pi
-description:
- Returns the approximate inverse sine in radians, divided by pi.
-
- To get an inverse sine measured in degrees, use <code>asinpi(a) * 180.f</code>.
-
- This function yields undefined results from input values less than -1 or greater
- than 1.
-
- See also @asinpi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atan
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse tangent
-description:
- Returns the approximate inverse tangent, in radians.
-
- See also @atan().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atan2
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Approximate inverse tangent of a ratio
-description:
- Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians.
-
- See also @atan2().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atan2pi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator, "The numerator"
-arg: #2#1 denominator, "The denominator. Can be 0."
-summary: Approximate inverse tangent of a ratio, divided by pi
-description:
- Returns the approximate inverse tangent of <code>(numerator / denominator)</code>, in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atan2pi(n, d) * 180.f</code>.
-
- See also @atan2pi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atanh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse hyperbolic tangent
-description:
- Returns the approximate inverse hyperbolic tangent, in radians.
-
- See also @atanh().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_atanpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-1,1)
-summary: Approximate inverse tangent divided by pi
-description:
- Returns the approximate inverse tangent in radians, divided by pi.
-
- To get an inverse tangent measured in degrees, use <code>atanpi(a) * 180.f</code>.
-
- See also @atanpi().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_cbrt
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate cube root
-description:
- Returns the approximate cubic root.
-
- See also @cbrt().
-end:
-
-function: native_cos
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate cosine
-description:
- Returns the approximate cosine of an angle measured in radians.
-
- See also @cos().
-end:
-
-function: native_cosh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate hypebolic cosine
-description:
- Returns the approximate hypebolic cosine.
-
- See also @cosh().
-end:
-
-function: native_cospi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate cosine of a number multiplied by pi
-description:
- Returns the approximate cosine of (v * pi), where (v * pi) is measured in radians.
-
- To get the cosine of a value measured in degrees, call <code>cospi(v / 180.f)</code>.
-
- See also @cospi().
-end:
-
-function: native_divide
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 left_vector
-arg: #2#1 right_vector
-summary: Approximate division
-description:
- Computes the approximate division of two values.
-end:
-
-function: native_exp
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-86,86)
-summary: Approximate e raised to a number
-description:
- Fast approximate exp.
-
- It is valid for inputs from -86.f to 86.f. The precision is no worse than what would be expected from using 16 bit floating point values.
-
- See also @exp().
-test: limited
-end:
-
-function: native_exp10
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-37,37)
-summary: Approximate 10 raised to a number
-description:
- Fast approximate exp10.
-
- It is valid for inputs from -37.f to 37.f. The precision is no worse than what would be expected from using 16 bit floating point values.
-
- See also @exp10().
-test: limited
-end:
-
-function: native_exp2
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(-125,125)
-summary: Approximate 2 raised to a number
-description:
- Fast approximate exp2.
-
- It is valid for inputs from -125.f to 125.f. The precision is no worse than what would be expected from using 16 bit floating point values.
-
- See also @exp2().
-test: limited
-end:
-
-function: native_expm1
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate e raised to a number minus one
-description:
- Returns the approximate (e ^ v) - 1.
-
- See also @expm1().
-end:
-
-function: native_hypot
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 a
-arg: #2#1 b
-summary: Approximate hypotenuse
-description:
- Returns the approximate native_sqrt(a * a + b * b)
-
- See also @hypot().
-end:
-
-function: native_log
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(10e-10,10e10)
-summary: Approximate natural logarithm
-description:
- Fast approximate log.
-
- It is not accurate for values very close to zero.
-
- See also @log().
-test: limited
-end:
-
-function: native_log10
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(10e-10,10e10)
-summary: Approximate base 10 logarithm
-description:
- Fast approximate log10.
-
- It is not accurate for values very close to zero.
-
- See also @log10().
-test: limited
-end:
-
-function: native_log1p
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate natural logarithm of a value plus 1
-description:
- Returns the approximate natural logarithm of (v + 1.0f)
-
- See also @log1p().
-end:
-
-function: native_log2
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v, range(10e-10,10e10)
-summary: Approximate base 2 logarithm
-description:
- Fast approximate log2.
-
- It is not accurate for values very close to zero.
-
- See also @log2().
-test: limited
-end:
-
-function: native_powr
-version: 18
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base, range(0,256), "Must be between 0.f and 256.f. The function is not accurate for values very close to zero."
-arg: #2#1 exponent, range(-15,15), "Must be between -15.f and 15.f."
-summary: Approximate positive base raised to an exponent
-description:
- Fast approximate (base ^ exponent).
-
- See also @powr().
-test: limited
-end:
-
-function: native_recip
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate reciprocal
-description:
- Returns the approximate approximate reciprocal of a value.
-
- See also @half_recip().
-end:
-
-function: native_rootn
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: int#1 n
-summary: Approximate nth root
-description:
- Compute the approximate Nth root of a value.
-
- See also @rootn().
-end:
-
-function: native_rsqrt
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate reciprocal of a square root
-description:
- Returns approximate (1 / sqrt(v)).
-
- See also @rsqrt(), @half_rsqrt().
-end:
-
-function: native_sin
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate sine
-description:
- Returns the approximate sine of an angle measured in radians.
-
- See also @sin().
-end:
-
-function: native_sincos
-version: 21
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "sine"
-arg: #2#1 v, "The incoming value in radians."
-arg: #2#1* cos, "*cos will be set to the cosine value."
-summary: Approximate sine and cosine
-description:
- Returns the approximate sine and cosine of a value.
-
- See also @sincos().
-# TODO Temporary
-test: limited(0.0005)
-end:
-
-function: native_sinh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate hyperbolic sine
-description:
- Returns the approximate hyperbolic sine of a value specified in radians.
-
- See also @sinh().
-end:
-
-function: native_sinpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate sine of a number multiplied by pi
-description:
- Returns the approximate sine of (v * pi), where (v * pi) is measured in radians.
-
- To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
-
- See also @sinpi().
-end:
-
-function: native_sqrt
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate square root
-description:
- Returns the approximate sqrt(v).
-
- See also @sqrt(), @half_sqrt().
-end:
-
-function: native_tan
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate tangent
-description:
- Returns the approximate tangent of an angle measured in radians.
-end:
-
-function: native_tanh
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate hyperbolic tangent
-description:
- Returns the approximate hyperbolic tangent of a value.
-
- See also @tanh().
-end:
-
-function: native_tanpi
-version: 21
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Approximate tangent of a number multiplied by pi
-description:
- Returns the approximate tangent of (v * pi), where (v * pi) is measured in radians.
-
- To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
-
- See also @tanpi().
-end:
-
-function: nextafter
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: #2#1 target
-summary: Next floating point number
-description:
- Returns the next representable floating point number from v towards target.
-
- In rs_fp_relaxed mode, a denormalized input value may not yield the next
- denormalized value, as support of denormalized values is optional in
- relaxed mode.
-end:
-
-function: pow
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base
-arg: #2#1 exponent
-summary: Base raised to an exponent
-description:
- Returns base raised to the power exponent, i.e. base ^ exponent.
-
- @pown() and @powr() are similar. @pown() takes an integer exponent. @powr() assumes the base to be non-negative.
-end:
-
-function: pown
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base
-arg: int#1 exponent
-summary: Base raised to an integer exponent
-description:
- Returns base raised to the power exponent, i.e. base ^ exponent.
-
- @pow() and @powr() are similar. The both take a float exponent. @powr() also assumes the base to be non-negative.
-end:
-
-function: powr
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 base, range(0,3000)
-arg: #2#1 exponent
-summary: Positive base raised to an exponent
-description:
- Returns base raised to the power exponent, i.e. base ^ exponent. base must be &gt;= 0.
-
- @pow() and @pown() are similar. They both make no assumptions about the base. @pow() takes a float exponent while @pown() take an integer.
-
- See also @native_powr().
-end:
-
-function: radians
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Converts degrees into radians
-description:
- Converts from degrees to radians.
-end:
-
-function: remainder
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 numerator
-arg: #2#1 denominator
-summary: Remainder of a division
-description:
- Returns the remainder of (numerator / denominator), where the quotient is rounded towards the nearest integer.
-
- The function @fmod() is similar but rounds toward the closest interger.
- For example, <code>@fmod(-3.8f, 2.f)</code> returns -1.8f (-3.8f - -1.f * 2.f)
- while <code>remainder(-3.8f, 2.f)</code> returns 0.2f (-3.8f - -2.f * 2.f).
-end:
-
-function: remquo
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "The remainder, precise only for the low three bits."
-arg: #2#1 numerator, "The numerator."
-arg: #2#1 denominator, "The denominator."
-arg: int#1* quotient, "*quotient will be set to the integer quotient."
-summary: Remainder and quotient of a division
-description:
- Returns the quotient and the remainder of (numerator / denominator).
-
- Only the sign and lowest three bits of the quotient are guaranteed to be accurate.
-
- This function is useful for implementing periodic functions. The low three bits of the quotient gives the quadrant and the remainder the distance within the quadrant. For example, an implementation of @sin(x) could call <code>remquo(x, PI / 2.f, &quadrant)</code> to reduce very large value of x to something within a limited range.
-
- Example: <code>remquo(-23.5f, 8.f, &quot)</code> sets the lowest three bits of quot to 3 and the sign negative. It returns 0.5f.
-test: custom
-end:
-
-function: rint
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Round to even
-description:
- Rounds to the nearest integral value.
-
- rint() rounds half values to even. For example, <code>rint(0.5f)</code> returns 0.f and <code>rint(1.5f)</code> returns 2.f. Similarly, <code>rint(-0.5f)</code> returns -0.f and <code>rint(-1.5f)</code> returns -2.f.
-
- @round() is similar but rounds away from zero. @trunc() truncates the decimal fraction.
-end:
-
-function: rootn
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-arg: int#1 n
-summary: Nth root
-description:
- Compute the Nth root of a value.
-
- See also @native_rootn().
-end:
-
-function: round
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Round away from zero
-description:
- Round to the nearest integral value.
-
- round() rounds half values away from zero. For example, <code>round(0.5f)</code> returns 1.f and <code>round(1.5f)</code> returns 2.f. Similarly, <code>round(-0.5f)</code> returns -1.f and <code>round(-1.5f)</code> returns -2.f.
-
- @rint() is similar but rounds half values toward even. @trunc() truncates the decimal fraction.
-end:
-
-function: rsqrt
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Reciprocal of a square root
-description:
- Returns (1 / sqrt(v)).
-
- See also @half_rsqrt(), @native_rsqrt().
-end:
-
-function: sign
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Sign of a value
-description:
- Returns the sign of a value.
-
- if (v &lt; 0) return -1.f;
- else if (v &gt; 0) return 1.f;
- else return 0.f;
-end:
-
-function: sin
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Sine
-description:
- Returns the sine of an angle measured in radians.
-
- See also @native_sin().
-end:
-
-function: sincos
-version: 9
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1, "sine of v"
-arg: #2#1 v, "The incoming value in radians"
-arg: #2#1* cos, "*cos will be set to the cosine value."
-summary: Sine and cosine
-description:
- Returns the sine and cosine of a value.
-
- See also @native_sincos().
-end:
-
-function: sinh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Hyperbolic sine
-description:
- Returns the hyperbolic sine of v, where v is measured in radians.
-
- See also @native_sinh().
-end:
-
-function: sinpi
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Sine of a number multiplied by pi
-description:
- Returns the sine of (v * pi), where (v * pi) is measured in radians.
-
- To get the sine of a value measured in degrees, call <code>sinpi(v / 180.f)</code>.
-
- See also @native_sinpi().
-end:
-
-function: sqrt
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Square root
-description:
- Returns the square root of a value.
-
- See also @half_sqrt(), @native_sqrt().
-end:
-
-function: step
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 edge
-arg: #2#1 v
-summary: 0 if less than a value, 0 otherwise
-description:
- Returns 0.f if v &lt; edge, 1.f otherwise.
-
- This can be useful to create conditional computations without using loops and branching instructions. For example, instead of computing <code>(a[i] &lt; b[i]) ? 0.f : @atan2(a[i], b[i])</code> for the corresponding elements of a vector, you could instead use <code>step(a, b) * @atan2(a, b)</code>.
-end:
-
-function: step
-version: 9
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 edge
-arg: #2 v
-end:
-
-function: step
-version: 21
-attrib: const
-w: 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2 edge
-arg: #2#1 v
-end:
-
-function: tan
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Tangent
-description:
- Returns the tangent of an angle measured in radians.
-
- See also @native_tan().
-end:
-
-function: tanh
-version: 9
-attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Hyperbolic tangent
-description:
- Returns the hyperbolic tangent of a value.
-
- See also @native_tanh().
+ float distToCenter = dot(left->xyz, sphere->xyz) + left->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(right->xyz, sphere->xyz) + right->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(top->xyz, sphere->xyz) + top->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(bottom->xyz, sphere->xyz) + bottom->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(near->xyz, sphere->xyz) + near->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ distToCenter = dot(far->xyz, sphere->xyz) + far->w;
+ if (distToCenter < -sphere->w) {
+ return false;
+ }
+ return true;
+test: none
end:
-function: tanpi
-version: 9
+function: rsPackColorTo8888
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Tangent of a number multiplied by pi
+ret: uchar4
+arg: float r
+arg: float g
+arg: float b
+summary:
description:
- Returns the tangent of (v * pi), where (v * pi) is measured in radians.
+ Pack floating point (0-1) RGB values into a uchar4.
- To get the tangent of a value measured in degrees, call <code>tanpi(v / 180.f)</code>.
-
- See also @native_tanpi().
+ For the float3 variant and the variant that only specifies r, g, b,
+ the alpha component is set to 255 (1.0).
+test: none
end:
-function: tgamma
-version: 9
+function: rsPackColorTo8888
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Gamma function
-description:
- Returns the gamma function of a value.
-
- See also @lgamma().
+ret: uchar4
+arg: float r
+arg: float g
+arg: float b
+arg: float a
+test: none
end:
-function: trunc
-version: 9
+function: rsPackColorTo8888
attrib: const
-w: 1, 2, 3, 4
-t: f32
-ret: #2#1
-arg: #2#1 v
-summary: Truncates a floating point
-description:
- Rounds to integral using truncation.
-
- For example, <code>trunc(1.7f)</code> returns 1.f and <code>trunc(-1.7f)</code> returns -1.f.
-
- See @rint() and @round() for other rounding options.
-end:
-
-function: rsClamp
-# TODO Why always_inline?
-attrib: const, always_inline
-t: i8, i16, i32, u8, u16, u32
-ret: #1
-arg: #1 amount, "The value to clamp"
-arg: #1 low, "Lower bound"
-arg: #1 high, "Upper bound"
-summary: Restrain a value to a range
-description:
- Clamp a value between low and high.
-
- Deprecated. Use @clamp() instead.
+ret: uchar4
+arg: float3 color
test: none
end:
-function: rsFrac
+function: rsPackColorTo8888
attrib: const
-ret: float
-arg: float v
-summary:
-description:
- Returns the fractional part of a float
+ret: uchar4
+arg: float4 color
test: none
end:
@@ -2211,3 +216,27 @@ arg: float min_value
arg: float max_value
test: none
end:
+
+function: rsUnpackColor8888
+attrib: =const
+ret: float4
+arg: uchar4 c
+summary:
+description:
+ Unpack a uchar4 color to float4. The resulting float range will be (0-1).
+test: none
+end:
+
+function: rsYuvToRGBA_#2#1
+attrib: const
+w: 4
+t: u8, f32
+ret: #2#1
+arg: uchar y
+arg: uchar u
+arg: uchar v
+summary:
+description:
+ Convert from YUV to RGBA.
+test: none
+end: