23 #ifdef BT_USE_DOUBLE_PRECISION
24 #define btVector3Data btVector3DoubleData
25 #define btVector3DataName "btVector3DoubleData"
27 #define btVector3Data btVector3FloatData
28 #define btVector3DataName "btVector3FloatData"
31 #if defined BT_USE_SSE
36 #pragma warning(disable : 4556)
39 #define BT_SHUFFLE(x, y, z, w) (((w) << 6 | (z) << 4 | (y) << 2 | (x)) & 0xff)
41 #define bt_pshufd_ps(_a, _mask) _mm_shuffle_ps((_a), (_a), (_mask))
42 #define bt_splat3_ps(_a, _i) bt_pshufd_ps((_a), BT_SHUFFLE(_i, _i, _i, 3))
43 #define bt_splat_ps(_a, _i) bt_pshufd_ps((_a), BT_SHUFFLE(_i, _i, _i, _i))
45 #define btv3AbsiMask (_mm_set_epi32(0x00000000, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF))
46 #define btvAbsMask (_mm_set_epi32(0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF))
47 #define btvFFF0Mask (_mm_set_epi32(0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF))
48 #define btv3AbsfMask btCastiTo128f(btv3AbsiMask)
49 #define btvFFF0fMask btCastiTo128f(btvFFF0Mask)
50 #define btvxyzMaskf btvFFF0fMask
51 #define btvAbsfMask btCastiTo128f(btvAbsMask)
54 #define btvMzeroMask (_mm_set_ps(-0.0f, -0.0f, -0.0f, -0.0f))
55 #define v1110 (_mm_set_ps(0.0f, 1.0f, 1.0f, 1.0f))
56 #define vHalf (_mm_set_ps(0.5f, 0.5f, 0.5f, 0.5f))
57 #define v1_5 (_mm_set_ps(1.5f, 1.5f, 1.5f, 1.5f))
68 const float32x4_t
ATTRIBUTE_ALIGNED16(btvMzeroMask) = (float32x4_t){-0.0f, -0.0f, -0.0f, -0.0f};
70 static_cast<int32_t>(0xFFFFFFFF),
static_cast<int32_t>(0xFFFFFFFF), 0x0};
71 const int32x4_t
ATTRIBUTE_ALIGNED16(btvAbsMask) = (int32x4_t){0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};
72 const int32x4_t
ATTRIBUTE_ALIGNED16(btv3AbsMask) = (int32x4_t){0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x0};
86 #if defined(__SPU__) && defined(__CELLOS_LV2__)
92 return *((
const vec_float4*)&
m_floats[0]);
97 #if defined(BT_USE_SSE) || defined(BT_USE_NEON)
134 #if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)
144 mVec128 = rhs.mVec128;
161 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
162 mVec128 = _mm_add_ps(mVec128,
v.mVec128);
163 #elif defined(BT_USE_NEON)
164 mVec128 = vaddq_f32(mVec128,
v.mVec128);
177 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
178 mVec128 = _mm_sub_ps(mVec128,
v.mVec128);
179 #elif defined(BT_USE_NEON)
180 mVec128 = vsubq_f32(mVec128,
v.mVec128);
193 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
194 __m128 vs = _mm_load_ss(&s);
195 vs = bt_pshufd_ps(vs, 0x80);
196 mVec128 = _mm_mul_ps(mVec128, vs);
197 #elif defined(BT_USE_NEON)
198 mVec128 = vmulq_n_f32(mVec128, s);
215 __m128 vs = _mm_load_ss(&s);
216 vs = _mm_div_ss(v1110, vs);
217 vs = bt_pshufd_ps(vs, 0x00);
219 mVec128 = _mm_mul_ps(mVec128, vs);
231 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
232 __m128 vd = _mm_mul_ps(mVec128,
v.mVec128);
233 __m128
z = _mm_movehl_ps(vd, vd);
234 __m128
y = _mm_shuffle_ps(vd, vd, 0x55);
235 vd = _mm_add_ss(vd,
y);
236 vd = _mm_add_ss(vd,
z);
237 return _mm_cvtss_f32(vd);
238 #elif defined(BT_USE_NEON)
239 float32x4_t vd = vmulq_f32(mVec128,
v.mVec128);
240 float32x2_t
x = vpadd_f32(vget_low_f32(vd), vget_low_f32(vd));
241 x = vadd_f32(
x, vget_high_f32(vd));
242 return vget_lane_f32(
x, 0);
307 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
309 __m128 vd = _mm_mul_ps(mVec128, mVec128);
310 __m128
z = _mm_movehl_ps(vd, vd);
311 __m128
y = _mm_shuffle_ps(vd, vd, 0x55);
312 vd = _mm_add_ss(vd,
y);
313 vd = _mm_add_ss(vd,
z);
316 vd = _mm_sqrt_ss(vd);
317 vd = _mm_div_ss(v1110, vd);
318 vd = bt_splat_ps(vd, 0x80);
319 mVec128 = _mm_mul_ps(mVec128, vd);
323 y = _mm_rsqrt_ss(vd);
327 vd = _mm_mul_ss(vd, vHalf);
329 vd = _mm_mul_ss(vd,
y);
330 vd = _mm_mul_ss(vd,
y);
331 z = _mm_sub_ss(
z, vd);
333 y = _mm_mul_ss(
y,
z);
335 y = bt_splat_ps(
y, 0x80);
336 mVec128 = _mm_mul_ps(mVec128,
y);
366 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
367 return btVector3(_mm_and_ps(mVec128, btv3AbsfMask));
368 #elif defined(BT_USE_NEON)
382 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
385 T = bt_pshufd_ps(mVec128, BT_SHUFFLE(1, 2, 0, 3));
386 V = bt_pshufd_ps(
v.mVec128, BT_SHUFFLE(1, 2, 0, 3));
388 V = _mm_mul_ps(
V, mVec128);
389 T = _mm_mul_ps(
T,
v.mVec128);
390 V = _mm_sub_ps(
V,
T);
392 V = bt_pshufd_ps(
V, BT_SHUFFLE(1, 2, 0, 3));
394 #elif defined(BT_USE_NEON)
397 float32x2_t Tlow = vget_low_f32(mVec128);
398 float32x2_t Vlow = vget_low_f32(
v.mVec128);
399 T = vcombine_f32(vext_f32(Tlow, vget_high_f32(mVec128), 1), Tlow);
400 V = vcombine_f32(vext_f32(Vlow, vget_high_f32(
v.mVec128), 1), Vlow);
402 V = vmulq_f32(
V, mVec128);
403 T = vmulq_f32(
T,
v.mVec128);
405 Vlow = vget_low_f32(
V);
407 V = vcombine_f32(vext_f32(Vlow, vget_high_f32(
V), 1), Vlow);
408 V = (float32x4_t)vandq_s32((int32x4_t)
V, btvFFF0Mask);
421 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
423 __m128
T = _mm_shuffle_ps(
v1.mVec128,
v1.mVec128, BT_SHUFFLE(1, 2, 0, 3));
424 __m128
V = _mm_shuffle_ps(
v2.mVec128,
v2.mVec128, BT_SHUFFLE(1, 2, 0, 3));
426 V = _mm_mul_ps(
V,
v1.mVec128);
427 T = _mm_mul_ps(
T,
v2.mVec128);
428 V = _mm_sub_ps(
V,
T);
430 V = _mm_shuffle_ps(
V,
V, BT_SHUFFLE(1, 2, 0, 3));
433 V = _mm_mul_ps(
V, mVec128);
434 __m128
z = _mm_movehl_ps(
V,
V);
435 __m128
y = _mm_shuffle_ps(
V,
V, 0x55);
436 V = _mm_add_ss(
V,
y);
437 V = _mm_add_ss(
V,
z);
438 return _mm_cvtss_f32(
V);
440 #elif defined(BT_USE_NEON)
444 float32x2_t Tlow = vget_low_f32(
v1.mVec128);
445 float32x2_t Vlow = vget_low_f32(
v2.mVec128);
446 T = vcombine_f32(vext_f32(Tlow, vget_high_f32(
v1.mVec128), 1), Tlow);
447 V = vcombine_f32(vext_f32(Vlow, vget_high_f32(
v2.mVec128), 1), Vlow);
449 V = vmulq_f32(
V,
v1.mVec128);
450 T = vmulq_f32(
T,
v2.mVec128);
452 Vlow = vget_low_f32(
V);
454 V = vcombine_f32(vext_f32(Vlow, vget_high_f32(
V), 1), Vlow);
457 V = vmulq_f32(mVec128,
V);
458 float32x2_t
x = vpadd_f32(vget_low_f32(
V), vget_low_f32(
V));
459 x = vadd_f32(
x, vget_high_f32(
V));
460 return vget_lane_f32(
x, 0);
462 return m_floats[0] * (
v1.m_floats[1] *
v2.m_floats[2] -
v1.m_floats[2] *
v2.m_floats[1]) +
463 m_floats[1] * (
v1.m_floats[2] *
v2.m_floats[0] -
v1.m_floats[0] *
v2.m_floats[2]) +
464 m_floats[2] * (
v1.m_floats[0] *
v2.m_floats[1] -
v1.m_floats[1] *
v2.m_floats[0]);
494 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
495 __m128 vrt = _mm_load_ss(&rt);
497 __m128 vs = _mm_load_ss(&s);
498 vs = bt_pshufd_ps(vs, 0x80);
499 __m128 r0 = _mm_mul_ps(v0.mVec128, vs);
500 vrt = bt_pshufd_ps(vrt, 0x80);
501 __m128 r1 = _mm_mul_ps(
v1.mVec128, vrt);
502 __m128 tmp3 = _mm_add_ps(r0, r1);
504 #elif defined(BT_USE_NEON)
505 float32x4_t vl = vsubq_f32(
v1.mVec128, v0.mVec128);
506 vl = vmulq_n_f32(vl, rt);
507 mVec128 = vaddq_f32(vl, v0.mVec128);
510 m_floats[0] = s * v0.m_floats[0] + rt *
v1.m_floats[0];
511 m_floats[1] = s * v0.m_floats[1] + rt *
v1.m_floats[1];
512 m_floats[2] = s * v0.m_floats[2] + rt *
v1.m_floats[2];
523 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
524 __m128 vt = _mm_load_ss(&
t);
525 vt = bt_pshufd_ps(vt, 0x80);
526 __m128 vl = _mm_sub_ps(
v.mVec128, mVec128);
527 vl = _mm_mul_ps(vl, vt);
528 vl = _mm_add_ps(vl, mVec128);
531 #elif defined(BT_USE_NEON)
532 float32x4_t vl = vsubq_f32(
v.mVec128, mVec128);
533 vl = vmulq_n_f32(vl,
t);
534 vl = vaddq_f32(vl, mVec128);
548 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
549 mVec128 = _mm_mul_ps(mVec128,
v.mVec128);
550 #elif defined(BT_USE_NEON)
551 mVec128 = vmulq_f32(mVec128,
v.mVec128);
591 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
592 return (0xf == _mm_movemask_ps((__m128)_mm_cmpeq_ps(mVec128, other.mVec128)));
594 return ((
m_floats[3] == other.m_floats[3]) &&
595 (
m_floats[2] == other.m_floats[2]) &&
596 (
m_floats[1] == other.m_floats[1]) &&
597 (
m_floats[0] == other.m_floats[0]));
603 return !(*
this == other);
611 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
612 mVec128 = _mm_max_ps(mVec128, other.mVec128);
613 #elif defined(BT_USE_NEON)
614 mVec128 = vmaxq_f32(mVec128, other.mVec128);
628 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
629 mVec128 = _mm_min_ps(mVec128, other.mVec128);
630 #elif defined(BT_USE_NEON)
631 mVec128 = vminq_f32(mVec128, other.mVec128);
650 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
652 __m128
V = _mm_and_ps(mVec128, btvFFF0fMask);
653 __m128 V0 = _mm_xor_ps(btvMzeroMask,
V);
654 __m128 V2 = _mm_movelh_ps(V0,
V);
656 __m128 V1 = _mm_shuffle_ps(
V, V0, 0xCE);
658 V0 = _mm_shuffle_ps(V0,
V, 0xDB);
659 V2 = _mm_shuffle_ps(V2,
V, 0xF9);
665 v0->setValue(0., -
z(),
y());
666 v1->setValue(
z(), 0., -
x());
667 v2->setValue(-
y(),
x(), 0.);
673 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
674 mVec128 = (__m128)_mm_xor_ps(mVec128, mVec128);
675 #elif defined(BT_USE_NEON)
676 int32x4_t vi = vdupq_n_s32(0);
677 mVec128 = vreinterpretq_f32_s32(vi);
722 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
724 __m128 a0 = _mm_mul_ps(v0.mVec128, this->mVec128);
725 __m128 a1 = _mm_mul_ps(
v1.mVec128, this->mVec128);
726 __m128 a2 = _mm_mul_ps(
v2.mVec128, this->mVec128);
727 __m128 b0 = _mm_unpacklo_ps(a0, a1);
728 __m128 b1 = _mm_unpackhi_ps(a0, a1);
729 __m128 b2 = _mm_unpacklo_ps(a2, _mm_setzero_ps());
730 __m128
r = _mm_movelh_ps(b0, b2);
731 r = _mm_add_ps(
r, _mm_movehl_ps(b2, b0));
732 a2 = _mm_and_ps(a2, btvxyzMaskf);
733 r = _mm_add_ps(
r, btCastdTo128f(_mm_move_sd(btCastfTo128d(a2), btCastfTo128d(b1))));
736 #elif defined(BT_USE_NEON)
737 static const uint32x4_t xyzMask = (
const uint32x4_t){
static_cast<uint32_t>(-1),
static_cast<uint32_t>(-1),
static_cast<uint32_t>(-1), 0};
738 float32x4_t a0 = vmulq_f32(v0.mVec128, this->mVec128);
739 float32x4_t a1 = vmulq_f32(
v1.mVec128, this->mVec128);
740 float32x4_t a2 = vmulq_f32(
v2.mVec128, this->mVec128);
741 float32x2x2_t zLo = vtrn_f32(vget_high_f32(a0), vget_high_f32(a1));
742 a2 = (float32x4_t)vandq_u32((uint32x4_t)a2, xyzMask);
743 float32x2_t b0 = vadd_f32(vpadd_f32(vget_low_f32(a0), vget_low_f32(a1)), zLo.val[0]);
744 float32x2_t b1 = vpadd_f32(vpadd_f32(vget_low_f32(a2), vget_high_f32(a2)), vdup_n_f32(0.0f));
756 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
758 #elif defined(BT_USE_NEON)
762 v1.m_floats[0] +
v2.m_floats[0],
763 v1.m_floats[1] +
v2.m_floats[1],
764 v1.m_floats[2] +
v2.m_floats[2]);
772 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
774 #elif defined(BT_USE_NEON)
778 v1.m_floats[0] *
v2.m_floats[0],
779 v1.m_floats[1] *
v2.m_floats[1],
780 v1.m_floats[2] *
v2.m_floats[2]);
788 #if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))
791 __m128
r = _mm_sub_ps(
v1.mVec128,
v2.mVec128);
792 return btVector3(_mm_and_ps(
r, btvFFF0fMask));
793 #elif defined(BT_USE_NEON)
794 float32x4_t
r = vsubq_f32(
v1.mVec128,
v2.mVec128);
795 return btVector3((float32x4_t)vandq_s32((int32x4_t)
r, btvFFF0Mask));
798 v1.m_floats[0] -
v2.m_floats[0],
799 v1.m_floats[1] -
v2.m_floats[1],
800 v1.m_floats[2] -
v2.m_floats[2]);
808 #if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))
809 __m128
r = _mm_xor_ps(
v.mVec128, btvMzeroMask);
810 return btVector3(_mm_and_ps(
r, btvFFF0fMask));
811 #elif defined(BT_USE_NEON)
812 return btVector3((btSimdFloat4)veorq_s32((int32x4_t)
v.mVec128, (int32x4_t)btvMzeroMask));
814 return btVector3(-
v.m_floats[0], -
v.m_floats[1], -
v.m_floats[2]);
822 #if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
823 __m128 vs = _mm_load_ss(&s);
824 vs = bt_pshufd_ps(vs, 0x80);
826 #elif defined(BT_USE_NEON)
827 float32x4_t
r = vmulq_n_f32(
v.mVec128, s);
828 return btVector3((float32x4_t)vandq_s32((int32x4_t)
r, btvFFF0Mask));
830 return btVector3(
v.m_floats[0] * s,
v.m_floats[1] * s,
v.m_floats[2] * s);
848 __m128 vs = _mm_load_ss(&s);
849 vs = _mm_div_ss(v1110, vs);
850 vs = bt_pshufd_ps(vs, 0x00);
862 #if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))
863 __m128 vec = _mm_div_ps(
v1.mVec128,
v2.mVec128);
864 vec = _mm_and_ps(vec, btvFFF0fMask);
866 #elif defined(BT_USE_NEON)
867 float32x4_t
x,
y,
v, m;
873 m = vrecpsq_f32(
y,
v);
875 m = vrecpsq_f32(
y,
v);
882 v1.m_floats[0] /
v2.m_floats[0],
883 v1.m_floats[1] /
v2.m_floats[1],
884 v1.m_floats[2] /
v2.m_floats[2]);
899 return v1.distance2(
v2);
906 return v1.distance(
v2);
926 return v1.triple(
v2, v3);
936 return v1.lerp(
v2,
t);
941 return (
v - *
this).length2();
946 return (
v - *
this).length();
953 return nrm.normalize();
960 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
962 __m128 O = _mm_mul_ps(wAxis.mVec128, mVec128);
964 __m128
C = wAxis.cross(mVec128).mVec128;
965 O = _mm_and_ps(O, btvFFF0fMask);
968 __m128 vsin = _mm_load_ss(&ssin);
969 __m128 vcos = _mm_load_ss(&scos);
971 __m128
Y = bt_pshufd_ps(O, 0xC9);
972 __m128
Z = bt_pshufd_ps(O, 0xD2);
973 O = _mm_add_ps(O,
Y);
974 vsin = bt_pshufd_ps(vsin, 0x80);
975 O = _mm_add_ps(O,
Z);
976 vcos = bt_pshufd_ps(vcos, 0x80);
979 O = O * wAxis.mVec128;
980 __m128
X = mVec128 - O;
992 _y = wAxis.cross(*
this);
994 return (o + _x *
btCos(_angle) + _y *
btSin(_angle));
1000 #if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)
1001 #if defined _WIN32 || defined(BT_USE_SSE)
1002 const long scalar_cutoff = 10;
1003 long _maxdot_large(
const float*
array,
const float* vec,
unsigned long array_count,
float* dotOut);
1004 #elif defined BT_USE_NEON
1005 const long scalar_cutoff = 4;
1006 extern long (*_maxdot_large)(
const float*
array,
const float* vec,
unsigned long array_count,
float* dotOut);
1008 if (array_count < scalar_cutoff)
1014 for (i = 0; i < array_count; i++)
1028 #if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)
1029 return _maxdot_large((
float*)
array, (
float*)&
m_floats[0], array_count, &dotOut);
1035 #if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)
1036 #if defined BT_USE_SSE
1037 const long scalar_cutoff = 10;
1038 long _mindot_large(
const float*
array,
const float* vec,
unsigned long array_count,
float* dotOut);
1039 #elif defined BT_USE_NEON
1040 const long scalar_cutoff = 4;
1041 extern long (*_mindot_large)(
const float*
array,
const float* vec,
unsigned long array_count,
float* dotOut);
1043 #error unhandled arch!
1046 if (array_count < scalar_cutoff)
1053 for (i = 0; i < array_count; i++)
1068 #if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)
1069 return _mindot_large((
float*)
array, (
float*)&
m_floats[0], array_count, &dotOut);
1084 #if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)
1092 mVec128 = rhs.mVec128;
1098 mVec128 =
v.mVec128;
1105 #if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)
1106 return btVector4(_mm_and_ps(mVec128, btvAbsfMask));
1107 #elif defined(BT_USE_NEON)
1210 #ifdef BT_USE_DOUBLE_PRECISION
1211 unsigned char*
dest = (
unsigned char*)&destVal;
1212 const unsigned char*
src = (
const unsigned char*)&sourceVal;
1222 unsigned char*
dest = (
unsigned char*)&destVal;
1223 const unsigned char*
src = (
const unsigned char*)&sourceVal;
1233 for (
int i = 0; i < 4; i++)
1243 for (
int i = 0; i < 4; i++)
1263 q[1] = -n[0] * p[2];
1275 q[0] = -n[2] * p[1];
1294 for (
int i = 0; i < 4; i++)
1300 for (
int i = 0; i < 4; i++)
1307 for (
int i = 0; i < 4; i++)
1313 for (
int i = 0; i < 4; i++)
1320 for (
int i = 0; i < 4; i++)
1326 for (
int i = 0; i < 4; i++)
1332 for (
int i = 0; i < 4; i++)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its X
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color or the default fallback if none is specified Separate Split a vector into its Y
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
btGeneric6DofConstraint & operator=(btGeneric6DofConstraint &other)
SIMD_FORCE_INLINE void btSetMin(T &a, const T &b)
SIMD_FORCE_INLINE void btSetMax(T &a, const T &b)
SIMD_FORCE_INLINE btScalar btAcos(btScalar x)
#define BT_DECLARE_ALIGNED_ALLOCATOR()
SIMD_FORCE_INLINE btScalar btCos(btScalar x)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE btScalar btSin(btScalar x)
#define ATTRIBUTE_ALIGNED16(a)
SIMD_FORCE_INLINE btScalar btFabs(btScalar x)
SIMD_FORCE_INLINE btScalar btSqrt(btScalar y)
#define SIMD_FORCE_INLINE
SIMD_FORCE_INLINE bool operator==(const btVector3 &other) const
SIMD_FORCE_INLINE void btPlaneSpace1(const T &n, T &p, T &q)
SIMD_FORCE_INLINE btScalar safeNorm() const
Return the norm (length) of the vector.
SIMD_FORCE_INLINE btScalar length2() const
Return the length of the vector squared.
SIMD_FORCE_INLINE void btUnSwapVector3Endian(btVector3 &vector)
btUnSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization
SIMD_FORCE_INLINE bool operator!=(const btVector3 &other) const
SIMD_FORCE_INLINE void deSerializeFloat(const struct btVector3FloatData &dataIn)
SIMD_FORCE_INLINE int maxAxis() const
Return the axis with the largest value Note return values are 0,1,2 for x, y, or z.
SIMD_FORCE_INLINE btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
SIMD_FORCE_INLINE void setY(btScalar _y)
Set the y value.
SIMD_FORCE_INLINE const btScalar & getZ() const
Return the z value.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SIMD_FORCE_INLINE btVector3 & operator/=(const btScalar &s)
Inversely scale the vector.
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
SIMD_FORCE_INLINE btScalar dot(const btVector3 &v) const
Return the dot product.
SIMD_FORCE_INLINE void setX(btScalar _x)
Set the x value.
SIMD_FORCE_INLINE void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
SIMD_FORCE_INLINE btScalar norm() const
Return the norm (length) of the vector.
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
SIMD_FORCE_INLINE btScalar btDot(const btVector3 &v1, const btVector3 &v2)
Return the dot product between two vectors.
SIMD_FORCE_INLINE void deSerialize(const struct btVector3DoubleData &dataIn)
SIMD_FORCE_INLINE btVector3 operator-(const btVector3 &v1, const btVector3 &v2)
Return the difference between two vectors.
SIMD_FORCE_INLINE btVector3 operator+(const btVector3 &v1, const btVector3 &v2)
Return the sum of two vectors (Point symantics)
SIMD_FORCE_INLINE btScalar triple(const btVector3 &v1, const btVector3 &v2) const
SIMD_FORCE_INLINE btScalar distance(const btVector3 &v) const
Return the distance between the ends of this and another vector This is symantically treating the vec...
SIMD_FORCE_INLINE void setMax(const btVector3 &other)
Set each element to the max of the current values and the values of another btVector3.
void getSkewSymmetricMatrix(btVector3 *v0, btVector3 *v1, btVector3 *v2) const
SIMD_FORCE_INLINE long minDot(const btVector3 *array, long array_count, btScalar &dotOut) const
returns index of minimum dot product between this and vectors in array[]
SIMD_FORCE_INLINE void btSwapScalarEndian(const btScalar &sourceVal, btScalar &destVal)
btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
SIMD_FORCE_INLINE btVector3 lerp(const btVector3 &v, const btScalar &t) const
Return the linear interpolation between this and another vector.
SIMD_FORCE_INLINE btVector3 & operator+=(const btVector3 &v)
Add a vector to this one.
SIMD_FORCE_INLINE void setZ(btScalar _z)
Set the z value.
SIMD_FORCE_INLINE btScalar btDistance(const btVector3 &v1, const btVector3 &v2)
Return the distance between two vectors.
SIMD_FORCE_INLINE void serializeFloat(struct btVector3FloatData &dataOut) const
SIMD_FORCE_INLINE btScalar btAngle(const btVector3 &v1, const btVector3 &v2)
Return the angle between two vectors.
SIMD_FORCE_INLINE void setInterpolate3(const btVector3 &v0, const btVector3 &v1, btScalar rt)
SIMD_FORCE_INLINE int furthestAxis() const
SIMD_FORCE_INLINE void btSwapVector3Endian(const btVector3 &sourceVec, btVector3 &destVec)
btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization
SIMD_FORCE_INLINE btScalar btTriple(const btVector3 &v1, const btVector3 &v2, const btVector3 &v3)
SIMD_FORCE_INLINE const btScalar & x() const
Return the x value.
SIMD_FORCE_INLINE bool fuzzyZero() const
SIMD_FORCE_INLINE btVector3 cross(const btVector3 &v) const
Return the cross product between this and another vector.
SIMD_FORCE_INLINE int closestAxis() const
SIMD_FORCE_INLINE btVector3 rotate(const btVector3 &wAxis, const btScalar angle) const
Return a rotated version of this vector.
SIMD_FORCE_INLINE btVector3 operator/(const btVector3 &v, const btScalar &s)
Return the vector inversely scaled by s.
SIMD_FORCE_INLINE int minAxis() const
Return the axis with the smallest value Note return values are 0,1,2 for x, y, or z.
SIMD_FORCE_INLINE void serialize(struct btVector3Data &dataOut) const
SIMD_FORCE_INLINE btVector3 normalized() const
Return a normalized version of this vector.
SIMD_FORCE_INLINE const btScalar & getX() const
Return the x value.
SIMD_FORCE_INLINE btVector3 operator*(const btVector3 &v1, const btVector3 &v2)
Return the elementwise product of two vectors.
SIMD_FORCE_INLINE btVector3 & safeNormalize()
SIMD_FORCE_INLINE void setMin(const btVector3 &other)
Set each element to the min of the current values and the values of another btVector3.
SIMD_FORCE_INLINE btVector3 dot3(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2) const
SIMD_FORCE_INLINE long maxDot(const btVector3 *array, long array_count, btScalar &dotOut) const
returns index of maximum dot product between this and vectors in array[]
SIMD_FORCE_INLINE void setW(btScalar _w)
Set the w value.
SIMD_FORCE_INLINE btVector3 & operator-=(const btVector3 &v)
Subtract a vector from this one.
SIMD_FORCE_INLINE btScalar btDistance2(const btVector3 &v1, const btVector3 &v2)
Return the distance squared between two vectors.
SIMD_FORCE_INLINE bool isZero() const
SIMD_FORCE_INLINE void serializeDouble(struct btVector3DoubleData &dataOut) const
SIMD_FORCE_INLINE btVector3 & operator*=(const btScalar &s)
Scale the vector.
SIMD_FORCE_INLINE btScalar distance2(const btVector3 &v) const
Return the distance squared between the ends of this and another vector This is symantically treating...
SIMD_FORCE_INLINE btVector3 btCross(const btVector3 &v1, const btVector3 &v2)
Return the cross product of two vectors.
SIMD_FORCE_INLINE void deSerializeDouble(const struct btVector3DoubleData &dataIn)
SIMD_FORCE_INLINE const btScalar & getY() const
Return the y value.
SIMD_FORCE_INLINE const btScalar & y() const
Return the y value.
SIMD_FORCE_INLINE btVector3 absolute() const
Return a vector with the absolute values of each element.
SIMD_FORCE_INLINE btScalar length() const
Return the length of the vector.
SIMD_FORCE_INLINE btVector4(const btScalar &_x, const btScalar &_y, const btScalar &_z, const btScalar &_w)
SIMD_FORCE_INLINE int minAxis4() const
SIMD_FORCE_INLINE int closestAxis4() const
SIMD_FORCE_INLINE void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z, const btScalar &_w)
Set x,y,z and zero w.
SIMD_FORCE_INLINE btVector4()
SIMD_FORCE_INLINE btVector4 absolute4() const
SIMD_FORCE_INLINE int maxAxis4() const
SyclQueue void void * src
CCL_NAMESPACE_BEGIN struct Window V