2
3
4
5
6
7
8
9
10
11
12
24
25
26
27
28
33
34
35
36
37
52
53
54
55
56
77
78
79
80
81
108
109
110
119SHZ_INLINE shz_vec4_t
shz_vec4_init(
float x,
float y,
float z,
float w) SHZ_NOEXCEPT;
133
134
135
183SHZ_INLINE shz_vec2_t
shz_vec2_clamp(shz_vec2_t vec,
float min,
float max) SHZ_NOEXCEPT;
186SHZ_INLINE shz_vec3_t
shz_vec3_clamp(shz_vec3_t vec,
float min,
float max) SHZ_NOEXCEPT;
189SHZ_INLINE shz_vec4_t
shz_vec4_clamp(shz_vec4_t vec,
float min,
float max) SHZ_NOEXCEPT;
246SHZ_INLINE shz_vec2_t
shz_vec2_minv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT;
249SHZ_INLINE shz_vec3_t
shz_vec3_minv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT;
252SHZ_INLINE shz_vec4_t
shz_vec4_minv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT;
255SHZ_INLINE shz_vec2_t
shz_vec2_maxv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT;
258SHZ_INLINE shz_vec3_t
shz_vec3_maxv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT;
261SHZ_INLINE shz_vec4_t
shz_vec4_maxv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT;
273SHZ_INLINE shz_vec2_t
shz_vec2_stepv( shz_vec2_t vec, shz_vec2_t edge) SHZ_NOEXCEPT;
276SHZ_INLINE shz_vec3_t
shz_vec3_stepv(shz_vec3_t vec, shz_vec3_t edge) SHZ_NOEXCEPT;
279SHZ_INLINE shz_vec4_t
shz_vec4_stepv(shz_vec4_t vec, shz_vec4_t edge) SHZ_NOEXCEPT;
282SHZ_INLINE shz_vec2_t
shz_vec2_step(shz_vec2_t vec,
float edge) SHZ_NOEXCEPT;
285SHZ_INLINE shz_vec3_t
shz_vec3_step(shz_vec3_t vec,
float edge) SHZ_NOEXCEPT;
288SHZ_INLINE shz_vec4_t
shz_vec4_step(shz_vec4_t vec,
float edge) SHZ_NOEXCEPT;
348
349
350
353SHZ_INLINE shz_vec2_t
shz_vec2_add(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
356SHZ_INLINE shz_vec3_t
shz_vec3_add(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
359SHZ_INLINE shz_vec4_t
shz_vec4_add(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
362SHZ_INLINE shz_vec2_t
shz_vec2_sub(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
365SHZ_INLINE shz_vec3_t
shz_vec3_sub(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
368SHZ_INLINE shz_vec4_t
shz_vec4_sub(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
371SHZ_INLINE shz_vec2_t
shz_vec2_mul(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
374SHZ_INLINE shz_vec3_t
shz_vec3_mul(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
377SHZ_INLINE shz_vec4_t
shz_vec4_mul(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
380SHZ_INLINE shz_vec2_t
shz_vec2_div(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
383SHZ_INLINE shz_vec3_t
shz_vec3_div(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
386SHZ_INLINE shz_vec4_t
shz_vec4_div(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
400
401
402
441
442
443
447
448
449
453
454
455
461
462
463
466SHZ_INLINE
float shz_vec2_dot(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT;
469SHZ_INLINE shz_vec2_t
shz_vec2_dot2(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2) SHZ_NOEXCEPT;
472SHZ_INLINE shz_vec3_t
shz_vec2_dot3(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2, shz_vec2_t r3) SHZ_NOEXCEPT;
475SHZ_INLINE
float shz_vec3_dot(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
478SHZ_INLINE shz_vec2_t
shz_vec3_dot2(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2) SHZ_NOEXCEPT;
481SHZ_INLINE shz_vec3_t
shz_vec3_dot3(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2, shz_vec3_t r3) SHZ_NOEXCEPT;
484SHZ_INLINE
float shz_vec4_dot(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT;
487SHZ_INLINE shz_vec2_t
shz_vec4_dot2(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2) SHZ_NOEXCEPT;
490SHZ_INLINE shz_vec3_t
shz_vec4_dot3(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2, shz_vec4_t r3) SHZ_NOEXCEPT;
511SHZ_INLINE shz_vec2_t
shz_vec2_move(shz_vec2_t vec, shz_vec2_t target,
float max_distance) SHZ_NOEXCEPT;
514SHZ_INLINE shz_vec3_t
shz_vec3_move(shz_vec3_t vec, shz_vec3_t target,
float max_distance) SHZ_NOEXCEPT;
517SHZ_INLINE shz_vec4_t
shz_vec4_move(shz_vec4_t vec, shz_vec4_t target,
float max_distance) SHZ_NOEXCEPT;
520SHZ_INLINE shz_vec2_t
shz_vec2_lerp(shz_vec2_t a, shz_vec2_t b,
float t) SHZ_NOEXCEPT;
523SHZ_INLINE shz_vec3_t
shz_vec3_lerp(shz_vec3_t a, shz_vec3_t b,
float t) SHZ_NOEXCEPT;
526SHZ_INLINE shz_vec4_t
shz_vec4_lerp(shz_vec4_t a, shz_vec4_t b,
float t) SHZ_NOEXCEPT;
529SHZ_INLINE shz_vec2_t
shz_vec2_reflect(shz_vec2_t incidence, shz_vec2_t normal) SHZ_NOEXCEPT;
532SHZ_INLINE shz_vec3_t
shz_vec3_reflect(shz_vec3_t incidence, shz_vec3_t normal) SHZ_NOEXCEPT;
535SHZ_INLINE shz_vec4_t
shz_vec4_reflect(shz_vec4_t incidence, shz_vec4_t normal) SHZ_NOEXCEPT;
538SHZ_INLINE shz_vec2_t
shz_vec2_refract(shz_vec2_t incidence, shz_vec2_t normal,
float eta) SHZ_NOEXCEPT;
541SHZ_INLINE shz_vec3_t
shz_vec3_refract(shz_vec3_t incidence, shz_vec3_t normal,
float eta) SHZ_NOEXCEPT;
544SHZ_INLINE shz_vec4_t
shz_vec4_refract(shz_vec4_t incidence, shz_vec4_t normal,
float eta) SHZ_NOEXCEPT;
547
548
549
550
551
552
556SHZ_INLINE shz_vec3_t
shz_vec3_cross(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT;
568
569
570
571
575
576
577
578
582
583
584
585
594
595
596
599SHZ_INLINE
float shz_vec3_triple(shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) SHZ_NOEXCEPT;
605SHZ_INLINE shz_vec3_t
shz_vec3_barycenter(shz_vec3_t p, shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) SHZ_NOEXCEPT;
611SHZ_INLINE shz_vec3_t
shz_vec3_cubic_hermite(shz_vec3_t vec, shz_vec3_t tangent1, shz_vec3_t vec2, shz_vec3_t tangent2,
float amounht) SHZ_NOEXCEPT;
616
617
618
654
655
656
657
658
659
660
664
665
666
667
668
669
670
674
675
676
677
678
679
680
686
687
688
694SHZ_INLINE shz_vec4_t
shz_vec2_vec4(shz_vec2_t vec,
float z,
float w) SHZ_NOEXCEPT;
702
703
704
707 SHZ_INLINE shz_vec2_t
shz_vec2_swizzle(shz_vec2_t vec,
unsigned x_idx,
unsigned y_idx) SHZ_NOEXCEPT;
710 SHZ_INLINE shz_vec3_t
shz_vec3_swizzle(shz_vec3_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx) SHZ_NOEXCEPT;
713 SHZ_INLINE shz_vec4_t
shz_vec4_swizzle(shz_vec4_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx,
unsigned w_idx) SHZ_NOEXCEPT;
720
721
722
725#define shz_vec2_deref(ptr) (*((SHZ_ALIASING
shz_vec2_t*)(ptr)))
728#define shz_vec3_deref(ptr) (*((SHZ_ALIASING
shz_vec3_t*)(ptr)))
731#define shz_vec4_deref(ptr) (*((SHZ_ALIASING
shz_vec4_t*)(ptr)))
734#define shz_vec2_from(value) SHZ_CONVERT
(shz_vec2_t, value)
737#define shz_vec3_from(value) SHZ_CONVERT
(shz_vec3_t, value)
740#define shz_vec4_from(value) SHZ_CONVERT
(shz_vec4_t, value)
743#define shz_vec2_to(type, vector) SHZ_CONVERT
(type, vector)
746#define shz_vec3_to(type, vector) SHZ_CONVERT
(type, vector)
749#define shz_vec4_to(type, vector) SHZ_CONVERT
(type, vector)
754
755
756
761# define shz_vec_abs(vec)
763 shz_vec2_t: shz_vec2_abs,
764 shz_vec3_t: shz_vec3_abs,
765 shz_vec4_t: shz_vec4_abs)(vec)
768# define shz_vec_neg(vec)
770 shz_vec2_t: shz_vec2_neg,
771 shz_vec3_t: shz_vec3_neg,
772 shz_vec4_t: shz_vec4_neg)(vec)
775# define shz_vec_inv(vec)
777 shz_vec2_t: shz_vec2_inv,
778 shz_vec3_t: shz_vec3_inv,
779 shz_vec4_t: shz_vec4_inv)(vec)
782# define shz_vec_max(vec)
784 shz_vec2_t: shz_vec2_max,
785 shz_vec3_t: shz_vec3_max,
786 shz_vec4_t: shz_vec4_max)(vec)
789# define shz_vec_min(vec)
791 shz_vec2_t: shz_vec2_min,
792 shz_vec3_t: shz_vec3_min,
793 shz_vec4_t: shz_vec4_min)(vec)
796# define shz_vec_clamp(vec, min, max)
798 shz_vec2_t: shz_vec2_clamp,
799 shz_vec3_t: shz_vec3_clamp,
800 shz_vec4_t: shz_vec4_clamp)(vec, min, max)
803# define shz_vec_equal(vec1, vec2)
805 shz_vec2_t: shz_vec2_equal,
806 shz_vec3_t: shz_vec3_equal,
807 shz_vec4_t: shz_vec4_equal)(vec1, vec2)
810# define shz_vec_add(vec1, vec2)
812 shz_vec2_t: shz_vec2_add,
813 shz_vec3_t: shz_vec3_add,
814 shz_vec4_t: shz_vec4_add)(vec1, vec2)
817# define shz_vec_sub(vec1, vec2)
819 shz_vec2_t: shz_vec2_sub,
820 shz_vec3_t: shz_vec3_sub,
821 shz_vec4_t: shz_vec4_sub)(vec1, vec2)
824# define shz_vec_mul(vec1, vec2)
826 shz_vec2_t: shz_vec2_mul,
827 shz_vec3_t: shz_vec3_mul,
828 shz_vec4_t: shz_vec4_mul)(vec1, vec2)
831# define shz_vec_div(vec1, vec2)
833 shz_vec2_t: shz_vec2_div,
834 shz_vec3_t: shz_vec3_div,
835 shz_vec4_t: shz_vec4_div)(vec1, vec2)
838# define shz_vec_scale(vec, factor)
840 shz_vec2_t: shz_vec2_scale,
841 shz_vec3_t: shz_vec3_scale,
842 shz_vec4_t: shz_vec4_scale)(vec, factor)
845# define shz_vec_dot(vec1, vec2)
847 shz_vec2_t: shz_vec2_dot,
848 shz_vec3_t: shz_vec3_dot,
849 shz_vec4_t: shz_vec4_dot)(vec1, vec2)
852# define shz_vec_dot2(l, r1, r2)
854 shz_vec2_t: shz_vec2_dot2,
855 shz_vec3_t: shz_vec3_dot2,
856 shz_vec4_t: shz_vec4_dot2)(l, r1, r2)
859# define shz_vec_dot3(l, r1, r2, r3)
861 shz_vec2_t: shz_vec2_dot3,
862 shz_vec3_t: shz_vec3_dot3,
863 shz_vec4_t: shz_vec4_dot3)(l, r1, r2, r3)
866# define shz_vec_magnitude_sqr(vec)
868 shz_vec2_t: shz_vec2_magnitude_sqr,
869 shz_vec3_t: shz_vec3_magnitude_sqr,
870 shz_vec4_t: shz_vec4_magnitude_sqr)(vec)
873# define shz_vec_magnitude(vec)
875 shz_vec2_t: shz_vec2_magnitude,
876 shz_vec3_t: shz_vec3_magnitude,
877 shz_vec4_t: shz_vec4_magnitude)(vec)
880# define shz_vec_magnitude_inv(vec)
882 shz_vec2_t: shz_vec2_magnitude_inv,
883 shz_vec3_t: shz_vec3_magnitude_inv,
884 shz_vec4_t: shz_vec4_magnitude_inv)(vec)
887# define shz_vec_normalize(vec)
889 shz_vec2_t: shz_vec2_normalize,
890 shz_vec3_t: shz_vec3_normalize,
891 shz_vec4_t: shz_vec4_normalize)(vec)
894# define shz_vec_normalize_safe(vec)
896 shz_vec2_t: shz_vec2_normalize_safe,
897 shz_vec3_t: shz_vec3_normalize_safe,
898 shz_vec4_t: shz_vec4_normalize_safe)(vec)
901# define shz_vec_distance(vec1, vec2)
903 shz_vec2_t: shz_vec2_distance,
904 shz_vec3_t: shz_vec3_distance,
905 shz_vec4_t: shz_vec4_distance)(vec1, vec2)
908# define shz_vec_move(vec, target, maxdist)
910 shz_vec2_t: shz_vec2_move,
911 shz_vec3_t: shz_vec3_move,
912 shz_vec4_t: shz_vec4_move)(vec, target, maxdist)
915# define shz_vec_distance_sqr(vec1, vec2)
917 shz_vec2_t: shz_vec2_distance_sqr,
918 shz_vec3_t: shz_vec3_distance_sqr,
919 shz_vec4_t: shz_vec4_distance_sqr)(vec1, vec2)
922# define shz_vec_lerp(vec1, vec2, t)
924 shz_vec2_t: shz_vec2_lerp,
925 shz_vec3_t: shz_vec3_lerp,
926 shz_vec4_t: shz_vec4_lerp)(vec1, vec2, t)
929# define shz_vec_reflect(incidence, normal)
930 _Generic((incidence),
931 shz_vec2_t: shz_vec2_reflect,
932 shz_vec3_t: shz_vec3_reflect,
933 shz_vec4_t: shz_vec4_reflect)(incidence, normal)
936# define shz_vec_refract(incidence, normal, eta)
937 _Generic((incidence),
938 shz_vec2_t: shz_vec2_refract,
939 shz_vec3_t: shz_vec3_refract,
940 shz_vec4_t: shz_vec4_refract)(incidence, normal, eta)
943# define shz_vec_cross(vec1, vec2)
945 shz_vec2_t: shz_vec2_cross,
946 shz_vec3_t: shz_vec3_cross)(vec1, vec2)
949# define shz_vec_project(vec1, vec2)
951 shz_vec2_t: shz_vec2_project,
952 shz_vec3_t: shz_vec3_project,
953 shz_vec4_t: shz_vec4_project)(vec1, vec2)
956# define shz_vec_project_safe(vec1, vec2)
958 shz_vec2_t: shz_vec2_project_safe,
959 shz_vec3_t: shz_vec3_project_safe,
960 shz_vec4_t: shz_vec4_project_safe)(vec1, vec2)
963# define shz_vec_angles(vec)
965 shz_vec2_t: shz_vec2_angle,
966 shz_vec3_t: shz_vec3_angles)(vec)
969# define shz_vec_angle_between(vec1, vec2)
971 shz_vec2_t: shz_vec2_angle_between,
972 shz_vec3_t: shz_vec3_angle_between)(vec1, vec2)
975# define shz_vec_swizzle(vec, ...)
977 shz_vec2_t: shz_vec2_swizzle,
978 shz_vec3_t: shz_vec3_swizzle,
979 shz_vec4_t: shz_vec4_swizzle)(vec, __VA_ARGS__)
982# define shz_vec_floor(vec)
984 shz_vec2_t: shz_vec2_floor,
985 shz_vec3_t: shz_vec3_floor,
986 shz_vec4_t: shz_vec4_floor)(vec)
989# define shz_vec_ceil(vec)
991 shz_vec2_t: shz_vec2_ceil,
992 shz_vec3_t: shz_vec3_ceil,
993 shz_vec4_t: shz_vec4_ceil)(vec)
996# define shz_vec_round(vec)
998 shz_vec2_t: shz_vec2_round,
999 shz_vec3_t: shz_vec3_round,
1000 shz_vec4_t: shz_vec4_round)(vec)
1003# define shz_vec_fract(vec)
1005 shz_vec2_t: shz_vec2_fract,
1006 shz_vec3_t: shz_vec3_fract,
1007 shz_vec4_t: shz_vec4_fract)(vec)
1010# define shz_vec_sign(vec)
1012 shz_vec2_t: shz_vec2_sign,
1013 shz_vec3_t: shz_vec3_sign,
1014 shz_vec4_t: shz_vec4_sign)(vec)
1017# define shz_vec_saturate(vec)
1019 shz_vec2_t: shz_vec2_saturate,
1020 shz_vec3_t: shz_vec3_saturate,
1021 shz_vec4_t: shz_vec4_saturate)(vec)
1024# define shz_vec_minv(a, b)
1026 shz_vec2_t: shz_vec2_minv,
1027 shz_vec3_t: shz_vec3_minv,
1028 shz_vec4_t: shz_vec4_minv)(a, b)
1031# define shz_vec_maxv(a, b)
1033 shz_vec2_t: shz_vec2_maxv,
1034 shz_vec3_t: shz_vec3_maxv,
1035 shz_vec4_t: shz_vec4_maxv)(a, b)
1038# define shz_vec_inv_sqrtf(vec)
1040 shz_vec2_t: shz_vec2_inv_sqrtf,
1041 shz_vec3_t: shz_vec3_inv_sqrtf,
1042 shz_vec4_t: shz_vec4_inv_sqrtf)(vec)
1045# define shz_vec_sqrtf(vec)
1047 shz_vec2_t: shz_vec2_sqrtf,
1048 shz_vec3_t: shz_vec3_sqrtf,
1049 shz_vec4_t: shz_vec4_sqrtf)(vec)
1052# define shz_vec_stepv(vec, edge)
1054 shz_vec2_t: shz_vec2_stepv,
1055 shz_vec3_t: shz_vec3_stepv,
1056 shz_vec4_t: shz_vec4_stepv)(vec, edge)
1059# define shz_vec_step(vec, edge)
1061 shz_vec2_t: shz_vec2_step,
1062 shz_vec3_t: shz_vec3_step,
1063 shz_vec4_t: shz_vec4_step)(vec, edge)
1066# define shz_vec_smoothstepv(vec, edge0, edge1)
1068 shz_vec2_t: shz_vec2_smoothstepv,
1069 shz_vec3_t: shz_vec3_smoothstepv,
1070 shz_vec4_t: shz_vec4_smoothstepv)(vec, edge0, edge1)
1073# define shz_vec_smoothstep(vec, edge0, edge1)
1075 shz_vec2_t: shz_vec2_smoothstep,
1076 shz_vec3_t: shz_vec3_smoothstep,
1077 shz_vec4_t: shz_vec4_smoothstep)(vec, edge0, edge1)
1080# define shz_vec_smoothstepv_safe(vec, edge0, edge1)
1082 shz_vec2_t: shz_vec2_smoothstepv_safe,
1083 shz_vec3_t: shz_vec3_smoothstepv_safe,
1084 shz_vec4_t: shz_vec4_smoothstepv_safe)(vec, edge0, edge1)
1087# define shz_vec_smoothstep_safe(vec, edge0, edge1)
1089 shz_vec2_t: shz_vec2_smoothstep_safe,
1090 shz_vec3_t: shz_vec3_smoothstep_safe,
1091 shz_vec4_t: shz_vec4_smoothstep_safe)(vec, edge0, edge1)
1096 SHZ_INLINE shz_vec2_t shz_vec_abs(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_abs(vec
); }
1097 SHZ_INLINE shz_vec3_t shz_vec_abs(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_abs(vec
); }
1098 SHZ_INLINE shz_vec4_t shz_vec_abs(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_abs(vec
); }
1101 SHZ_INLINE shz_vec2_t shz_vec_neg(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_neg(vec
); }
1102 SHZ_INLINE shz_vec3_t shz_vec_neg(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_neg(vec
); }
1103 SHZ_INLINE shz_vec4_t shz_vec_neg(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_neg(vec
); }
1106 SHZ_INLINE shz_vec2_t shz_vec_inv(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_inv(vec
); }
1107 SHZ_INLINE shz_vec3_t shz_vec_inv(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_inv(vec
); }
1108 SHZ_INLINE shz_vec4_t shz_vec_inv(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_inv(vec
); }
1111 SHZ_INLINE
float shz_vec_max(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_max(vec
); }
1112 SHZ_INLINE
float shz_vec_max(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_max(vec
); }
1113 SHZ_INLINE
float shz_vec_max(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_max(vec
); }
1116 SHZ_INLINE
float shz_vec_min(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_min(vec
); }
1117 SHZ_INLINE
float shz_vec_min(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_min(vec
); }
1118 SHZ_INLINE
float shz_vec_min(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_min(vec
); }
1121 SHZ_INLINE shz_vec2_t shz_vec_clamp(shz_vec2_t vec,
float min,
float max) SHZ_NOEXCEPT {
return shz_vec2_clamp(vec
, min
, max
); }
1122 SHZ_INLINE shz_vec3_t shz_vec_clamp(shz_vec3_t vec,
float min,
float max) SHZ_NOEXCEPT {
return shz_vec3_clamp(vec
, min
, max
); }
1123 SHZ_INLINE shz_vec4_t shz_vec_clamp(shz_vec4_t vec,
float min,
float max) SHZ_NOEXCEPT {
return shz_vec4_clamp(vec
, min
, max
); }
1126 SHZ_INLINE
bool shz_vec_equal(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_equal(vec1
, vec2
); }
1127 SHZ_INLINE
bool shz_vec_equal(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_equal(vec1
, vec2
); }
1128 SHZ_INLINE
bool shz_vec_equal(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_equal(vec1
, vec2
); }
1131 SHZ_INLINE shz_vec2_t shz_vec_add(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_add(vec1
, vec2
); }
1132 SHZ_INLINE shz_vec3_t shz_vec_add(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_add(vec1
, vec2
); }
1133 SHZ_INLINE shz_vec4_t shz_vec_add(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_add(vec1
, vec2
); }
1136 SHZ_INLINE shz_vec2_t shz_vec_sub(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_sub(vec1
, vec2
); }
1137 SHZ_INLINE shz_vec3_t shz_vec_sub(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_sub(vec1
, vec2
); }
1138 SHZ_INLINE shz_vec4_t shz_vec_sub(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_sub(vec1
, vec2
); }
1141 SHZ_INLINE shz_vec2_t shz_vec_mul(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_mul(vec1
, vec2
); }
1142 SHZ_INLINE shz_vec3_t shz_vec_mul(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_mul(vec1
, vec2
); }
1143 SHZ_INLINE shz_vec4_t shz_vec_mul(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_mul(vec1
, vec2
); }
1146 SHZ_INLINE shz_vec2_t shz_vec_div(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_div(vec1
, vec2
); }
1147 SHZ_INLINE shz_vec3_t shz_vec_div(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_div(vec1
, vec2
); }
1148 SHZ_INLINE shz_vec4_t shz_vec_div(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_div(vec1
, vec2
); }
1151 SHZ_INLINE shz_vec2_t shz_vec_scale(shz_vec2_t vec,
float factor) SHZ_NOEXCEPT {
return shz_vec2_scale(vec
, factor
); }
1152 SHZ_INLINE shz_vec3_t shz_vec_scale(shz_vec3_t vec,
float factor) SHZ_NOEXCEPT {
return shz_vec3_scale(vec
, factor
); }
1153 SHZ_INLINE shz_vec4_t shz_vec_scale(shz_vec4_t vec,
float factor) SHZ_NOEXCEPT {
return shz_vec4_scale(vec
, factor
); }
1156 SHZ_INLINE
float shz_vec_dot(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_dot(vec1
, vec2
); }
1157 SHZ_INLINE
float shz_vec_dot(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_dot(vec1
, vec2
); }
1158 SHZ_INLINE
float shz_vec_dot(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_dot(vec1
, vec2
); }
1161 SHZ_INLINE shz_vec2_t shz_vec_dot2(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2) SHZ_NOEXCEPT {
return shz_vec2_dot2(l
, r1
, r2
); }
1162 SHZ_INLINE shz_vec2_t shz_vec_dot2(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2) SHZ_NOEXCEPT {
return shz_vec3_dot2(l
, r1
, r2
); }
1163 SHZ_INLINE shz_vec2_t shz_vec_dot2(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2) SHZ_NOEXCEPT {
return shz_vec4_dot2(l
, r1
, r2
); }
1166 SHZ_INLINE shz_vec3_t shz_vec_dot3(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2, shz_vec2_t r3) SHZ_NOEXCEPT {
return shz_vec2_dot3(l
, r1
, r2
, r3
); }
1167 SHZ_INLINE shz_vec3_t shz_vec_dot3(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2, shz_vec3_t r3) SHZ_NOEXCEPT {
return shz_vec3_dot3(l
, r1
, r2
, r3
); }
1168 SHZ_INLINE shz_vec3_t shz_vec_dot3(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2, shz_vec4_t r3) SHZ_NOEXCEPT {
return shz_vec4_dot3(l
, r1
, r2
, r3
); }
1176 SHZ_INLINE
float shz_vec_magnitude(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_magnitude(vec
); }
1177 SHZ_INLINE
float shz_vec_magnitude(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_magnitude(vec
); }
1178 SHZ_INLINE
float shz_vec_magnitude(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_magnitude(vec
); }
1186 SHZ_INLINE shz_vec2_t shz_vec_normalize(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_normalize(vec
); }
1187 SHZ_INLINE shz_vec3_t shz_vec_normalize(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_normalize(vec
); }
1188 SHZ_INLINE shz_vec4_t shz_vec_normalize(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_normalize(vec
); }
1196 SHZ_INLINE
float shz_vec_distance(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_distance(vec1
, vec2
); }
1197 SHZ_INLINE
float shz_vec_distance(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_distance(vec1
, vec2
); }
1198 SHZ_INLINE
float shz_vec_distance(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_distance(vec1
, vec2
); }
1201 SHZ_INLINE
float shz_vec_distance_sqr(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_distance_sqr(vec1
, vec2
); }
1202 SHZ_INLINE
float shz_vec_distance_sqr(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_distance_sqr(vec1
, vec2
); }
1203 SHZ_INLINE
float shz_vec_distance_sqr(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_distance_sqr(vec1
, vec2
); }
1206 SHZ_INLINE shz_vec2_t shz_vec_move(shz_vec2_t vec, shz_vec2_t target,
float maxdist) SHZ_NOEXCEPT {
return shz_vec2_move(vec
, target
, maxdist
); }
1207 SHZ_INLINE shz_vec3_t shz_vec_move(shz_vec3_t vec, shz_vec3_t target,
float maxdist) SHZ_NOEXCEPT {
return shz_vec3_move(vec
, target
, maxdist
); }
1208 SHZ_INLINE shz_vec4_t shz_vec_move(shz_vec4_t vec, shz_vec4_t target,
float maxdist) SHZ_NOEXCEPT {
return shz_vec4_move(vec
, target
, maxdist
); }
1211 SHZ_INLINE shz_vec2_t shz_vec_lerp(shz_vec2_t vec1, shz_vec2_t vec2,
float t) SHZ_NOEXCEPT {
return shz_vec2_lerp(vec1
, vec2
, t
); }
1212 SHZ_INLINE shz_vec3_t shz_vec_lerp(shz_vec3_t vec1, shz_vec3_t vec2,
float t) SHZ_NOEXCEPT {
return shz_vec3_lerp(vec1
, vec2
, t
); }
1213 SHZ_INLINE shz_vec4_t shz_vec_lerp(shz_vec4_t vec1, shz_vec4_t vec2,
float t) SHZ_NOEXCEPT {
return shz_vec4_lerp(vec1
, vec2
, t
); }
1216 SHZ_INLINE shz_vec2_t shz_vec_reflect(shz_vec2_t incidence, shz_vec2_t normal) SHZ_NOEXCEPT {
return shz_vec2_reflect(incidence
, normal
); }
1217 SHZ_INLINE shz_vec3_t shz_vec_reflect(shz_vec3_t incidence, shz_vec3_t normal) SHZ_NOEXCEPT {
return shz_vec3_reflect(incidence
, normal
); }
1218 SHZ_INLINE shz_vec4_t shz_vec_reflect(shz_vec4_t incidence, shz_vec4_t normal) SHZ_NOEXCEPT {
return shz_vec4_reflect(incidence
, normal
); }
1221 SHZ_INLINE shz_vec2_t shz_vec_refract(shz_vec2_t incidence, shz_vec2_t normal,
float eta) SHZ_NOEXCEPT {
return shz_vec2_refract(incidence
, normal
, eta
); }
1222 SHZ_INLINE shz_vec3_t shz_vec_refract(shz_vec3_t incidence, shz_vec3_t normal,
float eta) SHZ_NOEXCEPT {
return shz_vec3_refract(incidence
, normal
, eta
); }
1223 SHZ_INLINE shz_vec4_t shz_vec_refract(shz_vec4_t incidence, shz_vec4_t normal,
float eta) SHZ_NOEXCEPT {
return shz_vec4_refract(incidence
, normal
, eta
); }
1226 SHZ_INLINE
float shz_vec_cross(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_cross(vec1
, vec2
); }
1227 SHZ_INLINE shz_vec3_t shz_vec_cross(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_cross(vec1
, vec2
); }
1230 SHZ_INLINE shz_vec2_t shz_vec_project(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_project(vec1
, vec2
); }
1231 SHZ_INLINE shz_vec3_t shz_vec_project(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_project(vec1
, vec2
); }
1232 SHZ_INLINE shz_vec4_t shz_vec_project(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_project(vec1
, vec2
); }
1235 SHZ_INLINE shz_vec2_t shz_vec_project_safe(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_project_safe(vec1
, vec2
); }
1236 SHZ_INLINE shz_vec3_t shz_vec_project_safe(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_project_safe(vec1
, vec2
); }
1237 SHZ_INLINE shz_vec4_t shz_vec_project_safe(shz_vec4_t vec1, shz_vec4_t vec2) SHZ_NOEXCEPT {
return shz_vec4_project_safe(vec1
, vec2
); }
1240 SHZ_INLINE
float shz_vec_angles(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_angle(vec
); }
1241 SHZ_INLINE shz_vec3_t shz_vec_angles(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_angles(vec
); }
1244 SHZ_INLINE
float shz_vec_angle_between(shz_vec2_t vec1, shz_vec2_t vec2) SHZ_NOEXCEPT {
return shz_vec2_angle_between(vec1
, vec2
); }
1245 SHZ_INLINE
float shz_vec_angle_between(shz_vec3_t vec1, shz_vec3_t vec2) SHZ_NOEXCEPT {
return shz_vec3_angle_between(vec1
, vec2
); }
1248 SHZ_INLINE shz_vec2_t shz_vec_swizzle(shz_vec2_t vec,
unsigned x_idx,
unsigned y_idx) SHZ_NOEXCEPT {
1251 SHZ_INLINE shz_vec3_t shz_vec_swizzle(shz_vec3_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx) SHZ_NOEXCEPT {
1254 SHZ_INLINE shz_vec4_t shz_vec_swizzle(shz_vec4_t vec,
unsigned x_idx,
unsigned y_idx,
unsigned z_idx,
unsigned w_idx) SHZ_NOEXCEPT {
1259 SHZ_INLINE shz_vec2_t shz_vec_floor(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_floor(vec
); }
1260 SHZ_INLINE shz_vec3_t shz_vec_floor(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_floor(vec
); }
1261 SHZ_INLINE shz_vec4_t shz_vec_floor(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_floor(vec
); }
1264 SHZ_INLINE shz_vec2_t shz_vec_ceil(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_ceil(vec
); }
1265 SHZ_INLINE shz_vec3_t shz_vec_ceil(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_ceil(vec
); }
1266 SHZ_INLINE shz_vec4_t shz_vec_ceil(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_ceil(vec
); }
1269 SHZ_INLINE shz_vec2_t shz_vec_round(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_round(vec
); }
1270 SHZ_INLINE shz_vec3_t shz_vec_round(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_round(vec
); }
1271 SHZ_INLINE shz_vec4_t shz_vec_round(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_round(vec
); }
1274 SHZ_INLINE shz_vec2_t shz_vec_fract(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_fract(vec
); }
1275 SHZ_INLINE shz_vec3_t shz_vec_fract(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_fract(vec
); }
1276 SHZ_INLINE shz_vec4_t shz_vec_fract(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_fract(vec
); }
1279 SHZ_INLINE shz_vec2_t shz_vec_sign(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_sign(vec
); }
1280 SHZ_INLINE shz_vec3_t shz_vec_sign(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_sign(vec
); }
1281 SHZ_INLINE shz_vec4_t shz_vec_sign(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_sign(vec
); }
1284 SHZ_INLINE shz_vec2_t shz_vec_saturate(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_saturate(vec
); }
1285 SHZ_INLINE shz_vec3_t shz_vec_saturate(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_saturate(vec
); }
1286 SHZ_INLINE shz_vec4_t shz_vec_saturate(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_saturate(vec
); }
1289 SHZ_INLINE shz_vec2_t shz_vec_minv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT {
return shz_vec2_minv(a
, b
); }
1290 SHZ_INLINE shz_vec3_t shz_vec_minv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT {
return shz_vec3_minv(a
, b
); }
1291 SHZ_INLINE shz_vec4_t shz_vec_minv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT {
return shz_vec4_minv(a
, b
); }
1294 SHZ_INLINE shz_vec2_t shz_vec_maxv(shz_vec2_t a, shz_vec2_t b) SHZ_NOEXCEPT {
return shz_vec2_maxv(a
, b
); }
1295 SHZ_INLINE shz_vec3_t shz_vec_maxv(shz_vec3_t a, shz_vec3_t b) SHZ_NOEXCEPT {
return shz_vec3_maxv(a
, b
); }
1296 SHZ_INLINE shz_vec4_t shz_vec_maxv(shz_vec4_t a, shz_vec4_t b) SHZ_NOEXCEPT {
return shz_vec4_maxv(a
, b
); }
1299 SHZ_INLINE shz_vec2_t shz_vec_inv_sqrtf(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_inv_sqrtf(vec
); }
1300 SHZ_INLINE shz_vec3_t shz_vec_inv_sqrtf(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_inv_sqrtf(vec
); }
1301 SHZ_INLINE shz_vec4_t shz_vec_inv_sqrtf(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_inv_sqrtf(vec
); }
1304 SHZ_INLINE shz_vec2_t shz_vec_sqrtf(shz_vec2_t vec) SHZ_NOEXCEPT {
return shz_vec2_sqrtf(vec
); }
1305 SHZ_INLINE shz_vec3_t shz_vec_sqrtf(shz_vec3_t vec) SHZ_NOEXCEPT {
return shz_vec3_sqrtf(vec
); }
1306 SHZ_INLINE shz_vec4_t shz_vec_sqrtf(shz_vec4_t vec) SHZ_NOEXCEPT {
return shz_vec4_sqrtf(vec
); }
1309 SHZ_INLINE shz_vec2_t shz_vec_step(shz_vec2_t vec,
float edge) SHZ_NOEXCEPT {
return shz_vec2_step (vec
, edge
); }
1310 SHZ_INLINE shz_vec2_t shz_vec_step(shz_vec2_t vec, shz_vec2_t edge) SHZ_NOEXCEPT {
return shz_vec2_stepv(vec
, edge
); }
1311 SHZ_INLINE shz_vec3_t shz_vec_step(shz_vec3_t vec,
float edge) SHZ_NOEXCEPT {
return shz_vec3_step (vec
, edge
); }
1312 SHZ_INLINE shz_vec3_t shz_vec_step(shz_vec3_t vec, shz_vec3_t edge) SHZ_NOEXCEPT {
return shz_vec3_stepv(vec
, edge
); }
1313 SHZ_INLINE shz_vec4_t shz_vec_step(shz_vec4_t vec,
float edge) SHZ_NOEXCEPT {
return shz_vec4_step (vec
, edge
); }
1314 SHZ_INLINE shz_vec4_t shz_vec_step(shz_vec4_t vec, shz_vec4_t edge) SHZ_NOEXCEPT {
return shz_vec4_stepv(vec
, edge
); }
1317 SHZ_INLINE shz_vec2_t shz_vec_smoothstep(shz_vec2_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstep (vec
, edge0
, edge1
); }
1318 SHZ_INLINE shz_vec2_t shz_vec_smoothstep(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstepv(vec
, edge0
, edge1
); }
1319 SHZ_INLINE shz_vec3_t shz_vec_smoothstep(shz_vec3_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstep (vec
, edge0
, edge1
); }
1320 SHZ_INLINE shz_vec3_t shz_vec_smoothstep(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstepv(vec
, edge0
, edge1
); }
1321 SHZ_INLINE shz_vec4_t shz_vec_smoothstep(shz_vec4_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstep (vec
, edge0
, edge1
); }
1322 SHZ_INLINE shz_vec4_t shz_vec_smoothstep(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstepv(vec
, edge0
, edge1
); }
1325 SHZ_INLINE shz_vec2_t shz_vec_smoothstep_safe(shz_vec2_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstep_safe (vec
, edge0
, edge1
); }
1326 SHZ_INLINE shz_vec2_t shz_vec_smoothstep_safe(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) SHZ_NOEXCEPT {
return shz_vec2_smoothstepv_safe(vec
, edge0
, edge1
); }
1327 SHZ_INLINE shz_vec3_t shz_vec_smoothstep_safe(shz_vec3_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstep_safe (vec
, edge0
, edge1
); }
1328 SHZ_INLINE shz_vec3_t shz_vec_smoothstep_safe(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) SHZ_NOEXCEPT {
return shz_vec3_smoothstepv_safe(vec
, edge0
, edge1
); }
1329 SHZ_INLINE shz_vec4_t shz_vec_smoothstep_safe(shz_vec4_t vec,
float edge0,
float edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstep_safe (vec
, edge0
, edge1
); }
1330 SHZ_INLINE shz_vec4_t shz_vec_smoothstep_safe(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) SHZ_NOEXCEPT {
return shz_vec4_smoothstepv_safe(vec
, edge0
, edge1
); }
1334#include "inline/shz_vector.inl.h"
shz_vec2_t shz_vec2_inv_sqrtf(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the inverse square root of the given vector's components.
float shz_vec3_max(shz_vec3_t vec) noexcept
Returns the maximum value of the given vector's 3 components.
shz_vec3_t shz_vec3_scale(shz_vec3_t vec, float factor) noexcept
Returns a 3D vector whose component values are those of the given vector multiplied by a factor.
shz_vec3_t shz_vec3_add(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns a 3D vector whose components are the sums of the given vectors' components.
float shz_vec2_max(shz_vec2_t vec) noexcept
Returns the maximum value of both of the given vector's components.
shz_vec3_t shz_vec3_cross(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns the vector produced by taking the cross-product of the two given 3D vectors.
float shz_vec3_magnitude(shz_vec3_t vec) noexcept
Returns the magnitude of the given 3D vector.
float shz_vec3_magnitude_sqr(shz_vec3_t vec) noexcept
Returns the squared magnitude of the given 3D vector.
shz_vec3_t shz_vec3_step(shz_vec3_t vec, float edge) noexcept
For each component: returns 0.0f if vec[i] < edge, otherwise 1.0f.
shz_vec4_t shz_vec4_sub(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns a 4D vector whose components are equal to the values of vec1 minus vec2.
shz_vec2_t shz_vec2_step(shz_vec2_t vec, float edge) noexcept
For each component: returns 0.0f if vec[i] < edge, otherwise 1.0f.
shz_vec3_t shz_vec3_normalize(shz_vec3_t vec) noexcept
Returns a normalized unit vector from the given 3D vector.
shz_vec3_t shz_vec3_inv_sqrtf(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the inverse square root of the given vector's components.
shz_vec2_t shz_vec2_inv(shz_vec2_t vec) noexcept
Returns the 2D vector whose components have been inverted or reciprocated.
shz_vec4_t shz_vec4_abs(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the absolute values of the given vector's components.
shz_vec3_t shz_vec3_sqrtf(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the square root of the given vector's components.
float shz_vec2_cross(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns the cross product, as a scalar, between two 2D vectors.
shz_vec3_t shz_vec3_smoothstepv_safe(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) noexcept
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec4_t shz_vec4_lerp(shz_vec4_t a, shz_vec4_t b, float t) noexcept
Returns a 4D vector that is linearly interpolated from a to b by the given 0.0f-1....
shz_vec4_t shz_vec4_move(shz_vec4_t vec, shz_vec4_t target, float max_distance) noexcept
Returns the given 4D vector, translated towards the target by the given max_distance.
shz_vec2_t shz_vec2_normalize_safe(shz_vec2_t vec) noexcept
SAFELY returns a normalized unit vector from the given 2D vector.
float shz_vec4_distance_sqr(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns the squared-distance between the two given 4D vectors.
shz_vec2_t shz_vec2_smoothstep_safe(shz_vec2_t vec, float edge0, float edge1) noexcept
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between....
shz_vec3_t shz_vec3_rotate_x(shz_vec3_t vec, float radians) noexcept
Rotates the given 3D vector about the X axis by the given angle in radians.
shz_vec2_t shz_vec2_dot2(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2) noexcept
Returns the two dot products taken between the 2D vector l and 2D vectors r1 and r2.
shz_vec3_t shz_vec3_round(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the rounded values of the given vector's components.
float shz_vec3_magnitude_inv(shz_vec3_t vec) noexcept
Returns the inverse magnitude of the given 3D vector.
shz_vec4_t shz_vec4_mul(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns a 4D vector whose component values are those of vec1 times vec2.
shz_vec4_t shz_vec4_normalize(shz_vec4_t vec) noexcept
Returns a normalized unit vector from the given 4D vector.
shz_vec2_t shz_vec2_scale(shz_vec2_t vec, float factor) noexcept
Returns a 2D vector whose component values are those of the given vector multiplied by a factor.
shz_vec2_t shz_vec2_project_safe(shz_vec2_t vec, shz_vec2_t onto) noexcept
Returns the resulting vector from projecting the given 2D vector along the given (unit) axis.
float shz_vec2_dot(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns the dot product between the two given 2D vectors.
shz_vec3_t shz_vec3
Alternate typedef for the shz_vec3 struct for those who hate POSIX-style.
shz_vec3_t shz_vec3_from_angles_deg(float azimuth, float elevation) noexcept
Returns the 3D unit vector representing the given rotation angles relative to the positive X axis in ...
shz_vec4_t shz_vec4_smoothstep(shz_vec4_t vec, float edge0, float edge1) noexcept
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between.
shz_vec3_t shz_vec3_fill(float v) noexcept
Returns a 3D vector with the value of each compoonent equal to v.
shz_vec2_t shz_vec2_add(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns a 2D vector whose components are the sums of the given vectors' components.
shz_vec2_t shz_vec2_refract(shz_vec2_t incidence, shz_vec2_t normal, float eta) noexcept
Refracts the given 2D incidence vector against a surface with the given normal using the given refrac...
shz_vec4_t shz_vec4_sign(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the signs (-1, 0, or 1) of the given vector's components.
shz_vec3_t shz_vec2_vec3(shz_vec2_t vec, float z) noexcept
Extends a 2D vector to 3D, using z as the value of the Z component.
shz_vec4_t shz_vec4_sqrtf(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the square root of the given vector's components.
shz_vec4_t shz_vec4_maxv(shz_vec4_t a, shz_vec4_t b) noexcept
Returns a 4D vector whose components are the pairwise maximums of the two given vectors' components.
shz_vec3_t shz_vec3_angles(shz_vec3_t vec) noexcept
Returns the angles formed between the positive X axis and the given 3D vector, in radians.
shz_vec2_t shz_vec2_normalize(shz_vec2_t vec) noexcept
Returns a normalized unit vector from the given 2D vector.
shz_vec2_t shz_vec4_dot2(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2) noexcept
Returns the two dot products taken between the 4D vector l and 4D vectors r1 and r2.
shz_vec3_t shz_vec3_perp(shz_vec3_t vec) noexcept
Returns a vector which is perpendicular to the given vector.
shz_vec3_t shz_vec3_neg(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the negative values of the given vector's components.
float shz_vec3_distance(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns the distance between the two given 3D vectors.
shz_vec4_t shz_vec4_neg(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the negative values of the given vector's components.
shz_vec3_t shz_vec3_cubic_hermite(shz_vec3_t vec, shz_vec3_t tangent1, shz_vec3_t vec2, shz_vec3_t tangent2, float amounht) noexcept
Calculates the cubic hermite interpolation between two vectors and their tangents.
shz_vec3_t shz_vec3_abs(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the absolute values of the given vector's components.
shz_vec2_t shz_vec2_from_angle(float radians) noexcept
Returns the 2D unit vector representing a rotation from the positive X axis in radians.
shz_vec3_t shz_vec3_init(float x, float y, float z) noexcept
Returns a 3D vector with the given x, y, and z coordinates.
shz_vec3_t shz_vec3_sign(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the signs (-1, 0, or 1) of the given vector's components.
shz_vec2_t shz_vec2_from_sincos(shz_sincos_t sincos) noexcept
Returns the 2D unit vector representing a rotation from the positive X axis.
shz_vec3_t shz_vec3_dot3(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2, shz_vec3_t r3) noexcept
Returns the three dot products taken between the 3D vector l and 3D vectors r1, r2,...
float shz_vec4_magnitude_inv(shz_vec4_t vec) noexcept
Returns the inverse magnitude of the given 4D vector.
shz_vec3_t shz_vec3_div(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns a 3D vector whose component values are those of vec1 divided by vec2.
shz_vec4_t shz_vec4_fill(float v) noexcept
Returns a 4D vector with the value of each component equal to v.
shz_vec4_t shz_vec4_saturate(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are saturated (clamped to [0, 1]) values of the given vector's c...
shz_vec3_t shz_vec3_floor(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the floor of the given vector's components.
shz_vec3_t shz_vec3_stepv(shz_vec3_t vec, shz_vec3_t edge) noexcept
For each component: returns 0.0f if vec[i] < edge[i], otherwise 1.0f.
shz_vec4_t shz_vec4_minv(shz_vec4_t a, shz_vec4_t b) noexcept
Returns a 4D vector whose components are the pairwise minimums of the two given vectors' components.
shz_vec4_t shz_vec4_step(shz_vec4_t vec, float edge) noexcept
For each component: returns 0.0f if vec[i] < edge, otherwise 1.0f.
shz_vec3_t shz_vec3_swizzle(shz_vec3_t vec, unsigned x_idx, unsigned y_idx, unsigned z_idx) noexcept
Returns a 3D vector whose elements are equal to the source vector's values at the given indices.
void shz_vec3_orthonormalize(shz_vec3_t in1, shz_vec3_t in2, shz_vec3_t *out1, shz_vec3_t *out2) noexcept
Returns 2 3D vectors which are normalized and orthogonal to the two input vectors.
shz_vec4_t shz_vec4_smoothstepv_safe(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) noexcept
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec2_t shz_vec2_round(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the rounded values of the given vector's components.
shz_vec4_t shz_vec4_inv_sqrtf(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the inverse square root of the given vector's components.
shz_vec4_t shz_vec4_inv(shz_vec4_t vec) noexcept
Returns the 4D vector whose components have been inverted or reciprocated.
shz_vec2_t shz_vec2_reflect(shz_vec2_t incidence, shz_vec2_t normal) noexcept
Reflects the given 2D incidence vector against a surface with the given normal, returning the result.
float shz_vec3_dot(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns the dot product between the two given 3D vectors.
shz_vec2_t shz_vec2_mul(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns a 2D vector whose component values are those of vec1 times vec2.
shz_vec3_t shz_vec3_reflect(shz_vec3_t incidence, shz_vec3_t normal) noexcept
Reflects the given 3D incidence vector against a surface with the given normal, returning the result.
shz_vec2_t shz_vec2_smoothstep(shz_vec2_t vec, float edge0, float edge1) noexcept
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between.
shz_vec3_t shz_vec3_smoothstepv(shz_vec3_t vec, shz_vec3_t edge0, shz_vec3_t edge1) noexcept
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
shz_vec2_t shz_vec2_neg(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the negative values of the given vector's components.
shz_vec2_t shz_vec2_sqrtf(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the square root of the given vector's components.
shz_vec2_t shz_vec2_lerp(shz_vec2_t a, shz_vec2_t b, float t) noexcept
Returns a 2D vector that is linearly interpolated from a to b by the given 0.0f-1....
shz_vec4_t shz_vec4_div(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns a 4D vector whose component values are those of vec1 divided by vec2.
shz_vec3_t shz_vec3_smoothstep(shz_vec3_t vec, float edge0, float edge1) noexcept
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between.
shz_vec3_t shz_vec3_barycenter(shz_vec3_t p, shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) noexcept
Computes barycentric coordinates <u, v, w> for point p, within the plane of the triangle with vertice...
shz_vec2_t shz_vec2_ceil(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the ceil of the given vector's components.
shz_vec2_t shz_vec2_maxv(shz_vec2_t a, shz_vec2_t b) noexcept
Returns a 2D vector whose components are the pairwise maximums of the two given vectors' components.
float shz_vec4_magnitude(shz_vec4_t vec) noexcept
Returns the magnitude of the given 4D vector.
shz_vec2_t shz_vec2_saturate(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are saturated (clamped to [0, 1]) values of the given vector's c...
shz_vec3_t shz_vec3_move(shz_vec3_t vec, shz_vec3_t target, float max_distance) noexcept
Returns the given 3D vector, translated towards the target by the given max_distance.
shz_vec3_t shz_vec3_rotate_y(shz_vec3_t vec, float radians) noexcept
Rotates the given 3D vector about the Y axis by the given angle in radians.
shz_vec3_t shz_vec3_normalize_safe(shz_vec3_t vec) noexcept
SAFELY returns a normalized unit vector from the given 3D vector.
shz_vec2_t shz_vec2_init(float x, float y) noexcept
Returns a 2D vector with the given x, and y coordinates.
float shz_vec3_min(shz_vec3_t vec) noexcept
Returns the minimum value of the given vector's 3 components.
shz_vec3_t shz_vec3_from_sincos(shz_sincos_t azimuth, shz_sincos_t elevation) noexcept
Returns the 3D unit vector representing the given rotation angles relative to the positive X axis.
float shz_vec4_dot(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns the dot product between the two given 4D vectors.
shz_vec4_t shz_vec4_smoothstepv(shz_vec4_t vec, shz_vec4_t edge0, shz_vec4_t edge1) noexcept
For each component i: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-bet...
bool shz_vec4_equal(shz_vec4_t a, shz_vec4_t b) noexcept
Returns true if the values of each element within the two 4D vectors are approximately equal based on...
float shz_vec2_magnitude_sqr(shz_vec2_t vec) noexcept
Returns the squared magnitude of the given 2D vector.
float shz_vec3_triple(shz_vec3_t a, shz_vec3_t b, shz_vec3_t c) noexcept
Returns the 3D vector "triple product" between vector's a, b, and c.
shz_vec4_t shz_vec4_project_safe(shz_vec4_t vec, shz_vec4_t onto) noexcept
Returns the resulting vector from projecting the given 4D vector along the given (unit) axis.
shz_vec2_t shz_vec2_smoothstepv_safe(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) noexcept
For each component: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-betwe...
float shz_vec4_distance(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns the distance between the two given 4D vectors.
shz_vec4_t shz_vec4_swizzle(shz_vec4_t vec, unsigned x_idx, unsigned y_idx, unsigned z_idx, unsigned w_idx) noexcept
Returns a new 2D vector whose elements are equal to the source vector's values at the given indices.
shz_vec3_t shz_vec3_saturate(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are saturated (clamped to [0, 1]) values of the given vector's c...
shz_vec4_t shz_vec4_stepv(shz_vec4_t vec, shz_vec4_t edge) noexcept
For each component: returns 0.0f if vec[i] < edge[i], otherwise 1.0f.
shz_vec2_t shz_vec2_smoothstepv(shz_vec2_t vec, shz_vec2_t edge0, shz_vec2_t edge1) noexcept
For each component: returns 0.0f at/below edge0[i], 1.0f at/above edge1[i], smoothly varying in-betwe...
shz_vec4_t shz_vec4_project(shz_vec4_t vec, shz_vec4_t onto) noexcept
Returns the resulting vector from projecting the given 4D vector along the given (unit) axis.
shz_vec2_t shz_vec2_project(shz_vec2_t vec, shz_vec2_t onto) noexcept
Returns the resulting vector from projecting the given 2D vector along the given (unit) axis.
shz_vec4_t shz_vec4_refract(shz_vec4_t incidence, shz_vec4_t normal, float eta) noexcept
Refracts the given 4D incidence vector against a surface with the given normal using the given refrac...
float shz_vec3_distance_sqr(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns the squared-distance between the two given 3D vectors.
shz_vec4_t shz_vec4_ceil(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the ceil of the given vector's components.
float shz_vec2_min(shz_vec2_t vec) noexcept
Retuns the minimum value of both of the given vector's components.
shz_vec3_t shz_vec3_from_angles(float azimuth, float elevation) noexcept
Returns the 3D unit vector representing the given rotation angles relative to the positive X axis in ...
shz_vec4_t shz_vec4_normalize_safe(shz_vec4_t vec) noexcept
SAFELY returns a normalized unit vector from the given 4D vector.
float shz_vec2_magnitude(shz_vec2_t vec) noexcept
Returns the magnitude of the given 2D vector.
shz_vec2_t shz_vec2_from_angle_deg(float degrees) noexcept
Returns the 2D unit vector representing a rotation from the positive X axis in degrees.
shz_vec3_t shz_vec3_lerp(shz_vec3_t a, shz_vec3_t b, float t) noexcept
Returns a 3D vector that is linearly interpolated from a to b by the given 0.0f-1....
float shz_vec2_distance_sqr(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns the squared-distance between the two given 2D vectors.
shz_vec4_t shz_vec4_init(float x, float y, float z, float w) noexcept
Returns a 4D vector with the given x, y, z, and w coordinates.
shz_vec2_t shz_vec2_fill(float v) noexcept
Returns a 2D vector with the value of each component equal to v.
shz_vec3_t shz_vec3_refract(shz_vec3_t incidence, shz_vec3_t normal, float eta) noexcept
Refracts the given 3D incidence vector against a surface with the given normal using the given refrac...
float shz_vec4_min(shz_vec4_t vec) noexcept
Returns the minimum value of the given vector's 4 components.
shz_vec4_t shz_vec4_reflect(shz_vec4_t incidence, shz_vec4_t normal) noexcept
Reflects the given 4D incidence vector against a surface with the given normal, returning the result.
shz_vec3_t shz_vec3_mul(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns a 3D vector whose component values are those of vec1 times vec2.
shz_vec3_t shz_vec3_inv(shz_vec3_t vec) noexcept
Returns the 3D vector whose components have been inverted or reciprocated.
shz_vec2_t shz_vec2_sub(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns a 2D vector whose components are equal to the values of vec1 minus vec2.
float shz_vec2_distance(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns the distance between the two given 2D vectors.
shz_vec3_t shz_vec3_ceil(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the ceil of the given vector's components.
shz_vec4_t shz_vec2_vec4(shz_vec2_t vec, float z, float w) noexcept
Extends a 2D vector to 4D, using z and w as the values of the Z and W components.
shz_vec2_t shz_vec3_dot2(shz_vec3_t l, shz_vec3_t r1, shz_vec3_t r2) noexcept
Returns the two dot products taken between the 3D vector l and 3D vectors r1 and r2.
shz_vec2_t shz_vec2_swizzle(shz_vec2_t vec, unsigned x_idx, unsigned y_idx) noexcept
Returns a 2D vector whose elements are equal to the source vector's values at the given indices.
float shz_vec2_angle_between(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns the angle formed between the given 2D vectors in radians.
shz_vec4_t shz_vec4_round(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the rounded values of the given vector's components.
shz_vec4_t shz_vec4_floor(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the floor of the given vector's components.
shz_vec3_t shz_vec3_smoothstep_safe(shz_vec3_t vec, float edge0, float edge1) noexcept
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between....
shz_vec4_t shz_vec4_scale(shz_vec4_t vec, float factor) noexcept
Returns a 4D vector whose component values are those of the given vector multiplied by a factor.
shz_vec3_t shz_vec4_dot3(shz_vec4_t l, shz_vec4_t r1, shz_vec4_t r2, shz_vec4_t r3) noexcept
Returns the three dot products taken between the 4D vector l and 4D vectors r1, r2,...
float shz_vec4_magnitude_sqr(shz_vec4_t vec) noexcept
Returns the squared magnitude of the given 4D vector.
shz_vec2_t shz_vec2_div(shz_vec2_t vec1, shz_vec2_t vec2) noexcept
Returns a 2D vector whose component values are those of vec1 divided by vec2.
shz_vec3_t shz_vec2_dot3(shz_vec2_t l, shz_vec2_t r1, shz_vec2_t r2, shz_vec2_t r3) noexcept
Returns the three dot products taken between the 2D vector l and 2D vectors r1, r2,...
shz_vec2_t shz_vec2_rotate(shz_vec2_t vec, float radians) noexcept
Rotates the given 2D vector about the Z axis by the given angle in radians.
shz_vec3_t shz_vec3_sub(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns a 3D vector whose components are equal to the values of vec1 minus vec2.
float shz_vec4_max(shz_vec4_t vec) noexcept
Returns the maximum value of the given vector's 4 componetns.
shz_vec2_t shz_vec2_abs(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the absolute values of the given vector's components.
shz_vec2_t shz_vec2
Alternate typedef for the shz_vec2 struct for those who hate POSIX-style.
shz_vec3_t shz_vec3_rotate_z(shz_vec3_t vec, float radians) noexcept
Rotates the given 3D vector about the Z axis by the given angle in radians.
shz_vec3_t shz_vec3_minv(shz_vec3_t a, shz_vec3_t b) noexcept
Returns a 3D vector whose components are the pairwise minimums of the two given vectors' components.
shz_vec4_t shz_vec4_clamp(shz_vec4_t vec, float min, float max) noexcept
Clamps the values of the given 4D vec between min and max, returning a new vector.
shz_vec2_t shz_vec2_sign(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the signs (-1, 0, or 1) of the given vector's components.
shz_vec2_t shz_vec2_move(shz_vec2_t vec, shz_vec2_t target, float max_distance) noexcept
Returns the given 2D vector, translated towards the target by the given max_distance.
shz_vec4_t shz_vec4_smoothstep_safe(shz_vec4_t vec, float edge0, float edge1) noexcept
For each component: returns 0.0f at/below edge0, 1.0f at/above edge1, smoothly varying in-between....
shz_vec4_t shz_vec4_add(shz_vec4_t vec1, shz_vec4_t vec2) noexcept
Returns a 4D vector whose components are the sums of the given vectors' components.
shz_vec3_t shz_vec3_clamp(shz_vec3_t vec, float min, float max) noexcept
Clamps the values of the given 3D vec between min and max, returning a new vector.
shz_vec3_t shz_vec3_reject(shz_vec3_t vec, shz_vec3_t onto) noexcept
Returns the rejection of the given vector, vec, onto another vector, onto.
shz_vec2_t shz_vec2_floor(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the floor of the given vector's components.
shz_vec3_t shz_vec3_maxv(shz_vec3_t a, shz_vec3_t b) noexcept
Returns a 3D vector whose components are the pairwise maximums of the two given vectors' components.
shz_vec4_t shz_vec4_fract(shz_vec4_t vec) noexcept
Returns a 4D vector whose components are the fractional parts of the given vector's components.
shz_vec4_t shz_vec3_vec4(shz_vec3_t vec, float w) noexcept
Extends a 3D vector to 4D, using w as the value of the W component.
float shz_vec2_magnitude_inv(shz_vec2_t vec) noexcept
Returns the inverse magnitude of the given 2D vector.
shz_vec2_t shz_vec2_stepv(shz_vec2_t vec, shz_vec2_t edge) noexcept
For each component: returns 0.0f if vec[i] < edge[i], otherwise 1.0f.
bool shz_vec3_equal(shz_vec3_t a, shz_vec3_t b) noexcept
Returns true if the values of each element within the two 3D vectors are approximately equal based on...
shz_vec2_t shz_vec2_clamp(shz_vec2_t vec, float min, float max) noexcept
Clamps the values of the given 2D vec between min and max, returning a new vector.
shz_vec3_t shz_vec3_project_safe(shz_vec3_t vec, shz_vec3_t onto) noexcept
Returns the resulting vector from projecting the given 3D vector along the given (unit) axis.
shz_vec4_t shz_vec4
Alternate typedef for the shz_vec4 struct for those who hate POSIX-style.
bool shz_vec2_equal(shz_vec2_t a, shz_vec2_t b) noexcept
Returns true if the values of each element within the two 2D vectors are approximately equal based on...
shz_vec3_t shz_vec3_fract(shz_vec3_t vec) noexcept
Returns a 3D vector whose components are the fractional parts of the given vector's components.
shz_vec3_t shz_vec3_project(shz_vec3_t vec, shz_vec3_t onto) noexcept
Returns the resulting vector from projecting the given 3D vector along the given (unit) axis.
float shz_vec2_angle(shz_vec2_t vec) noexcept
Returns the angle formed between the positive X axis and the given 2D vector, in radians.
shz_vec2_t shz_vec2_fract(shz_vec2_t vec) noexcept
Returns a 2D vector whose components are the fractional parts of the given vector's components.
shz_vec2_t shz_vec2_minv(shz_vec2_t a, shz_vec2_t b) noexcept
Returns a 2D vector whose components are the pairwise minimums of the two given vectors' components.
float shz_vec3_angle_between(shz_vec3_t vec1, shz_vec3_t vec2) noexcept
Returns the angle formed between the given 3D vectors in radians.
float e[2]
<X, Y> coordinates as an array
shz_vec2_t xy
Inner 2D vector containing <X, Y> coords.
float e[3]
<X, Y, Z> coordinates as an array
shz_vec2_t xy
<X, Y> coordinates as a 2D vector
shz_vec3_t xyz
<X, Y, Z> coordinates as a 3D vector
shz_vec2_t zw
<Z, W> coordinates as a 2D vector