From 77d6f0182fb0002df6da379562ae55722e63b489 Mon Sep 17 00:00:00 2001 From: jdsouza90 Date: Fri, 20 Mar 2020 16:01:15 -0700 Subject: [PATCH] Uploading OSS code to dev branch (1st commit) OSS code for the NVIDIA AR SDK --- CMakeLists.txt | 29 + NVIDIA AR SDK Programming Guide.pdf | Bin 0 -> 693808 bytes nvar/include/nvAR.h | 99 + nvar/include/nvAR_defs.h | 162 + nvar/include/nvCVImage.h | 466 ++ nvar/include/nvCVStatus.h | 94 + nvar/src/nvARProxy.cpp | 357 ++ samples/CMakeLists.txt | 7 + samples/FaceTrack/CMakeLists.txt | 25 + samples/FaceTrack/FaceEngine.cpp | 621 +++ samples/FaceTrack/FaceEngine.h | 175 + samples/FaceTrack/FaceTrack.cpp | 966 ++++ samples/FaceTrack/FaceTrack.exe | Bin 0 -> 120832 bytes samples/FaceTrack/Readme.txt | 48 + samples/FaceTrack/run.bat | 3 + samples/external/CMakeLists.txt | 44 + samples/external/ThirdPartyLicenses.txt | 76 + .../external/glm/include/glm/CMakeLists.txt | 67 + samples/external/glm/include/glm/common.hpp | 6 + .../glm/include/glm/detail/_features.hpp | 399 ++ .../glm/include/glm/detail/_fixes.hpp | 30 + .../glm/include/glm/detail/_noise.hpp | 107 + .../glm/include/glm/detail/_swizzle.hpp | 797 +++ .../glm/include/glm/detail/_swizzle_func.hpp | 696 +++ .../glm/include/glm/detail/_vectorize.hpp | 131 + .../external/glm/include/glm/detail/dummy.cpp | 207 + .../glm/include/glm/detail/func_common.hpp | 427 ++ .../glm/include/glm/detail/func_common.inl | 849 +++ .../include/glm/detail/func_common_simd.inl | 231 + .../include/glm/detail/func_exponential.hpp | 103 + .../include/glm/detail/func_exponential.inl | 146 + .../glm/detail/func_exponential_simd.inl | 35 + .../glm/include/glm/detail/func_geometric.hpp | 113 + .../glm/include/glm/detail/func_geometric.inl | 247 + .../glm/detail/func_geometric_simd.inl | 99 + .../glm/include/glm/detail/func_integer.hpp | 203 + .../glm/include/glm/detail/func_integer.inl | 368 ++ .../include/glm/detail/func_integer_simd.inl | 68 + .../glm/include/glm/detail/func_matrix.hpp | 149 + .../glm/include/glm/detail/func_matrix.inl | 401 ++ .../include/glm/detail/func_matrix_simd.inl | 88 + .../glm/include/glm/detail/func_packing.hpp | 168 + .../glm/include/glm/detail/func_packing.inl | 190 + .../include/glm/detail/func_packing_simd.inl | 9 + .../include/glm/detail/func_trigonometric.hpp | 176 + .../include/glm/detail/func_trigonometric.inl | 200 + .../glm/detail/func_trigonometric_simd.inl | 0 .../glm/detail/func_vector_relational.hpp | 111 + .../glm/detail/func_vector_relational.inl | 105 + .../detail/func_vector_relational_simd.inl | 9 + .../external/glm/include/glm/detail/glm.cpp | 257 + .../glm/include/glm/detail/precision.hpp | 63 + .../external/glm/include/glm/detail/setup.hpp | 819 +++ .../glm/include/glm/detail/type_float.hpp | 67 + .../glm/include/glm/detail/type_gentype.hpp | 195 + .../glm/include/glm/detail/type_gentype.inl | 341 ++ .../glm/include/glm/detail/type_half.hpp | 19 + .../glm/include/glm/detail/type_half.inl | 244 + .../glm/include/glm/detail/type_int.hpp | 306 + .../glm/include/glm/detail/type_mat.hpp | 767 +++ .../glm/include/glm/detail/type_mat.inl | 3 + .../glm/include/glm/detail/type_mat2x2.hpp | 183 + .../glm/include/glm/detail/type_mat2x2.inl | 484 ++ .../glm/include/glm/detail/type_mat2x3.hpp | 165 + .../glm/include/glm/detail/type_mat2x3.inl | 458 ++ .../glm/include/glm/detail/type_mat2x4.hpp | 167 + .../glm/include/glm/detail/type_mat2x4.inl | 467 ++ .../glm/include/glm/detail/type_mat3x2.hpp | 173 + .../glm/include/glm/detail/type_mat3x2.inl | 492 ++ .../glm/include/glm/detail/type_mat3x3.hpp | 190 + .../glm/include/glm/detail/type_mat3x3.inl | 561 ++ .../glm/include/glm/detail/type_mat3x4.hpp | 172 + .../glm/include/glm/detail/type_mat3x4.inl | 532 ++ .../glm/include/glm/detail/type_mat4x2.hpp | 177 + .../glm/include/glm/detail/type_mat4x2.inl | 545 ++ .../glm/include/glm/detail/type_mat4x3.hpp | 177 + .../glm/include/glm/detail/type_mat4x3.inl | 562 ++ .../glm/include/glm/detail/type_mat4x4.hpp | 195 + .../glm/include/glm/detail/type_mat4x4.inl | 671 +++ .../include/glm/detail/type_mat4x4_simd.inl | 7 + .../glm/include/glm/detail/type_vec.hpp | 576 ++ .../glm/include/glm/detail/type_vec.inl | 2 + .../glm/include/glm/detail/type_vec1.hpp | 299 + .../glm/include/glm/detail/type_vec1.inl | 558 ++ .../glm/include/glm/detail/type_vec2.hpp | 385 ++ .../glm/include/glm/detail/type_vec2.inl | 894 +++ .../glm/include/glm/detail/type_vec3.hpp | 406 ++ .../glm/include/glm/detail/type_vec3.inl | 1022 ++++ .../glm/include/glm/detail/type_vec4.hpp | 451 ++ .../glm/include/glm/detail/type_vec4.inl | 969 ++++ .../glm/include/glm/detail/type_vec4_simd.inl | 481 ++ .../external/glm/include/glm/exponential.hpp | 6 + samples/external/glm/include/glm/ext.hpp | 116 + samples/external/glm/include/glm/fwd.hpp | 2570 +++++++++ .../external/glm/include/glm/geometric.hpp | 6 + samples/external/glm/include/glm/glm.hpp | 88 + .../external/glm/include/glm/gtc/bitfield.hpp | 207 + .../external/glm/include/glm/gtc/bitfield.inl | 515 ++ .../glm/include/glm/gtc/color_encoding.inl | 65 + .../glm/include/glm/gtc/color_space.hpp | 56 + .../glm/include/glm/gtc/color_space.inl | 75 + .../glm/include/glm/gtc/constants.hpp | 176 + .../glm/include/glm/gtc/constants.inl | 181 + .../external/glm/include/glm/gtc/epsilon.hpp | 73 + .../external/glm/include/glm/gtc/epsilon.inl | 125 + .../glm/include/glm/gtc/functions.hpp | 53 + .../glm/include/glm/gtc/functions.inl | 31 + .../external/glm/include/glm/gtc/integer.hpp | 102 + .../external/glm/include/glm/gtc/integer.inl | 71 + .../glm/include/glm/gtc/matrix_access.hpp | 59 + .../glm/include/glm/gtc/matrix_access.inl | 63 + .../glm/include/glm/gtc/matrix_integer.hpp | 486 ++ .../glm/include/glm/gtc/matrix_inverse.hpp | 49 + .../glm/include/glm/gtc/matrix_inverse.inl | 120 + .../glm/include/glm/gtc/matrix_transform.hpp | 465 ++ .../glm/include/glm/gtc/matrix_transform.inl | 575 ++ .../external/glm/include/glm/gtc/noise.hpp | 60 + .../external/glm/include/glm/gtc/noise.inl | 808 +++ .../external/glm/include/glm/gtc/packing.hpp | 579 ++ .../external/glm/include/glm/gtc/packing.inl | 781 +++ .../glm/include/glm/gtc/quaternion.hpp | 397 ++ .../glm/include/glm/gtc/quaternion.inl | 795 +++ .../glm/include/glm/gtc/quaternion_simd.inl | 198 + .../external/glm/include/glm/gtc/random.hpp | 98 + .../external/glm/include/glm/gtc/random.inl | 350 ++ .../glm/include/glm/gtc/reciprocal.hpp | 135 + .../glm/include/glm/gtc/reciprocal.inl | 192 + .../external/glm/include/glm/gtc/round.hpp | 174 + .../external/glm/include/glm/gtc/round.inl | 344 ++ .../glm/include/glm/gtc/type_aligned.hpp | 362 ++ .../glm/include/glm/gtc/type_precision.hpp | 861 +++ .../glm/include/glm/gtc/type_precision.inl | 7 + .../external/glm/include/glm/gtc/type_ptr.hpp | 149 + .../external/glm/include/glm/gtc/type_ptr.inl | 450 ++ samples/external/glm/include/glm/gtc/ulp.hpp | 63 + samples/external/glm/include/glm/gtc/ulp.inl | 321 ++ samples/external/glm/include/glm/gtc/vec1.hpp | 164 + samples/external/glm/include/glm/gtc/vec1.inl | 2 + .../include/glm/gtx/associated_min_max.hpp | 202 + .../include/glm/gtx/associated_min_max.inl | 355 ++ samples/external/glm/include/glm/gtx/bit.hpp | 95 + samples/external/glm/include/glm/gtx/bit.inl | 93 + .../glm/include/glm/gtx/closest_point.hpp | 45 + .../glm/include/glm/gtx/closest_point.inl | 46 + .../glm/include/glm/gtx/color_space.hpp | 68 + .../glm/include/glm/gtx/color_space.inl | 143 + .../glm/include/glm/gtx/color_space_YCoCg.hpp | 56 + .../glm/include/glm/gtx/color_space_YCoCg.inl | 108 + .../external/glm/include/glm/gtx/common.hpp | 53 + .../external/glm/include/glm/gtx/common.inl | 112 + .../glm/include/glm/gtx/compatibility.hpp | 130 + .../glm/include/glm/gtx/compatibility.inl | 65 + .../glm/include/glm/gtx/component_wise.hpp | 65 + .../glm/include/glm/gtx/component_wise.inl | 128 + .../glm/include/glm/gtx/dual_quaternion.hpp | 266 + .../glm/include/glm/gtx/dual_quaternion.inl | 351 ++ .../glm/include/glm/gtx/euler_angles.hpp | 143 + .../glm/include/glm/gtx/euler_angles.inl | 312 ++ .../external/glm/include/glm/gtx/extend.hpp | 38 + .../external/glm/include/glm/gtx/extend.inl | 49 + .../glm/include/glm/gtx/extended_min_max.hpp | 133 + .../glm/include/glm/gtx/extended_min_max.inl | 140 + .../glm/include/glm/gtx/fast_exponential.hpp | 91 + .../glm/include/glm/gtx/fast_exponential.inl | 137 + .../glm/include/glm/gtx/fast_square_root.hpp | 88 + .../glm/include/glm/gtx/fast_square_root.inl | 81 + .../glm/include/glm/gtx/fast_trigonometry.hpp | 75 + .../glm/include/glm/gtx/fast_trigonometry.inl | 143 + .../glm/include/glm/gtx/float_notmalize.inl | 14 + .../glm/include/glm/gtx/gradient_paint.hpp | 48 + .../glm/include/glm/gtx/gradient_paint.inl | 37 + .../glm/gtx/handed_coordinate_space.hpp | 46 + .../glm/gtx/handed_coordinate_space.inl | 27 + samples/external/glm/include/glm/gtx/hash.hpp | 134 + samples/external/glm/include/glm/gtx/hash.inl | 185 + .../external/glm/include/glm/gtx/integer.hpp | 72 + .../external/glm/include/glm/gtx/integer.inl | 182 + .../glm/include/glm/gtx/intersect.hpp | 87 + .../glm/include/glm/gtx/intersect.inl | 170 + samples/external/glm/include/glm/gtx/io.hpp | 197 + samples/external/glm/include/glm/gtx/io.inl | 441 ++ .../external/glm/include/glm/gtx/log_base.hpp | 44 + .../external/glm/include/glm/gtx/log_base.inl | 18 + .../include/glm/gtx/matrix_cross_product.hpp | 43 + .../include/glm/gtx/matrix_cross_product.inl | 38 + .../glm/include/glm/gtx/matrix_decompose.hpp | 42 + .../glm/include/glm/gtx/matrix_decompose.inl | 194 + .../include/glm/gtx/matrix_interpolation.hpp | 61 + .../include/glm/gtx/matrix_interpolation.inl | 134 + .../include/glm/gtx/matrix_major_storage.hpp | 115 + .../include/glm/gtx/matrix_major_storage.inl | 167 + .../glm/include/glm/gtx/matrix_operation.hpp | 84 + .../glm/include/glm/gtx/matrix_operation.inl | 118 + .../glm/include/glm/gtx/matrix_query.hpp | 73 + .../glm/include/glm/gtx/matrix_query.inl | 114 + .../include/glm/gtx/matrix_transform_2d.hpp | 78 + .../include/glm/gtx/matrix_transform_2d.inl | 69 + .../glm/include/glm/gtx/mixed_product.hpp | 37 + .../glm/include/glm/gtx/mixed_product.inl | 16 + samples/external/glm/include/glm/gtx/norm.hpp | 86 + samples/external/glm/include/glm/gtx/norm.inl | 106 + .../external/glm/include/glm/gtx/normal.hpp | 39 + .../external/glm/include/glm/gtx/normal.inl | 16 + .../glm/include/glm/gtx/normalize_dot.hpp | 45 + .../glm/include/glm/gtx/normalize_dot.inl | 17 + .../glm/include/glm/gtx/number_precision.hpp | 57 + .../glm/include/glm/gtx/number_precision.inl | 7 + .../glm/include/glm/gtx/optimum_pow.hpp | 50 + .../glm/include/glm/gtx/optimum_pow.inl | 23 + .../glm/include/glm/gtx/orthonormalize.hpp | 45 + .../glm/include/glm/gtx/orthonormalize.inl | 30 + .../glm/include/glm/gtx/perpendicular.hpp | 39 + .../glm/include/glm/gtx/perpendicular.inl | 15 + .../glm/include/glm/gtx/polar_coordinates.hpp | 44 + .../glm/include/glm/gtx/polar_coordinates.inl | 37 + .../glm/include/glm/gtx/projection.hpp | 36 + .../glm/include/glm/gtx/projection.inl | 11 + .../glm/include/glm/gtx/quaternion.hpp | 185 + .../glm/include/glm/gtx/quaternion.inl | 212 + .../external/glm/include/glm/gtx/range.hpp | 85 + .../external/glm/include/glm/gtx/raw_data.hpp | 47 + .../external/glm/include/glm/gtx/raw_data.inl | 2 + .../glm/gtx/rotate_normalized_axis.hpp | 64 + .../glm/gtx/rotate_normalized_axis.inl | 59 + .../glm/include/glm/gtx/rotate_vector.hpp | 117 + .../glm/include/glm/gtx/rotate_vector.inl | 188 + .../include/glm/gtx/scalar_multiplication.hpp | 69 + .../glm/include/glm/gtx/scalar_relational.hpp | 32 + .../glm/include/glm/gtx/scalar_relational.inl | 89 + .../glm/include/glm/gtx/simd_mat4.hpp | 182 + .../glm/include/glm/gtx/simd_mat4.inl | 577 ++ .../glm/include/glm/gtx/simd_quat.hpp | 307 + .../glm/include/glm/gtx/simd_quat.inl | 620 +++ .../glm/include/glm/gtx/simd_vec4.hpp | 546 ++ .../glm/include/glm/gtx/simd_vec4.inl | 721 +++ .../external/glm/include/glm/gtx/spline.hpp | 61 + .../external/glm/include/glm/gtx/spline.inl | 63 + .../glm/include/glm/gtx/std_based_type.hpp | 63 + .../glm/include/glm/gtx/std_based_type.inl | 7 + .../glm/include/glm/gtx/string_cast.hpp | 47 + .../glm/include/glm/gtx/string_cast.inl | 458 ++ .../glm/include/glm/gtx/transform.hpp | 56 + .../glm/include/glm/gtx/transform.inl | 24 + .../glm/include/glm/gtx/transform2.hpp | 107 + .../glm/include/glm/gtx/transform2.inl | 126 + .../glm/include/glm/gtx/type_aligned.hpp | 966 ++++ .../glm/include/glm/gtx/type_aligned.inl | 7 + .../glm/include/glm/gtx/type_trait.hpp | 252 + .../glm/include/glm/gtx/type_trait.inl | 0 .../glm/include/glm/gtx/vector_angle.hpp | 60 + .../glm/include/glm/gtx/vector_angle.inl | 58 + .../glm/include/glm/gtx/vector_query.hpp | 62 + .../glm/include/glm/gtx/vector_query.inl | 193 + samples/external/glm/include/glm/gtx/wrap.hpp | 51 + samples/external/glm/include/glm/gtx/wrap.inl | 58 + samples/external/glm/include/glm/integer.hpp | 6 + samples/external/glm/include/glm/mat2x2.hpp | 52 + samples/external/glm/include/glm/mat2x3.hpp | 32 + samples/external/glm/include/glm/mat2x4.hpp | 31 + samples/external/glm/include/glm/mat3x2.hpp | 31 + samples/external/glm/include/glm/mat3x3.hpp | 52 + samples/external/glm/include/glm/mat3x4.hpp | 31 + samples/external/glm/include/glm/mat4x2.hpp | 31 + samples/external/glm/include/glm/mat4x3.hpp | 31 + samples/external/glm/include/glm/mat4x4.hpp | 52 + samples/external/glm/include/glm/matrix.hpp | 6 + samples/external/glm/include/glm/packing.hpp | 6 + .../external/glm/include/glm/simd/common.h | 240 + .../glm/include/glm/simd/exponential.h | 20 + .../external/glm/include/glm/simd/geometric.h | 124 + .../external/glm/include/glm/simd/integer.h | 115 + .../external/glm/include/glm/simd/matrix.h | 1028 ++++ .../external/glm/include/glm/simd/packing.h | 8 + .../external/glm/include/glm/simd/platform.h | 449 ++ .../glm/include/glm/simd/trigonometric.h | 9 + .../glm/include/glm/simd/vector_relational.h | 8 + .../glm/include/glm/trigonometric.hpp | 6 + samples/external/glm/include/glm/vec2.hpp | 6 + samples/external/glm/include/glm/vec3.hpp | 6 + samples/external/glm/include/glm/vec4.hpp | 6 + .../glm/include/glm/vector_relational.hpp | 6 + .../glm/lib/cmake/glm/glmConfig.cmake | 20 + .../glm/lib/cmake/glm/glmConfigVersion.cmake | 31 + .../glm/lib/cmake/glm/glmTargets.cmake | 98 + samples/external/glm/lib/pkgconfig/glm.pc | 7 + .../external/opencv/bin/opencv_world346.dll | Bin 0 -> 79301632 bytes samples/external/opencv/include/opencv/cv.h | 73 + samples/external/opencv/include/opencv/cv.hpp | 60 + .../external/opencv/include/opencv/cvaux.h | 57 + .../external/opencv/include/opencv/cvaux.hpp | 52 + .../external/opencv/include/opencv/cvwimage.h | 46 + .../external/opencv/include/opencv/cxcore.h | 52 + .../external/opencv/include/opencv/cxcore.hpp | 53 + .../opencv/include/opencv/cxeigen.hpp | 48 + .../external/opencv/include/opencv/cxmisc.h | 8 + .../external/opencv/include/opencv/highgui.h | 48 + samples/external/opencv/include/opencv/ml.h | 47 + .../opencv/include/opencv2/calib3d.hpp | 2479 +++++++++ .../include/opencv2/calib3d/calib3d.hpp | 48 + .../include/opencv2/calib3d/calib3d_c.h | 427 ++ .../external/opencv/include/opencv2/core.hpp | 3285 +++++++++++ .../opencv/include/opencv2/core/affine.hpp | 678 +++ .../opencv/include/opencv2/core/base.hpp | 707 +++ .../include/opencv2/core/bindings_utils.hpp | 23 + .../include/opencv2/core/bufferpool.hpp | 40 + .../opencv/include/opencv2/core/check.hpp | 157 + .../opencv/include/opencv2/core/core.hpp | 48 + .../opencv/include/opencv2/core/core_c.h | 3175 +++++++++++ .../opencv/include/opencv2/core/cuda.hpp | 1049 ++++ .../opencv/include/opencv2/core/cuda.inl.hpp | 631 +++ .../include/opencv2/core/cuda/block.hpp | 211 + .../opencv2/core/cuda/border_interpolate.hpp | 722 +++ .../include/opencv2/core/cuda/color.hpp | 309 ++ .../include/opencv2/core/cuda/common.hpp | 109 + .../opencv2/core/cuda/datamov_utils.hpp | 113 + .../opencv2/core/cuda/detail/color_detail.hpp | 1980 +++++++ .../opencv2/core/cuda/detail/reduce.hpp | 365 ++ .../core/cuda/detail/reduce_key_val.hpp | 502 ++ .../core/cuda/detail/transform_detail.hpp | 392 ++ .../core/cuda/detail/type_traits_detail.hpp | 191 + .../core/cuda/detail/vec_distance_detail.hpp | 121 + .../opencv2/core/cuda/dynamic_smem.hpp | 88 + .../include/opencv2/core/cuda/emulation.hpp | 269 + .../include/opencv2/core/cuda/filters.hpp | 286 + .../include/opencv2/core/cuda/funcattrib.hpp | 79 + .../include/opencv2/core/cuda/functional.hpp | 811 +++ .../include/opencv2/core/cuda/limits.hpp | 128 + .../include/opencv2/core/cuda/reduce.hpp | 209 + .../opencv2/core/cuda/saturate_cast.hpp | 292 + .../opencv/include/opencv2/core/cuda/scan.hpp | 258 + .../opencv2/core/cuda/simd_functions.hpp | 869 +++ .../include/opencv2/core/cuda/transform.hpp | 75 + .../include/opencv2/core/cuda/type_traits.hpp | 90 + .../include/opencv2/core/cuda/utility.hpp | 230 + .../opencv2/core/cuda/vec_distance.hpp | 232 + .../include/opencv2/core/cuda/vec_math.hpp | 930 ++++ .../include/opencv2/core/cuda/vec_traits.hpp | 288 + .../opencv/include/opencv2/core/cuda/warp.hpp | 139 + .../include/opencv2/core/cuda/warp_reduce.hpp | 76 + .../opencv2/core/cuda/warp_shuffle.hpp | 162 + .../opencv2/core/cuda_stream_accessor.hpp | 86 + .../include/opencv2/core/cuda_types.hpp | 142 + .../include/opencv2/core/cv_cpu_dispatch.h | 247 + .../include/opencv2/core/cv_cpu_helper.h | 340 ++ .../opencv/include/opencv2/core/cvdef.h | 753 +++ .../opencv/include/opencv2/core/cvstd.hpp | 1040 ++++ .../opencv/include/opencv2/core/cvstd.inl.hpp | 285 + .../opencv/include/opencv2/core/directx.hpp | 184 + .../opencv/include/opencv2/core/eigen.hpp | 280 + .../opencv/include/opencv2/core/fast_math.hpp | 271 + .../opencv/include/opencv2/core/hal/hal.hpp | 250 + .../include/opencv2/core/hal/interface.h | 182 + .../include/opencv2/core/hal/intrin.hpp | 420 ++ .../include/opencv2/core/hal/intrin_avx.hpp | 2628 +++++++++ .../include/opencv2/core/hal/intrin_cpp.hpp | 2310 ++++++++ .../opencv2/core/hal/intrin_forward.hpp | 158 + .../include/opencv2/core/hal/intrin_neon.hpp | 1697 ++++++ .../include/opencv2/core/hal/intrin_sse.hpp | 2816 ++++++++++ .../opencv2/core/hal/intrin_sse_em.hpp | 167 + .../include/opencv2/core/hal/intrin_vsx.hpp | 1120 ++++ .../opencv/include/opencv2/core/ippasync.hpp | 195 + .../opencv/include/opencv2/core/mat.hpp | 3701 +++++++++++++ .../opencv/include/opencv2/core/mat.inl.hpp | 4027 ++++++++++++++ .../opencv/include/opencv2/core/matx.hpp | 1477 +++++ .../include/opencv2/core/neon_utils.hpp | 128 + .../opencv/include/opencv2/core/ocl.hpp | 843 +++ .../include/opencv2/core/ocl_genbase.hpp | 69 + .../include/opencv2/core/opencl/ocl_defs.hpp | 75 + .../opencv2/core/opencl/opencl_info.hpp | 198 + .../opencv2/core/opencl/opencl_svm.hpp | 81 + .../autogenerated/opencl_clamdblas.hpp | 714 +++ .../runtime/autogenerated/opencl_clamdfft.hpp | 142 + .../runtime/autogenerated/opencl_core.hpp | 370 ++ .../autogenerated/opencl_core_wrappers.hpp | 272 + .../runtime/autogenerated/opencl_gl.hpp | 62 + .../autogenerated/opencl_gl_wrappers.hpp | 42 + .../core/opencl/runtime/opencl_clamdblas.hpp | 53 + .../core/opencl/runtime/opencl_clamdfft.hpp | 53 + .../core/opencl/runtime/opencl_core.hpp | 84 + .../opencl/runtime/opencl_core_wrappers.hpp | 47 + .../opencv2/core/opencl/runtime/opencl_gl.hpp | 53 + .../opencl/runtime/opencl_gl_wrappers.hpp | 47 + .../core/opencl/runtime/opencl_svm_20.hpp | 48 + .../opencl/runtime/opencl_svm_definitions.hpp | 42 + .../runtime/opencl_svm_hsa_extension.hpp | 166 + .../opencv/include/opencv2/core/opengl.hpp | 725 +++ .../include/opencv2/core/operations.hpp | 554 ++ .../opencv/include/opencv2/core/optim.hpp | 302 + .../opencv/include/opencv2/core/ovx.hpp | 28 + .../include/opencv2/core/persistence.hpp | 1366 +++++ .../opencv/include/opencv2/core/ptr.inl.hpp | 379 ++ .../opencv/include/opencv2/core/saturate.hpp | 165 + .../opencv/include/opencv2/core/softfloat.hpp | 514 ++ .../opencv/include/opencv2/core/sse_utils.hpp | 652 +++ .../opencv/include/opencv2/core/traits.hpp | 397 ++ .../opencv/include/opencv2/core/types.hpp | 2391 ++++++++ .../opencv/include/opencv2/core/types_c.h | 2139 +++++++ .../opencv/include/opencv2/core/utility.hpp | 1358 +++++ .../include/opencv2/core/utils/filesystem.hpp | 78 + .../opencv2/core/utils/logger.defines.hpp | 22 + .../include/opencv2/core/utils/logger.hpp | 87 + .../include/opencv2/core/utils/trace.hpp | 254 + .../opencv/include/opencv2/core/va_intel.hpp | 78 + .../opencv/include/opencv2/core/version.hpp | 26 + .../opencv/include/opencv2/core/vsx_utils.hpp | 1011 ++++ .../opencv/include/opencv2/core/wimage.hpp | 603 ++ .../opencv/include/opencv2/cvconfig.h | 248 + .../external/opencv/include/opencv2/dnn.hpp | 78 + .../opencv/include/opencv2/dnn/all_layers.hpp | 634 +++ .../opencv/include/opencv2/dnn/dict.hpp | 160 + .../opencv/include/opencv2/dnn/dnn.hpp | 977 ++++ .../opencv/include/opencv2/dnn/dnn.inl.hpp | 395 ++ .../include/opencv2/dnn/layer.details.hpp | 78 + .../opencv/include/opencv2/dnn/layer.hpp | 85 + .../include/opencv2/dnn/shape_utils.hpp | 219 + .../opencv/include/opencv2/features2d.hpp | 1428 +++++ .../include/opencv2/features2d/features2d.hpp | 48 + .../opencv2/features2d/hal/interface.h | 33 + .../external/opencv/include/opencv2/flann.hpp | 594 ++ .../include/opencv2/flann/all_indices.h | 155 + .../opencv/include/opencv2/flann/allocator.h | 192 + .../opencv/include/opencv2/flann/any.h | 330 ++ .../include/opencv2/flann/autotuned_index.h | 591 ++ .../include/opencv2/flann/composite_index.h | 194 + .../opencv/include/opencv2/flann/config.h | 38 + .../opencv/include/opencv2/flann/defines.h | 164 + .../opencv/include/opencv2/flann/dist.h | 904 +++ .../opencv/include/opencv2/flann/dummy.h | 13 + .../include/opencv2/flann/dynamic_bitset.h | 159 + .../opencv/include/opencv2/flann/flann.hpp | 48 + .../include/opencv2/flann/flann_base.hpp | 295 + .../opencv/include/opencv2/flann/general.h | 50 + .../include/opencv2/flann/ground_truth.h | 94 + .../opencv/include/opencv2/flann/hdf5.h | 231 + .../opencv/include/opencv2/flann/heap.h | 165 + .../flann/hierarchical_clustering_index.h | 848 +++ .../include/opencv2/flann/index_testing.h | 318 ++ .../include/opencv2/flann/kdtree_index.h | 626 +++ .../opencv2/flann/kdtree_single_index.h | 635 +++ .../include/opencv2/flann/kmeans_index.h | 1166 ++++ .../include/opencv2/flann/linear_index.h | 132 + .../opencv/include/opencv2/flann/logger.h | 135 + .../opencv/include/opencv2/flann/lsh_index.h | 392 ++ .../opencv/include/opencv2/flann/lsh_table.h | 513 ++ .../opencv/include/opencv2/flann/matrix.h | 116 + .../include/opencv2/flann/miniflann.hpp | 162 + .../opencv/include/opencv2/flann/nn_index.h | 177 + .../include/opencv2/flann/object_factory.h | 91 + .../opencv/include/opencv2/flann/params.h | 99 + .../opencv/include/opencv2/flann/random.h | 155 + .../opencv/include/opencv2/flann/result_set.h | 543 ++ .../opencv/include/opencv2/flann/sampling.h | 81 + .../opencv/include/opencv2/flann/saving.h | 187 + .../include/opencv2/flann/simplex_downhill.h | 186 + .../opencv/include/opencv2/flann/timer.h | 94 + .../opencv/include/opencv2/highgui.hpp | 845 +++ .../include/opencv2/highgui/highgui.hpp | 48 + .../include/opencv2/highgui/highgui_c.h | 262 + .../opencv/include/opencv2/imgcodecs.hpp | 259 + .../include/opencv2/imgcodecs/imgcodecs.hpp | 48 + .../include/opencv2/imgcodecs/imgcodecs_c.h | 149 + .../opencv/include/opencv2/imgcodecs/ios.h | 57 + .../opencv/include/opencv2/imgproc.hpp | 4915 +++++++++++++++++ .../imgproc/detail/distortion_model.hpp | 123 + .../include/opencv2/imgproc/hal/hal.hpp | 241 + .../include/opencv2/imgproc/hal/interface.h | 46 + .../include/opencv2/imgproc/imgproc.hpp | 48 + .../include/opencv2/imgproc/imgproc_c.h | 1210 ++++ .../opencv/include/opencv2/imgproc/types_c.h | 659 +++ .../external/opencv/include/opencv2/ml.hpp | 1972 +++++++ .../external/opencv/include/opencv2/ml/ml.hpp | 48 + .../opencv/include/opencv2/ml/ml.inl.hpp | 60 + .../opencv/include/opencv2/objdetect.hpp | 743 +++ .../objdetect/detection_based_tracker.hpp | 227 + .../include/opencv2/objdetect/objdetect.hpp | 48 + .../include/opencv2/objdetect/objdetect_c.h | 166 + .../opencv/include/opencv2/opencv.hpp | 139 + .../opencv/include/opencv2/opencv_modules.hpp | 32 + .../external/opencv/include/opencv2/photo.hpp | 839 +++ .../opencv/include/opencv2/photo/cuda.hpp | 132 + .../opencv/include/opencv2/photo/photo.hpp | 48 + .../opencv/include/opencv2/photo/photo_c.h | 74 + .../external/opencv/include/opencv2/shape.hpp | 57 + .../opencv/include/opencv2/shape/emdL1.hpp | 72 + .../include/opencv2/shape/hist_cost.hpp | 111 + .../opencv/include/opencv2/shape/shape.hpp | 48 + .../include/opencv2/shape/shape_distance.hpp | 227 + .../opencv2/shape/shape_transformer.hpp | 132 + .../opencv/include/opencv2/stitching.hpp | 329 ++ .../opencv2/stitching/detail/autocalib.hpp | 86 + .../opencv2/stitching/detail/blenders.hpp | 184 + .../opencv2/stitching/detail/camera.hpp | 78 + .../stitching/detail/exposure_compensate.hpp | 136 + .../opencv2/stitching/detail/matchers.hpp | 370 ++ .../stitching/detail/motion_estimators.hpp | 359 ++ .../opencv2/stitching/detail/seam_finders.hpp | 285 + .../opencv2/stitching/detail/timelapsers.hpp | 91 + .../include/opencv2/stitching/detail/util.hpp | 121 + .../opencv2/stitching/detail/util_inl.hpp | 131 + .../opencv2/stitching/detail/warpers.hpp | 616 +++ .../opencv2/stitching/detail/warpers_inl.hpp | 774 +++ .../include/opencv2/stitching/warpers.hpp | 192 + .../opencv/include/opencv2/superres.hpp | 207 + .../include/opencv2/superres/optical_flow.hpp | 203 + .../external/opencv/include/opencv2/video.hpp | 63 + .../include/opencv2/video/background_segm.hpp | 317 ++ .../opencv/include/opencv2/video/tracking.hpp | 633 +++ .../opencv/include/opencv2/video/tracking_c.h | 232 + .../opencv/include/opencv2/video/video.hpp | 48 + .../opencv/include/opencv2/videoio.hpp | 992 ++++ .../opencv/include/opencv2/videoio/cap_ios.h | 150 + .../include/opencv2/videoio/registry.hpp | 44 + .../include/opencv2/videoio/videoio.hpp | 48 + .../include/opencv2/videoio/videoio_c.h | 587 ++ .../opencv/include/opencv2/videostab.hpp | 81 + .../include/opencv2/videostab/deblurring.hpp | 116 + .../opencv2/videostab/fast_marching.hpp | 121 + .../opencv2/videostab/fast_marching_inl.hpp | 165 + .../opencv2/videostab/frame_source.hpp | 94 + .../opencv2/videostab/global_motion.hpp | 300 + .../include/opencv2/videostab/inpainting.hpp | 212 + .../opencv/include/opencv2/videostab/log.hpp | 80 + .../include/opencv2/videostab/motion_core.hpp | 129 + .../opencv2/videostab/motion_stabilizing.hpp | 174 + .../opencv2/videostab/optical_flow.hpp | 150 + .../opencv2/videostab/outlier_rejection.hpp | 101 + .../include/opencv2/videostab/ring_buffer.hpp | 72 + .../include/opencv2/videostab/stabilizer.hpp | 200 + .../opencv2/videostab/wobble_suppression.hpp | 140 + .../external/opencv/include/opencv2/world.hpp | 58 + .../external/opencv/lib/opencv_world346.lib | Bin 0 -> 2385676 bytes samples/utils/RenderingUtils.cpp | 126 + samples/utils/RenderingUtils.h | 103 + samples/utils/nvCVOpenCV.h | 75 + tools/ConvertSurreyFaceModel.exe | Bin 0 -> 64000 bytes version.h | 33 + 536 files changed, 160658 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 NVIDIA AR SDK Programming Guide.pdf create mode 100644 nvar/include/nvAR.h create mode 100644 nvar/include/nvAR_defs.h create mode 100644 nvar/include/nvCVImage.h create mode 100644 nvar/include/nvCVStatus.h create mode 100644 nvar/src/nvARProxy.cpp create mode 100644 samples/CMakeLists.txt create mode 100644 samples/FaceTrack/CMakeLists.txt create mode 100644 samples/FaceTrack/FaceEngine.cpp create mode 100644 samples/FaceTrack/FaceEngine.h create mode 100644 samples/FaceTrack/FaceTrack.cpp create mode 100644 samples/FaceTrack/FaceTrack.exe create mode 100644 samples/FaceTrack/Readme.txt create mode 100644 samples/FaceTrack/run.bat create mode 100644 samples/external/CMakeLists.txt create mode 100644 samples/external/ThirdPartyLicenses.txt create mode 100644 samples/external/glm/include/glm/CMakeLists.txt create mode 100644 samples/external/glm/include/glm/common.hpp create mode 100644 samples/external/glm/include/glm/detail/_features.hpp create mode 100644 samples/external/glm/include/glm/detail/_fixes.hpp create mode 100644 samples/external/glm/include/glm/detail/_noise.hpp create mode 100644 samples/external/glm/include/glm/detail/_swizzle.hpp create mode 100644 samples/external/glm/include/glm/detail/_swizzle_func.hpp create mode 100644 samples/external/glm/include/glm/detail/_vectorize.hpp create mode 100644 samples/external/glm/include/glm/detail/dummy.cpp create mode 100644 samples/external/glm/include/glm/detail/func_common.hpp create mode 100644 samples/external/glm/include/glm/detail/func_common.inl create mode 100644 samples/external/glm/include/glm/detail/func_common_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_exponential.hpp create mode 100644 samples/external/glm/include/glm/detail/func_exponential.inl create mode 100644 samples/external/glm/include/glm/detail/func_exponential_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_geometric.hpp create mode 100644 samples/external/glm/include/glm/detail/func_geometric.inl create mode 100644 samples/external/glm/include/glm/detail/func_geometric_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_integer.hpp create mode 100644 samples/external/glm/include/glm/detail/func_integer.inl create mode 100644 samples/external/glm/include/glm/detail/func_integer_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_matrix.hpp create mode 100644 samples/external/glm/include/glm/detail/func_matrix.inl create mode 100644 samples/external/glm/include/glm/detail/func_matrix_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_packing.hpp create mode 100644 samples/external/glm/include/glm/detail/func_packing.inl create mode 100644 samples/external/glm/include/glm/detail/func_packing_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_trigonometric.hpp create mode 100644 samples/external/glm/include/glm/detail/func_trigonometric.inl create mode 100644 samples/external/glm/include/glm/detail/func_trigonometric_simd.inl create mode 100644 samples/external/glm/include/glm/detail/func_vector_relational.hpp create mode 100644 samples/external/glm/include/glm/detail/func_vector_relational.inl create mode 100644 samples/external/glm/include/glm/detail/func_vector_relational_simd.inl create mode 100644 samples/external/glm/include/glm/detail/glm.cpp create mode 100644 samples/external/glm/include/glm/detail/precision.hpp create mode 100644 samples/external/glm/include/glm/detail/setup.hpp create mode 100644 samples/external/glm/include/glm/detail/type_float.hpp create mode 100644 samples/external/glm/include/glm/detail/type_gentype.hpp create mode 100644 samples/external/glm/include/glm/detail/type_gentype.inl create mode 100644 samples/external/glm/include/glm/detail/type_half.hpp create mode 100644 samples/external/glm/include/glm/detail/type_half.inl create mode 100644 samples/external/glm/include/glm/detail/type_int.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat2x2.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat2x2.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat2x3.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat2x3.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat2x4.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat2x4.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat3x2.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat3x2.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat3x3.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat3x3.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat3x4.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat3x4.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat4x2.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat4x2.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat4x3.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat4x3.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat4x4.hpp create mode 100644 samples/external/glm/include/glm/detail/type_mat4x4.inl create mode 100644 samples/external/glm/include/glm/detail/type_mat4x4_simd.inl create mode 100644 samples/external/glm/include/glm/detail/type_vec.hpp create mode 100644 samples/external/glm/include/glm/detail/type_vec.inl create mode 100644 samples/external/glm/include/glm/detail/type_vec1.hpp create mode 100644 samples/external/glm/include/glm/detail/type_vec1.inl create mode 100644 samples/external/glm/include/glm/detail/type_vec2.hpp create mode 100644 samples/external/glm/include/glm/detail/type_vec2.inl create mode 100644 samples/external/glm/include/glm/detail/type_vec3.hpp create mode 100644 samples/external/glm/include/glm/detail/type_vec3.inl create mode 100644 samples/external/glm/include/glm/detail/type_vec4.hpp create mode 100644 samples/external/glm/include/glm/detail/type_vec4.inl create mode 100644 samples/external/glm/include/glm/detail/type_vec4_simd.inl create mode 100644 samples/external/glm/include/glm/exponential.hpp create mode 100644 samples/external/glm/include/glm/ext.hpp create mode 100644 samples/external/glm/include/glm/fwd.hpp create mode 100644 samples/external/glm/include/glm/geometric.hpp create mode 100644 samples/external/glm/include/glm/glm.hpp create mode 100644 samples/external/glm/include/glm/gtc/bitfield.hpp create mode 100644 samples/external/glm/include/glm/gtc/bitfield.inl create mode 100644 samples/external/glm/include/glm/gtc/color_encoding.inl create mode 100644 samples/external/glm/include/glm/gtc/color_space.hpp create mode 100644 samples/external/glm/include/glm/gtc/color_space.inl create mode 100644 samples/external/glm/include/glm/gtc/constants.hpp create mode 100644 samples/external/glm/include/glm/gtc/constants.inl create mode 100644 samples/external/glm/include/glm/gtc/epsilon.hpp create mode 100644 samples/external/glm/include/glm/gtc/epsilon.inl create mode 100644 samples/external/glm/include/glm/gtc/functions.hpp create mode 100644 samples/external/glm/include/glm/gtc/functions.inl create mode 100644 samples/external/glm/include/glm/gtc/integer.hpp create mode 100644 samples/external/glm/include/glm/gtc/integer.inl create mode 100644 samples/external/glm/include/glm/gtc/matrix_access.hpp create mode 100644 samples/external/glm/include/glm/gtc/matrix_access.inl create mode 100644 samples/external/glm/include/glm/gtc/matrix_integer.hpp create mode 100644 samples/external/glm/include/glm/gtc/matrix_inverse.hpp create mode 100644 samples/external/glm/include/glm/gtc/matrix_inverse.inl create mode 100644 samples/external/glm/include/glm/gtc/matrix_transform.hpp create mode 100644 samples/external/glm/include/glm/gtc/matrix_transform.inl create mode 100644 samples/external/glm/include/glm/gtc/noise.hpp create mode 100644 samples/external/glm/include/glm/gtc/noise.inl create mode 100644 samples/external/glm/include/glm/gtc/packing.hpp create mode 100644 samples/external/glm/include/glm/gtc/packing.inl create mode 100644 samples/external/glm/include/glm/gtc/quaternion.hpp create mode 100644 samples/external/glm/include/glm/gtc/quaternion.inl create mode 100644 samples/external/glm/include/glm/gtc/quaternion_simd.inl create mode 100644 samples/external/glm/include/glm/gtc/random.hpp create mode 100644 samples/external/glm/include/glm/gtc/random.inl create mode 100644 samples/external/glm/include/glm/gtc/reciprocal.hpp create mode 100644 samples/external/glm/include/glm/gtc/reciprocal.inl create mode 100644 samples/external/glm/include/glm/gtc/round.hpp create mode 100644 samples/external/glm/include/glm/gtc/round.inl create mode 100644 samples/external/glm/include/glm/gtc/type_aligned.hpp create mode 100644 samples/external/glm/include/glm/gtc/type_precision.hpp create mode 100644 samples/external/glm/include/glm/gtc/type_precision.inl create mode 100644 samples/external/glm/include/glm/gtc/type_ptr.hpp create mode 100644 samples/external/glm/include/glm/gtc/type_ptr.inl create mode 100644 samples/external/glm/include/glm/gtc/ulp.hpp create mode 100644 samples/external/glm/include/glm/gtc/ulp.inl create mode 100644 samples/external/glm/include/glm/gtc/vec1.hpp create mode 100644 samples/external/glm/include/glm/gtc/vec1.inl create mode 100644 samples/external/glm/include/glm/gtx/associated_min_max.hpp create mode 100644 samples/external/glm/include/glm/gtx/associated_min_max.inl create mode 100644 samples/external/glm/include/glm/gtx/bit.hpp create mode 100644 samples/external/glm/include/glm/gtx/bit.inl create mode 100644 samples/external/glm/include/glm/gtx/closest_point.hpp create mode 100644 samples/external/glm/include/glm/gtx/closest_point.inl create mode 100644 samples/external/glm/include/glm/gtx/color_space.hpp create mode 100644 samples/external/glm/include/glm/gtx/color_space.inl create mode 100644 samples/external/glm/include/glm/gtx/color_space_YCoCg.hpp create mode 100644 samples/external/glm/include/glm/gtx/color_space_YCoCg.inl create mode 100644 samples/external/glm/include/glm/gtx/common.hpp create mode 100644 samples/external/glm/include/glm/gtx/common.inl create mode 100644 samples/external/glm/include/glm/gtx/compatibility.hpp create mode 100644 samples/external/glm/include/glm/gtx/compatibility.inl create mode 100644 samples/external/glm/include/glm/gtx/component_wise.hpp create mode 100644 samples/external/glm/include/glm/gtx/component_wise.inl create mode 100644 samples/external/glm/include/glm/gtx/dual_quaternion.hpp create mode 100644 samples/external/glm/include/glm/gtx/dual_quaternion.inl create mode 100644 samples/external/glm/include/glm/gtx/euler_angles.hpp create mode 100644 samples/external/glm/include/glm/gtx/euler_angles.inl create mode 100644 samples/external/glm/include/glm/gtx/extend.hpp create mode 100644 samples/external/glm/include/glm/gtx/extend.inl create mode 100644 samples/external/glm/include/glm/gtx/extended_min_max.hpp create mode 100644 samples/external/glm/include/glm/gtx/extended_min_max.inl create mode 100644 samples/external/glm/include/glm/gtx/fast_exponential.hpp create mode 100644 samples/external/glm/include/glm/gtx/fast_exponential.inl create mode 100644 samples/external/glm/include/glm/gtx/fast_square_root.hpp create mode 100644 samples/external/glm/include/glm/gtx/fast_square_root.inl create mode 100644 samples/external/glm/include/glm/gtx/fast_trigonometry.hpp create mode 100644 samples/external/glm/include/glm/gtx/fast_trigonometry.inl create mode 100644 samples/external/glm/include/glm/gtx/float_notmalize.inl create mode 100644 samples/external/glm/include/glm/gtx/gradient_paint.hpp create mode 100644 samples/external/glm/include/glm/gtx/gradient_paint.inl create mode 100644 samples/external/glm/include/glm/gtx/handed_coordinate_space.hpp create mode 100644 samples/external/glm/include/glm/gtx/handed_coordinate_space.inl create mode 100644 samples/external/glm/include/glm/gtx/hash.hpp create mode 100644 samples/external/glm/include/glm/gtx/hash.inl create mode 100644 samples/external/glm/include/glm/gtx/integer.hpp create mode 100644 samples/external/glm/include/glm/gtx/integer.inl create mode 100644 samples/external/glm/include/glm/gtx/intersect.hpp create mode 100644 samples/external/glm/include/glm/gtx/intersect.inl create mode 100644 samples/external/glm/include/glm/gtx/io.hpp create mode 100644 samples/external/glm/include/glm/gtx/io.inl create mode 100644 samples/external/glm/include/glm/gtx/log_base.hpp create mode 100644 samples/external/glm/include/glm/gtx/log_base.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_cross_product.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_cross_product.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_decompose.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_decompose.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_interpolation.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_interpolation.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_major_storage.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_major_storage.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_operation.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_operation.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_query.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_query.inl create mode 100644 samples/external/glm/include/glm/gtx/matrix_transform_2d.hpp create mode 100644 samples/external/glm/include/glm/gtx/matrix_transform_2d.inl create mode 100644 samples/external/glm/include/glm/gtx/mixed_product.hpp create mode 100644 samples/external/glm/include/glm/gtx/mixed_product.inl create mode 100644 samples/external/glm/include/glm/gtx/norm.hpp create mode 100644 samples/external/glm/include/glm/gtx/norm.inl create mode 100644 samples/external/glm/include/glm/gtx/normal.hpp create mode 100644 samples/external/glm/include/glm/gtx/normal.inl create mode 100644 samples/external/glm/include/glm/gtx/normalize_dot.hpp create mode 100644 samples/external/glm/include/glm/gtx/normalize_dot.inl create mode 100644 samples/external/glm/include/glm/gtx/number_precision.hpp create mode 100644 samples/external/glm/include/glm/gtx/number_precision.inl create mode 100644 samples/external/glm/include/glm/gtx/optimum_pow.hpp create mode 100644 samples/external/glm/include/glm/gtx/optimum_pow.inl create mode 100644 samples/external/glm/include/glm/gtx/orthonormalize.hpp create mode 100644 samples/external/glm/include/glm/gtx/orthonormalize.inl create mode 100644 samples/external/glm/include/glm/gtx/perpendicular.hpp create mode 100644 samples/external/glm/include/glm/gtx/perpendicular.inl create mode 100644 samples/external/glm/include/glm/gtx/polar_coordinates.hpp create mode 100644 samples/external/glm/include/glm/gtx/polar_coordinates.inl create mode 100644 samples/external/glm/include/glm/gtx/projection.hpp create mode 100644 samples/external/glm/include/glm/gtx/projection.inl create mode 100644 samples/external/glm/include/glm/gtx/quaternion.hpp create mode 100644 samples/external/glm/include/glm/gtx/quaternion.inl create mode 100644 samples/external/glm/include/glm/gtx/range.hpp create mode 100644 samples/external/glm/include/glm/gtx/raw_data.hpp create mode 100644 samples/external/glm/include/glm/gtx/raw_data.inl create mode 100644 samples/external/glm/include/glm/gtx/rotate_normalized_axis.hpp create mode 100644 samples/external/glm/include/glm/gtx/rotate_normalized_axis.inl create mode 100644 samples/external/glm/include/glm/gtx/rotate_vector.hpp create mode 100644 samples/external/glm/include/glm/gtx/rotate_vector.inl create mode 100644 samples/external/glm/include/glm/gtx/scalar_multiplication.hpp create mode 100644 samples/external/glm/include/glm/gtx/scalar_relational.hpp create mode 100644 samples/external/glm/include/glm/gtx/scalar_relational.inl create mode 100644 samples/external/glm/include/glm/gtx/simd_mat4.hpp create mode 100644 samples/external/glm/include/glm/gtx/simd_mat4.inl create mode 100644 samples/external/glm/include/glm/gtx/simd_quat.hpp create mode 100644 samples/external/glm/include/glm/gtx/simd_quat.inl create mode 100644 samples/external/glm/include/glm/gtx/simd_vec4.hpp create mode 100644 samples/external/glm/include/glm/gtx/simd_vec4.inl create mode 100644 samples/external/glm/include/glm/gtx/spline.hpp create mode 100644 samples/external/glm/include/glm/gtx/spline.inl create mode 100644 samples/external/glm/include/glm/gtx/std_based_type.hpp create mode 100644 samples/external/glm/include/glm/gtx/std_based_type.inl create mode 100644 samples/external/glm/include/glm/gtx/string_cast.hpp create mode 100644 samples/external/glm/include/glm/gtx/string_cast.inl create mode 100644 samples/external/glm/include/glm/gtx/transform.hpp create mode 100644 samples/external/glm/include/glm/gtx/transform.inl create mode 100644 samples/external/glm/include/glm/gtx/transform2.hpp create mode 100644 samples/external/glm/include/glm/gtx/transform2.inl create mode 100644 samples/external/glm/include/glm/gtx/type_aligned.hpp create mode 100644 samples/external/glm/include/glm/gtx/type_aligned.inl create mode 100644 samples/external/glm/include/glm/gtx/type_trait.hpp create mode 100644 samples/external/glm/include/glm/gtx/type_trait.inl create mode 100644 samples/external/glm/include/glm/gtx/vector_angle.hpp create mode 100644 samples/external/glm/include/glm/gtx/vector_angle.inl create mode 100644 samples/external/glm/include/glm/gtx/vector_query.hpp create mode 100644 samples/external/glm/include/glm/gtx/vector_query.inl create mode 100644 samples/external/glm/include/glm/gtx/wrap.hpp create mode 100644 samples/external/glm/include/glm/gtx/wrap.inl create mode 100644 samples/external/glm/include/glm/integer.hpp create mode 100644 samples/external/glm/include/glm/mat2x2.hpp create mode 100644 samples/external/glm/include/glm/mat2x3.hpp create mode 100644 samples/external/glm/include/glm/mat2x4.hpp create mode 100644 samples/external/glm/include/glm/mat3x2.hpp create mode 100644 samples/external/glm/include/glm/mat3x3.hpp create mode 100644 samples/external/glm/include/glm/mat3x4.hpp create mode 100644 samples/external/glm/include/glm/mat4x2.hpp create mode 100644 samples/external/glm/include/glm/mat4x3.hpp create mode 100644 samples/external/glm/include/glm/mat4x4.hpp create mode 100644 samples/external/glm/include/glm/matrix.hpp create mode 100644 samples/external/glm/include/glm/packing.hpp create mode 100644 samples/external/glm/include/glm/simd/common.h create mode 100644 samples/external/glm/include/glm/simd/exponential.h create mode 100644 samples/external/glm/include/glm/simd/geometric.h create mode 100644 samples/external/glm/include/glm/simd/integer.h create mode 100644 samples/external/glm/include/glm/simd/matrix.h create mode 100644 samples/external/glm/include/glm/simd/packing.h create mode 100644 samples/external/glm/include/glm/simd/platform.h create mode 100644 samples/external/glm/include/glm/simd/trigonometric.h create mode 100644 samples/external/glm/include/glm/simd/vector_relational.h create mode 100644 samples/external/glm/include/glm/trigonometric.hpp create mode 100644 samples/external/glm/include/glm/vec2.hpp create mode 100644 samples/external/glm/include/glm/vec3.hpp create mode 100644 samples/external/glm/include/glm/vec4.hpp create mode 100644 samples/external/glm/include/glm/vector_relational.hpp create mode 100644 samples/external/glm/lib/cmake/glm/glmConfig.cmake create mode 100644 samples/external/glm/lib/cmake/glm/glmConfigVersion.cmake create mode 100644 samples/external/glm/lib/cmake/glm/glmTargets.cmake create mode 100644 samples/external/glm/lib/pkgconfig/glm.pc create mode 100644 samples/external/opencv/bin/opencv_world346.dll create mode 100644 samples/external/opencv/include/opencv/cv.h create mode 100644 samples/external/opencv/include/opencv/cv.hpp create mode 100644 samples/external/opencv/include/opencv/cvaux.h create mode 100644 samples/external/opencv/include/opencv/cvaux.hpp create mode 100644 samples/external/opencv/include/opencv/cvwimage.h create mode 100644 samples/external/opencv/include/opencv/cxcore.h create mode 100644 samples/external/opencv/include/opencv/cxcore.hpp create mode 100644 samples/external/opencv/include/opencv/cxeigen.hpp create mode 100644 samples/external/opencv/include/opencv/cxmisc.h create mode 100644 samples/external/opencv/include/opencv/highgui.h create mode 100644 samples/external/opencv/include/opencv/ml.h create mode 100644 samples/external/opencv/include/opencv2/calib3d.hpp create mode 100644 samples/external/opencv/include/opencv2/calib3d/calib3d.hpp create mode 100644 samples/external/opencv/include/opencv2/calib3d/calib3d_c.h create mode 100644 samples/external/opencv/include/opencv2/core.hpp create mode 100644 samples/external/opencv/include/opencv2/core/affine.hpp create mode 100644 samples/external/opencv/include/opencv2/core/base.hpp create mode 100644 samples/external/opencv/include/opencv2/core/bindings_utils.hpp create mode 100644 samples/external/opencv/include/opencv2/core/bufferpool.hpp create mode 100644 samples/external/opencv/include/opencv2/core/check.hpp create mode 100644 samples/external/opencv/include/opencv2/core/core.hpp create mode 100644 samples/external/opencv/include/opencv2/core/core_c.h create mode 100644 samples/external/opencv/include/opencv2/core/cuda.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda.inl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/block.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/border_interpolate.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/color.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/common.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/datamov_utils.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/detail/color_detail.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/detail/reduce.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/detail/reduce_key_val.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/detail/transform_detail.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/detail/type_traits_detail.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/detail/vec_distance_detail.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/dynamic_smem.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/emulation.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/filters.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/funcattrib.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/functional.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/limits.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/reduce.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/saturate_cast.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/scan.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/simd_functions.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/transform.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/type_traits.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/utility.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/vec_distance.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/vec_math.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/vec_traits.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/warp.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/warp_reduce.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda/warp_shuffle.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda_stream_accessor.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cuda_types.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cv_cpu_dispatch.h create mode 100644 samples/external/opencv/include/opencv2/core/cv_cpu_helper.h create mode 100644 samples/external/opencv/include/opencv2/core/cvdef.h create mode 100644 samples/external/opencv/include/opencv2/core/cvstd.hpp create mode 100644 samples/external/opencv/include/opencv2/core/cvstd.inl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/directx.hpp create mode 100644 samples/external/opencv/include/opencv2/core/eigen.hpp create mode 100644 samples/external/opencv/include/opencv2/core/fast_math.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/hal.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/interface.h create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_avx.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_cpp.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_forward.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_neon.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_sse.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_sse_em.hpp create mode 100644 samples/external/opencv/include/opencv2/core/hal/intrin_vsx.hpp create mode 100644 samples/external/opencv/include/opencv2/core/ippasync.hpp create mode 100644 samples/external/opencv/include/opencv2/core/mat.hpp create mode 100644 samples/external/opencv/include/opencv2/core/mat.inl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/matx.hpp create mode 100644 samples/external/opencv/include/opencv2/core/neon_utils.hpp create mode 100644 samples/external/opencv/include/opencv2/core/ocl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/ocl_genbase.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/ocl_defs.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/opencl_info.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/opencl_svm.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdblas.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/autogenerated/opencl_clamdfft.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/autogenerated/opencl_core.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/autogenerated/opencl_core_wrappers.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/autogenerated/opencl_gl_wrappers.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_clamdblas.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_clamdfft.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_core.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_core_wrappers.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_gl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_gl_wrappers.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_svm_20.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_svm_definitions.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opencl/runtime/opencl_svm_hsa_extension.hpp create mode 100644 samples/external/opencv/include/opencv2/core/opengl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/operations.hpp create mode 100644 samples/external/opencv/include/opencv2/core/optim.hpp create mode 100644 samples/external/opencv/include/opencv2/core/ovx.hpp create mode 100644 samples/external/opencv/include/opencv2/core/persistence.hpp create mode 100644 samples/external/opencv/include/opencv2/core/ptr.inl.hpp create mode 100644 samples/external/opencv/include/opencv2/core/saturate.hpp create mode 100644 samples/external/opencv/include/opencv2/core/softfloat.hpp create mode 100644 samples/external/opencv/include/opencv2/core/sse_utils.hpp create mode 100644 samples/external/opencv/include/opencv2/core/traits.hpp create mode 100644 samples/external/opencv/include/opencv2/core/types.hpp create mode 100644 samples/external/opencv/include/opencv2/core/types_c.h create mode 100644 samples/external/opencv/include/opencv2/core/utility.hpp create mode 100644 samples/external/opencv/include/opencv2/core/utils/filesystem.hpp create mode 100644 samples/external/opencv/include/opencv2/core/utils/logger.defines.hpp create mode 100644 samples/external/opencv/include/opencv2/core/utils/logger.hpp create mode 100644 samples/external/opencv/include/opencv2/core/utils/trace.hpp create mode 100644 samples/external/opencv/include/opencv2/core/va_intel.hpp create mode 100644 samples/external/opencv/include/opencv2/core/version.hpp create mode 100644 samples/external/opencv/include/opencv2/core/vsx_utils.hpp create mode 100644 samples/external/opencv/include/opencv2/core/wimage.hpp create mode 100644 samples/external/opencv/include/opencv2/cvconfig.h create mode 100644 samples/external/opencv/include/opencv2/dnn.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/all_layers.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/dict.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/dnn.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/dnn.inl.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/layer.details.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/layer.hpp create mode 100644 samples/external/opencv/include/opencv2/dnn/shape_utils.hpp create mode 100644 samples/external/opencv/include/opencv2/features2d.hpp create mode 100644 samples/external/opencv/include/opencv2/features2d/features2d.hpp create mode 100644 samples/external/opencv/include/opencv2/features2d/hal/interface.h create mode 100644 samples/external/opencv/include/opencv2/flann.hpp create mode 100644 samples/external/opencv/include/opencv2/flann/all_indices.h create mode 100644 samples/external/opencv/include/opencv2/flann/allocator.h create mode 100644 samples/external/opencv/include/opencv2/flann/any.h create mode 100644 samples/external/opencv/include/opencv2/flann/autotuned_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/composite_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/config.h create mode 100644 samples/external/opencv/include/opencv2/flann/defines.h create mode 100644 samples/external/opencv/include/opencv2/flann/dist.h create mode 100644 samples/external/opencv/include/opencv2/flann/dummy.h create mode 100644 samples/external/opencv/include/opencv2/flann/dynamic_bitset.h create mode 100644 samples/external/opencv/include/opencv2/flann/flann.hpp create mode 100644 samples/external/opencv/include/opencv2/flann/flann_base.hpp create mode 100644 samples/external/opencv/include/opencv2/flann/general.h create mode 100644 samples/external/opencv/include/opencv2/flann/ground_truth.h create mode 100644 samples/external/opencv/include/opencv2/flann/hdf5.h create mode 100644 samples/external/opencv/include/opencv2/flann/heap.h create mode 100644 samples/external/opencv/include/opencv2/flann/hierarchical_clustering_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/index_testing.h create mode 100644 samples/external/opencv/include/opencv2/flann/kdtree_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/kdtree_single_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/kmeans_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/linear_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/logger.h create mode 100644 samples/external/opencv/include/opencv2/flann/lsh_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/lsh_table.h create mode 100644 samples/external/opencv/include/opencv2/flann/matrix.h create mode 100644 samples/external/opencv/include/opencv2/flann/miniflann.hpp create mode 100644 samples/external/opencv/include/opencv2/flann/nn_index.h create mode 100644 samples/external/opencv/include/opencv2/flann/object_factory.h create mode 100644 samples/external/opencv/include/opencv2/flann/params.h create mode 100644 samples/external/opencv/include/opencv2/flann/random.h create mode 100644 samples/external/opencv/include/opencv2/flann/result_set.h create mode 100644 samples/external/opencv/include/opencv2/flann/sampling.h create mode 100644 samples/external/opencv/include/opencv2/flann/saving.h create mode 100644 samples/external/opencv/include/opencv2/flann/simplex_downhill.h create mode 100644 samples/external/opencv/include/opencv2/flann/timer.h create mode 100644 samples/external/opencv/include/opencv2/highgui.hpp create mode 100644 samples/external/opencv/include/opencv2/highgui/highgui.hpp create mode 100644 samples/external/opencv/include/opencv2/highgui/highgui_c.h create mode 100644 samples/external/opencv/include/opencv2/imgcodecs.hpp create mode 100644 samples/external/opencv/include/opencv2/imgcodecs/imgcodecs.hpp create mode 100644 samples/external/opencv/include/opencv2/imgcodecs/imgcodecs_c.h create mode 100644 samples/external/opencv/include/opencv2/imgcodecs/ios.h create mode 100644 samples/external/opencv/include/opencv2/imgproc.hpp create mode 100644 samples/external/opencv/include/opencv2/imgproc/detail/distortion_model.hpp create mode 100644 samples/external/opencv/include/opencv2/imgproc/hal/hal.hpp create mode 100644 samples/external/opencv/include/opencv2/imgproc/hal/interface.h create mode 100644 samples/external/opencv/include/opencv2/imgproc/imgproc.hpp create mode 100644 samples/external/opencv/include/opencv2/imgproc/imgproc_c.h create mode 100644 samples/external/opencv/include/opencv2/imgproc/types_c.h create mode 100644 samples/external/opencv/include/opencv2/ml.hpp create mode 100644 samples/external/opencv/include/opencv2/ml/ml.hpp create mode 100644 samples/external/opencv/include/opencv2/ml/ml.inl.hpp create mode 100644 samples/external/opencv/include/opencv2/objdetect.hpp create mode 100644 samples/external/opencv/include/opencv2/objdetect/detection_based_tracker.hpp create mode 100644 samples/external/opencv/include/opencv2/objdetect/objdetect.hpp create mode 100644 samples/external/opencv/include/opencv2/objdetect/objdetect_c.h create mode 100644 samples/external/opencv/include/opencv2/opencv.hpp create mode 100644 samples/external/opencv/include/opencv2/opencv_modules.hpp create mode 100644 samples/external/opencv/include/opencv2/photo.hpp create mode 100644 samples/external/opencv/include/opencv2/photo/cuda.hpp create mode 100644 samples/external/opencv/include/opencv2/photo/photo.hpp create mode 100644 samples/external/opencv/include/opencv2/photo/photo_c.h create mode 100644 samples/external/opencv/include/opencv2/shape.hpp create mode 100644 samples/external/opencv/include/opencv2/shape/emdL1.hpp create mode 100644 samples/external/opencv/include/opencv2/shape/hist_cost.hpp create mode 100644 samples/external/opencv/include/opencv2/shape/shape.hpp create mode 100644 samples/external/opencv/include/opencv2/shape/shape_distance.hpp create mode 100644 samples/external/opencv/include/opencv2/shape/shape_transformer.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/autocalib.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/blenders.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/camera.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/exposure_compensate.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/matchers.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/motion_estimators.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/seam_finders.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/timelapsers.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/util.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/util_inl.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/warpers.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/detail/warpers_inl.hpp create mode 100644 samples/external/opencv/include/opencv2/stitching/warpers.hpp create mode 100644 samples/external/opencv/include/opencv2/superres.hpp create mode 100644 samples/external/opencv/include/opencv2/superres/optical_flow.hpp create mode 100644 samples/external/opencv/include/opencv2/video.hpp create mode 100644 samples/external/opencv/include/opencv2/video/background_segm.hpp create mode 100644 samples/external/opencv/include/opencv2/video/tracking.hpp create mode 100644 samples/external/opencv/include/opencv2/video/tracking_c.h create mode 100644 samples/external/opencv/include/opencv2/video/video.hpp create mode 100644 samples/external/opencv/include/opencv2/videoio.hpp create mode 100644 samples/external/opencv/include/opencv2/videoio/cap_ios.h create mode 100644 samples/external/opencv/include/opencv2/videoio/registry.hpp create mode 100644 samples/external/opencv/include/opencv2/videoio/videoio.hpp create mode 100644 samples/external/opencv/include/opencv2/videoio/videoio_c.h create mode 100644 samples/external/opencv/include/opencv2/videostab.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/deblurring.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/fast_marching.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/fast_marching_inl.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/frame_source.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/global_motion.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/inpainting.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/log.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/motion_core.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/motion_stabilizing.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/optical_flow.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/outlier_rejection.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/ring_buffer.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/stabilizer.hpp create mode 100644 samples/external/opencv/include/opencv2/videostab/wobble_suppression.hpp create mode 100644 samples/external/opencv/include/opencv2/world.hpp create mode 100644 samples/external/opencv/lib/opencv_world346.lib create mode 100644 samples/utils/RenderingUtils.cpp create mode 100644 samples/utils/RenderingUtils.h create mode 100644 samples/utils/nvCVOpenCV.h create mode 100644 tools/ConvertSurreyFaceModel.exe create mode 100644 version.h diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..de57aab --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.12.0) + +# Set path where samples will be installed +set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR} CACHE PATH "Path to where the samples will be installed") + +project(NvAR_SDK CXX) + +set(CMAKE_CONFIGURATION_TYPES "Release") + +# Require C++11 and disable non-standard extensions +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN) + +# Set common build path for all targets +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + +set(SDK_INCLUDES_PATH ${CMAKE_CURRENT_SOURCE_DIR}/nvar/include) + +# Add target for nvARPose +add_library(nvARPose INTERFACE) +target_include_directories(nvARPose INTERFACE ${SDK_INCLUDES_PATH}) + +set(ENABLE_SAMPLES TRUE) +add_subdirectory(samples) + diff --git a/NVIDIA AR SDK Programming Guide.pdf b/NVIDIA AR SDK Programming Guide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..46924bf056e77b524bb06a74f112cff3687c9cdc GIT binary patch literal 693808 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

P{m(ZWz^CpjO8BMMV=| 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%0D9Qa#n=mmANlTC{#EDMHO{Yp5h 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

o!6q7F59qknKnI-C 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%0AYo*T)tD5v(E*<+Vvl@q7vkPfh>Bv~QJF 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�O=T;W3Ii@JIWxhPKR(A~@@(bU`=>Y{60XC4 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 literal 0 HcmV?d00001 diff --git a/nvar/include/nvAR.h b/nvar/include/nvAR.h new file mode 100644 index 0000000..34a3f3f --- /dev/null +++ b/nvar/include/nvAR.h @@ -0,0 +1,99 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ + +#ifndef NvAR_H +#define NvAR_H + +#include "nvAR_defs.h" + +#ifdef __cplusplus +extern "C" { +#endif // __cplusplus + +// Forward declaration for CUDA API +// CUstream and cudaStream_t are CUstream_st* +struct CUstream_st; +typedef struct CUstream_st *CUstream; + +typedef struct nvAR_Feature nvAR_Feature; +typedef struct nvAR_Feature *NvAR_FeatureHandle; + +//! Create a new feature instantiation. +//! \param[in] InFeatureID The selector code for the desired feature. +//! \param[out] handle Handle to the feature instance. +NvCV_Status NvAR_API NvAR_Create(NvAR_FeatureID featureID, NvAR_FeatureHandle *handle); + +//! Load the model based on the set params. +//! \param[in] handle Handle to the feature instance. +NvCV_Status NvAR_API NvAR_Load(NvAR_FeatureHandle handle); + +//! Run the selected feature instance. +//! \param[in] handle Handle to the feature instance. +NvCV_Status NvAR_API NvAR_Run(NvAR_FeatureHandle handle); + +//! Delete a previously created feature instance. +//! \param[in] handle Handle to the feature instance. +NvCV_Status NvAR_API NvAR_Destroy(NvAR_FeatureHandle handle); + +//! Wrapper for cudaStreamCreate(), if it is desired to avoid linking with the cuda lib. +//! \param[out] stream A place to store the newly allocated stream. +NvCV_Status NvAR_API NvAR_CudaStreamCreate(CUstream *stream); + +//! Wrapper for cudaStreamDestroy(), if it is desired to avoid linking with the cuda lib. +//! \param[in] stream The stream to destroy. +NvCV_Status NvAR_API NvAR_CudaStreamDestroy(CUstream stream); + +//! Set the value of the selected parameter. +//! \param[in] handle Handle to the feature instance. +//! \param[in] name The selector of the feature parameter to configure. +//! \param[in] val The value to be assigned to the selected feature parameter. +NvCV_Status NvAR_API NvAR_SetU32(NvAR_FeatureHandle handle, const char *name, unsigned int val); +NvCV_Status NvAR_API NvAR_SetS32(NvAR_FeatureHandle handle, const char *name, int val); +NvCV_Status NvAR_API NvAR_SetF32(NvAR_FeatureHandle handle, const char *name, float val); +NvCV_Status NvAR_API NvAR_SetF64(NvAR_FeatureHandle handle, const char *name, double val); +NvCV_Status NvAR_API NvAR_SetU64(NvAR_FeatureHandle handle, const char *name, unsigned long long val); +NvCV_Status NvAR_API NvAR_SetObject(NvAR_FeatureHandle handle, const char *name, void *ptr, unsigned long typeSize); +NvCV_Status NvAR_API NvAR_SetString(NvAR_FeatureHandle handle, const char *name, const char *str); +NvCV_Status NvAR_API NvAR_SetCudaStream(NvAR_FeatureHandle handle, const char *name, CUstream stream); +NvCV_Status NvAR_API NvAR_SetF32Array(NvAR_FeatureHandle handle, const char *name, float *vals, int /*count*/); + +//! Get the value of the selected parameter. +//! \param[in] handle Handle to the feature instance. +//! \param[in] name The selector of the feature parameter to retrieve. +//! \param[out] val Place to store the retrieved parameter. +NvCV_Status NvAR_API NvAR_GetU32(NvAR_FeatureHandle handle, const char *name, unsigned int *val); +NvCV_Status NvAR_API NvAR_GetS32(NvAR_FeatureHandle handle, const char *name, int *val); +NvCV_Status NvAR_API NvAR_GetF32(NvAR_FeatureHandle handle, const char *name, float *val); +NvCV_Status NvAR_API NvAR_GetF64(NvAR_FeatureHandle handle, const char *name, double *val); +NvCV_Status NvAR_API NvAR_GetU64(NvAR_FeatureHandle handle, const char *name, unsigned long long *val); +NvCV_Status NvAR_API NvAR_GetObject(NvAR_FeatureHandle handle, const char *name, const void **ptr, + unsigned long typeSize); +NvCV_Status NvAR_API NvAR_GetString(NvAR_FeatureHandle handle, const char *name, const char **str); +NvCV_Status NvAR_API NvAR_GetCudaStream(NvAR_FeatureHandle handle, const char *name, const CUstream *stream); +NvCV_Status NvAR_API NvAR_GetF32Array(NvAR_FeatureHandle handle, const char *name, const float **vals, int */*count*/); + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // #define NvAR_H diff --git a/nvar/include/nvAR_defs.h b/nvar/include/nvAR_defs.h new file mode 100644 index 0000000..85951a0 --- /dev/null +++ b/nvar/include/nvAR_defs.h @@ -0,0 +1,162 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ +#ifndef NvAR_DEFS_H +#define NvAR_DEFS_H + +#include +#include +#include + +#ifdef _WIN32 +#ifdef NVAR_API_EXPORT +#define NvAR_API __declspec(dllexport) __cdecl +#else +#define NvAR_API +#endif +#elif linux +// TODO: Linux code goes here +#endif + +typedef struct NvAR_Vector3f +{ + float vec[3]; +} NvAR_Vector3f; + +typedef struct NvAR_Vector3u16 { + unsigned short vec[3]; +} NvAR_Vector3u16; + +typedef struct NvAR_Rect { + float x, y, width, height; +} NvAR_Rect; + +typedef struct NvAR_BBoxes { + NvAR_Rect *boxes; + uint8_t num_boxes; + uint8_t max_boxes; +} NvAR_BBoxes; + +typedef struct NvAR_FaceMesh { + NvAR_Vector3f *vertices; ///< Mesh 3D vertex positions. + size_t num_vertices; + NvAR_Vector3u16 *tvi; ///< Mesh triangle's vertex indices + size_t num_tri_idx; +} NvAR_FaceMesh; + +typedef struct NvAR_Frustum { + float left; + float right; + float bottom; + float top; +} NvAR_Frustum; + +typedef struct NvAR_Quaternion { + float x, y, z, w; +} NvAR_Quaternion; + +typedef struct NvAR_Point2f { + float x, y; +} NvAR_Point2f; + +typedef struct NvAR_Vector2f { + float x, y; +} NvAR_Vector2f; + +typedef struct NvAR_RenderingParams { + NvAR_Frustum frustum; + NvAR_Quaternion rotation; + NvAR_Vector3f translation; +} NvAR_RenderingParams; + +// Parameters provided by client application +typedef const char* NvAR_FeatureID; +#define NvAR_Feature_FaceDetection "FaceDetection" +#define NvAR_Feature_LandmarkDetection "LandmarkDetection" +#define NvAR_Feature_Face3DReconstruction "Face3DReconstruction" + +#define NvAR_Parameter_Input(Name) "NvAR_Parameter_Input_" #Name +#define NvAR_Parameter_Output(Name) "NvAR_Parameter_Output_" #Name +#define NvAR_Parameter_Config(Name) "NvAR_Parameter_Config_" #Name + +/* +Parameters supported by each NvAR_FeatureID + +*******NvAR_Feature_FaceDetection******* +Config: +NvAR_Parameter_Config(FeatureDescription) +NvAR_Parameter_Config(CUDAStream) +NvAR_Parameter_Config(TRTModelDir) +NvAR_Parameter_Config(Temporal) + +Input: +NvAR_Parameter_Input(Image) + +Output: +NvAR_Parameter_Output(BoundingBoxes) +NvAR_Parameter_Output(BoundingBoxesConfidence) - OPTIONAL + +*******NvAR_Feature_LandmarkDetection******* +Config: +NvAR_Parameter_Config(FeatureDescription) +NvAR_Parameter_Config(CUDAStream) +NvAR_Parameter_Config(ModelDir) +NvAR_Parameter_Config(BatchSize) +NvAR_Parameter_Config(Landmarks_Size) +NvAR_Parameter_Config(LandmarksConfidence_Size) +NvAR_Parameter_Config(Temporal) + +Input: +NvAR_Parameter_Input(Image) +NvAR_Parameter_Input(BoundingBoxes) - OPTIONAL + +Output: +NvAR_Parameter_Output(BoundingBoxes) - OPTIONAL +NvAR_Parameter_Output(Landmarks) +NvAR_Parameter_Output(Pose) - OPTIONAL +NvAR_Parameter_Output(LandmarksConfidence) - OPTIONAL + +*******NvAR_Feature_Face3DReconstruction******* +Config +NvAR_Parameter_Config(FeatureDescription) +NvAR_Parameter_Config(ModelDir) +NvAR_Parameter_Config(Landmarks_Size) +NvAR_Parameter_Config(CUDAStream) -OPTIONAL +NvAR_Parameter_Config(Temporal) - OPTIONAL + +Input: +NvAR_Parameter_Input(Width) +NvAR_Parameter_Input(Height) +NvAR_Parameter_Input(Image) - OPTIONAL +NvAR_Parameter_Input(Landmarks) - OPTIONAL + +Output: +NvAR_Parameter_Output(FaceMesh) +NvAR_Parameter_Output(RenderingParams) +NvAR_Parameter_Output(BoundingBoxes) - OPTIONAL +NvAR_Parameter_Output(BoundingBoxesConfidence) - OPTIONAL +NvAR_Parameter_Output(Landmarks) - OPTIONAL +NvAR_Parameter_Output(Pose) - OPTIONAL +NvAR_Parameter_Output(LandmarksConfidence) - OPTIONAL +*/ + +#endif // NvAR_DEFS_H diff --git a/nvar/include/nvCVImage.h b/nvar/include/nvCVImage.h new file mode 100644 index 0000000..f63b71c --- /dev/null +++ b/nvar/include/nvCVImage.h @@ -0,0 +1,466 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ + +#ifndef __NVCVIMAGE_H__ +#define __NVCVIMAGE_H__ + +#include "nvCVStatus.h" + +#ifdef __cplusplus +extern "C" { +#endif // ___cplusplus + +struct CUstream_st; // typedef struct CUstream_st *CUstream; + +//! The format of pixels in an image. +typedef enum NvCVImage_PixelFormat { + NVCV_FORMAT_UNKNOWN = 0, //!< Unknown pixel format. + NVCV_Y = 1, //!< Luminance (gray). + NVCV_A = 2, //!< Alpha (opacity) + NVCV_YA = 3, //!< { Luminance, Alpha } + NVCV_RGB = 4, //!< { Red, Green, Blue } + NVCV_BGR = 5, //!< { Red, Green, Blue } + NVCV_RGBA = 6, //!< { Red, Green, Blue, Alpha } + NVCV_BGRA = 7, //!< { Red, Green, Blue, Alpha } + NVCV_YUV420 = 8, //!< Luminance and subsampled Chrominance { Y, Cb, Cr } + NVCV_YUV422 = 9, //!< Luminance and subsampled Chrominance { Y, Cb, Cr } +} NvCVImage_PixelFormat; + + +//! The data type used to represent each component of an image. +typedef enum NvCVImage_ComponentType { + NVCV_TYPE_UNKNOWN = 0, //!< Unknown type of component. + NVCV_U8 = 1, //!< Unsigned 8-bit integer. + NVCV_U16 = 2, //!< Unsigned 16-bit integer. + NVCV_S16 = 3, //!< Signed 16-bit integer. + NVCV_F16 = 4, //!< 16-bit floating-point. + NVCV_U32 = 5, //!< Unsigned 32-bit integer. + NVCV_S32 = 6, //!< Signed 32-bit integer. + NVCV_F32 = 7, //!< 32-bit floating-point (float). + NVCV_U64 = 8, //!< Unsigned 64-bit integer. + NVCV_S64 = 9, //!< Signed 64-bit integer. + NVCV_F64 = 10, //!< 64-bit floating-point (double). +} NvCVImage_ComponentType; + + +//! Value for the planar field or isPlanar argument. Two values are currently accommodated for RGB: +//! Interleaved or chunky storage locates all components of a pixel adjacent in memory, +//! e.g. RGBRGBRGB... (denoted [RGB]). +//! Planar storage locates the same component of all pixels adjacent in memory, +//! e.g. RRRRR...GGGGG...BBBBB... (denoted [R][G][B]) +//! YUV has many more variants. +//! 4:2:2 can be chunky, planar or semi-planar, with different orderings. +//! 4:2:0 can be planar or semi-planar, with different orderings. +//! Aliases are provided for FOURCCs defined at fourcc.org. +//! Note: the LSB can be used to distinguish between chunky and planar formats. +#define NVCV_INTERLEAVED 0 //!< All components of pixel(x,y) are adjacent (same as chunky) (default for non-YUV). +#define NVCV_CHUNKY 0 //!< All components of pixel(x,y) are adjacent (same as interleaved). +#define NVCV_PLANAR 1 //!< The same component of all pixels are adjacent. +#define NVCV_UYVY 2 //!< [UYVY] Chunky 4:2:2 (default for 4:2:2) +#define NVCV_VYUY 4 //!< [VYUY] Chunky 4:2:2 +#define NVCV_YUYV 6 //!< [YUYV] Chunky 4:2:2 +#define NVCV_YVYU 8 //!< [YVYU] Chunky 4:2:2 +#define NVCV_YUV 3 //!< [Y][U][V] Planar 4:2:2 or 4:2:0 +#define NVCV_YVU 5 //!< [Y][V][U] Planar 4:2:2 or 4:2:0 +#define NVCV_YCUV 7 //!< [Y][UV] Semi-planar 4:2:2 or 4:2:0 (default for 4:2:0) +#define NVCV_YCVU 9 //!< [Y][VU] Semi-planar 4:2:2 or 4:2:0 +#define NVCV_YUY2 NVCV_YUYV //!< [YUYV] Chunky 4:2:2 +#define NVCV_I420 NVCV_YUV //!< [Y][U][V] Planar 4:2:2 or 4:2:0 +#define NVCV_IYUV NVCV_YUV //!< [Y][U][V] Planar 4:2:2 or 4:2:0 +#define NVCV_YV12 NVCV_YVU //!< [Y][V][U] Planar 4:2:2 or 4:2:0 +#define NVCV_NV12 NVCV_YCUV //!< [Y][UV] Semi-planar 4:2:2 or 4:2:0 (default for 4:2:0) +#define NVCV_NV21 NVCV_YCVU //!< [Y][VU] Semi-planar 4:2:2 or 4:2:0 + +//! The following are ORed together for the colorspace field for YUV. +//! NVCV_601 and NVCV_709 describe the color axes of YUV. +//! NVCV_VIDEO_RANGE and NVCV_VIDEO_RANGE describe the range, [16, 235] or [0, 255], respectively. +//! NVCV_CHROMA_COSITED and NVCV_CHROMA_INTSTITIAL describe the location of the chroma samples. +#define NVCV_601 0 //!< The Rec.601 YUV colorspace, typically used for SD. +#define NVCV_709 1 //!< The Rec.709 YUV colorspace, typically used for HD. +#define NVCV_VIDEO_RANGE 0 //!< The video range is [16, 235]. +#define NVCV_FULL_RANGE 4 //!< The video range is [ 0, 255]. +#define NVCV_CHROMA_COSITED 0 //!< The chroma is sampled at the same location as the luma samples horizontally. +#define NVCV_CHROMA_INTSTITIAL 8 //!< The chroma is sampled between luma samples horizontally. +#define NVCV_CHROMA_MPEG2 NVCV_CHROMA_COSITED +#define NVCV_CHROMA_MPEG1 NVCV_CHROMA_INTSTITIAL + +//! This is the value for the gpuMem field or the onGPU argument. Two values are currently accommodated: +//! CPU indicates standard CPU memory. +//! GPU indicates CUDA buffers. +#define NVCV_CPU 0 //!< The buffer is stored in CPU memory. +#define NVCV_GPU 1 //!< The buffer is stored in CUDA memory. +#define NVCV_CUDA 1 //!< The buffer is stored in CUDA memory. + +//! Image descriptor. +typedef struct +#ifdef _MSC_VER +__declspec(dllexport) +#endif // _MSC_VER +NvCVImage { + unsigned int width; //!< The number of pixels horizontally in the image. + unsigned int height; //!< The number of pixels vertically in the image. + signed int pitch; //!< The byte stride between pixels vertically. + NvCVImage_PixelFormat pixelFormat; //!< The format of the pixels in the image. + NvCVImage_ComponentType componentType; //!< The data type used to represent each component of the image. + unsigned char pixelBytes; //!< The number of bytes in a chunky pixel. + unsigned char componentBytes; //!< The number of bytes in each pixel component. + unsigned char numComponents; //!< The number of components in each pixel. + unsigned char planar; //!< 0=chunky, 1=planar, 2=semi-planar (NV12, NV21). + unsigned char gpuMem; //!< 0=cpu mem, 1=cuda mem, + unsigned char colorspace; //!< an OR of colorspace, range and chroma phase. + unsigned char reserved[2]; //!< For structure padding and future expansion. Set to 0. + void *pixels; //!< Pointer to pixel(0,0) in the image. + void *deletePtr; //!< Buffer memory to be deleted (can be NULL). + void (*deleteProc)(void *p); //!< Delete procedure to call rather than free(). + unsigned long long bufferBytes; //!< The maximum amount of memory available through pixels. + + +#ifdef __cplusplus + + //! Default constructor: fill with 0. + inline NvCVImage(); + + //! Allocation constructor. + //! \param[in] width the number of pixels horizontally. + //! \param[in] height the number of pixels vertically. + //! \param[in] format the format of the pixels. + //! \param[in] type the type of each pixel component. + //! \param[in] isPlanar One of { NVCV_CHUNKY, NVCV_PLANAR }. + //! \param[in] onGPU One of { NVCV_CPU, NVCV_GPU } + //! \param[in] alignment row byte alignment. Choose 0 or a power of 2. + //! 1: yields no gap whatsoever between scanlines; + //! 0: default alignment: 4 on CPU, and cudaMallocPitch's choice on GPU. + //! Other common values are 16 or 32 for cache line size. + inline NvCVImage(unsigned width, unsigned height, NvCVImage_PixelFormat format, NvCVImage_ComponentType type, + unsigned isPlanar = 0, unsigned onGPU = 0, unsigned alignment = 0); + + //! Subimage constructor. + //! \param[in] fullImg the full image, from which this subImage view is to be created. + //! \param[in] x the left edge of the subImage, in reference to the full image. + //! \param[in] y the top edge of the subImage, in reference to the full image. + //! \param[in] width the width of the subImage, in pixels. + //! \param[in] height the height of the subImage, in pixels. + //! \bug This does not work for planar or semi-planar formats, neither RGB nor YUV. + //! \note This does work for all chunky formats, including UYVY, VYUY, YUYV, YVYU. + inline NvCVImage(NvCVImage *fullImg, int x, int y, unsigned width, unsigned height); + + //! Destructor + inline ~NvCVImage(); + + //! Copy a rectangular subimage. This works for CPU->CPU, CPU->GPU, GPU->GPU, and GPU->CPU. + //! \param[in] src The source image from which to copy. + //! \param[in] srcX The left coordinate of the src rectangle. + //! \param[in] srcY The top coordinate of the src rectangle. + //! \param[in] dstX The left coordinate of the dst rectangle. + //! \param[in] dstY The top coordinate of the dst rectangle. + //! \param[in] width The width of the rectangle to be copied, in pixels. + //! \param[in] height The height of the rectangle to be copied, in pixels. + //! \note NvCVImage_Transfer() can handle more cases. + //! \return NVCV_SUCCESS if successful + //! \return NVCV_ERR_MISMATCH if the formats are different + //! \return NVCV_ERR_CUDA if a CUDA error occurred + //! \return NVCV_ERR_PIXELFORMAT if the pixel format is not yet accommodated. + //! \bug This does not work for planar or semi-planar formats, neither RGB nor YUV. + //! \note This does work for all chunky formats, including UYVY, VYUY, YUYV, YVYU. + inline NvCV_Status copyFrom(const NvCVImage *src, int srcX, int srcY, int dstX, int dstY, unsigned width, unsigned height); + + //! Copy from one image to another. This works for CPU->CPU, CPU->GPU, GPU->GPU, and GPU->CPU. + //! \param[in] src The source image from which to copy. + //! \note NvCVImage_Transfer() can handle more cases. + //! \return NVCV_SUCCESS if successful + //! \return NVCV_ERR_MISMATCH if the formats are different + //! \return NVCV_ERR_CUDA if a CUDA error occurred + //! \return NVCV_ERR_PIXELFORMAT if the pixel format is not yet accommodated. + inline NvCV_Status copyFrom(const NvCVImage *src); + +#endif // ___cplusplus +} NvCVImage; + + +//! Initialize an image. The C++ constructors can initialize this appropriately. +//! This is called by the C++ constructor, but C code should call this explicitly. +//! \param[in,out] im the image to initialize. +//! \param[in] width the desired width of the image, in pixels. +//! \param[in] height the desired height of the image, in pixels. +//! \param[in] pitch the byte stride between pixels vertically. +//! \param[in] pixels a pointer to the pixel buffer. +//! \param[in] format the format of the pixels. +//! \param[in] type the type of the components of the pixels. +//! \param[in] isPlanar One of { NVCV_CHUNKY, NVCV_PLANAR }. +//! \param[in] onGPU Location of the buffer: one of { NVCV_CPU, NVCV_GPU } +//! \return NVCV_SUCCESS if successful +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not yet accommodated. +NvCV_Status NvCV_API NvCVImage_Init(NvCVImage *im, unsigned width, unsigned height, int pitch, void *pixels, + NvCVImage_PixelFormat format, NvCVImage_ComponentType type, unsigned isPlanar, unsigned onGPU); + + +//! Initialize a view into a subset of an existing image. +//! No memory is allocated -- the fullImg buffer is used. +//! \param[in] subImg the sub-image view into the existing full image. +//! \param[in] fullImg the existing full image. +//! \param[in] x the left edge of the sub-image, as coordinate of the full image. +//! \param[in] y the top edge of the sub-image, as coordinate of the full image. +//! \param[in] width the desired width of the subImage, in pixels. +//! \param[in] height the desired height of the subImage, in pixels. +//! \bug This does not work for planar or semi-planar formats, neither RGB nor YUV. +//! \note This does work for all chunky formats, including UYVY, VYUY, YUYV, YVYU. +void NvCV_API NvCVImage_InitView(NvCVImage *subImg, NvCVImage *fullImg, int x, int y, unsigned width, unsigned height); + + +//! Allocate memory for, and initialize an image. This assumes that the image data structure has nothing meaningful in it. +//! This is called by the C++ constructor, but C code can call this to allocate an image. +//! \param[in,out] im the image to initialize. +//! \param[in] width the desired width of the image, in pixels. +//! \param[in] height the desired height of the image, in pixels. +//! \param[in] format the format of the pixels. +//! \param[in] type the type of the components of the pixels. +//! \param[in] isPlanar One of { NVCV_CHUNKY, NVCV_PLANAR }. +//! \param[in] onGPU Location of the buffer: one of { NVCV_CPU, NVCV_GPU } +//! \param[in] alignment row byte alignment. Choose 0 or a power of 2. +//! 1: yields no gap whatsoever between scanlines; +//! 0: default alignment: 4 on CPU, and cudaMallocPitch's choice on GPU. +//! Other common values are 16 or 32 for cache line size. +//! \return NVCV_SUCCESS if the operation was successful. +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. +//! \return NVCV_ERR_MEMORY if there is not enough memory to allocate the buffer. +NvCV_Status NvCV_API NvCVImage_Alloc(NvCVImage *im, unsigned width, unsigned height, NvCVImage_PixelFormat format, + NvCVImage_ComponentType type, unsigned isPlanar, unsigned onGPU, unsigned alignment); + + +//! Reallocate memory for, and initialize an image. This assumes that the image is valid. +//! It will check bufferBytes to see if enough memory is already available, and will reshape rather than realloc if true. +//! Otherwise, it will free the previous buffer and reallocate a new one. +//! \param[in,out] im the image to initialize. +//! \param[in] width the desired width of the image, in pixels. +//! \param[in] height the desired height of the image, in pixels. +//! \param[in] format the format of the pixels. +//! \param[in] type the type of the components of the pixels. +//! \param[in] isPlanar One of { NVCV_CHUNKY, NVCV_PLANAR }. +//! \param[in] onGPU Location of the buffer: one of { NVCV_CPU, NVCV_GPU } +//! \param[in] alignment row byte alignment. Choose 0 or a power of 2. +//! 1: yields no gap whatsoever between scanlines; +//! 0: default alignment: 4 on CPU, and cudaMallocPitch's choice on GPU. +//! Other common values are 16 or 32 for cache line size. +//! \return NVCV_SUCCESS if the operation was successful. +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. +//! \return NVCV_ERR_MEMORY if there is not enough memory to allocate the buffer. +NvCV_Status NvCV_API NvCVImage_Realloc(NvCVImage *im, unsigned width, unsigned height, NvCVImage_PixelFormat format, + NvCVImage_ComponentType type, unsigned isPlanar, unsigned onGPU, unsigned alignment); + + +//! Deallocate the image buffer from the image. The image is not deallocated. +//! param[in,out] im the image whose buffer is to be deallocated. +void NvCV_API NvCVImage_Dealloc(NvCVImage *im); + + +//! Allocate a new image, with storage (C-style constructor). +//! \param[in] width the desired width of the image, in pixels. +//! \param[in] height the desired height of the image, in pixels. +//! \param[in] format the format of the pixels. +//! \param[in] type the type of the components of the pixels. +//! \param[in] isPlanar One of { NVCV_CHUNKY, NVCV_PLANAR }. +//! \param[in] onGPU Location of the buffer: one of { NVCV_CPU, NVCV_GPU } +//! \param[in] alignment row byte alignment. Choose 0 or a power of 2. +//! 1: yields no gap whatsoever between scanlines; +//! 0: default alignment: 4 on CPU, and cudaMallocPitch's choice on GPU. +//! Other common values are 16 or 32 for cache line size. +//! \param[out] *out will be a pointer to the new image if successful; otherwise NULL. +//! \return NVCV_SUCCESS if the operation was successful. +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. +//! \return NVCV_ERR_MEMORY if there is not enough memory to allocate the buffer. +NvCV_Status NvCV_API NvCVImage_Create(unsigned width, unsigned height, NvCVImage_PixelFormat format, + NvCVImage_ComponentType type, unsigned isPlanar, unsigned onGPU, unsigned alignment, NvCVImage **out); + + +//! Deallocate the image allocated with NvCVImage_Create() (C-style destructor). +void NvCV_API NvCVImage_Destroy(NvCVImage *im); + + +//! Get offsets for the components of a pixel format. +//! These are not byte offsets, but component offsets. +//! \param[in] format the pixel format to be interrogated. +//! \param[out] rOff a place to store the offset for the red channel (can be NULL). +//! \param[out] gOff a place to store the offset for the green channel (can be NULL). +//! \param[out] bOff a place to store the offset for the blue channel (can be NULL). +//! \param[out] aOff a place to store the offset for the alpha channel (can be NULL). +//! \param[out] yOff a place to store the offset for the luminance channel (can be NULL). +void NvCV_API NvCVImage_ComponentOffsets(NvCVImage_PixelFormat format, int *rOff, int *gOff, int *bOff, int *aOff, int *yOff); + + +//! Transfer one image to another, with a limited set of conversions. +//! If any of the images resides on the GPU, it may run asynchronously, +//! so cudaStreamSynchronize() should be called if it is necessary to run synchronously. +//! Conversions are between +//! - RGBu8 --> RGBu8, where the RGB components are in any order; +//! - RGBu8 <--> RGBf32, where the RGB components are in any order (e.g. BGR, RGB); +//! - RGBu8 --> GRAYf32, where the RGB components are in any order; +//! - RGBf32 --> RGBAu8, setting A=255, where the RGB and RGBA components are in any order; +//! - RGBAu8 --> RGBu8, by removing the alpha component; +//! - GRAYf32 --> GRAYu8; +//! - GRAYu8 --> GRAYu8, where the RGB components are in any order (also works with ALPHAu8); +//! - ALPHAu8 --> RGBAu8, (insertion) without touching the RGB components. +//! - GRAYu8 --> RGBu8, by replicating gray into all RGB components. +//! - YUVu8 --> RGBu8, though colorspace field needs to be set manually prior to calling. +//! - chunky <--> planar; +//! - CPU <--> GPU; +//! Additionally, when the src and dst formats are the same, all formats are accommodated on CPU and GPU, +//! and this can be used as a replacement for cudaMemcpy2DAsync() (which it utilizes). +//! +//! When there is some kind of conversion AND the src and dst reside on different processors (CPU, GPU), +//! it is necessary to have a temporary GPU buffer, which is reshaped as needed to match the characteristics +//! of the CPU image. The same temporary image can be used in subsequent calls to NvCVImage_Transfer(), +//! regardless of the shape, format or component type, as it will grow as needed to accommodate +//! the largest memory requirement. The recommended usage for most cases is to supply an empty image +//! as the temporary; if it is not needed, no buffer is allocated. NULL can be supplied as the tmp +//! image, in which case an ephemeral buffer is allocated if needed, with resultant +//! performance degradation for image sequences. +//! +//! \param[in] src the source image. +//! \param[out] dst the destination image. +//! \param[in] scale a scale factor that can be applied when one (but not both) of the images +//! is based on floating-point components; this parameter is ignored when all image components +//! are represented with integer data types, or all image components are represented with +//! floating-point data types. +//! \param[in] stream the stream on which to perform the copy. This is ignored if both images reside on the CPU. +//! \param[in,out] tmp a temporary buffer that is sometimes needed when transferring images +//! between the CPU and GPU in either direction (can be empty or NULL). +//! It has the same characteristics as the CPU image, but it resides on the GPU. +//! \return NVCV_SUCCESS if successful, +//! NVCV_ERR_PIXELFORMAT if one of the pixel formats is not accommodated. +//! NVCV_ERR_CUDA if a CUDA error has occurred. +//! NVCV_ERR_GENERAL if an otherwise unspecified error has occurred. +NvCV_Status NvCV_API NvCVImage_Transfer( + const NvCVImage *src, NvCVImage *dst, float scale, struct CUstream_st *stream, NvCVImage *tmp); + + +//! Composite one BGRu8 source image over another using the given matte. +//! \param[in] src the source BGRu8 (or RGBu8) image. +//! \param[in] mat the matte Yu8 (or Au8) image, indicating where the src should come through. +//! \param[out] dst the destination BGRu8 (or RGBu8) image. +//! \return NVCV_SUCCESS if the operation was successful. +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. +//! \bug This is only implemented for 3-component u8 src and dst, and 1-component mat, +//! where all images are resident on the CPU. +NvCV_Status NvCV_API NvCVImage_Composite(const NvCVImage *src, const NvCVImage *mat, NvCVImage *dst); + + +//! Composite a BGRu8 source image over a constant color field using the given matte. +//! \param[in] src the source BGRu8 (or RGBu8) image. +//! \param[in] mat the matte Yu8 (or Au8) image, indicating where the src should come through. +//! \param[in] bgColor the desired flat background color, with the same component ordering as the src and dst. +//! \param[in,out] dst the destination BGRu8 (or RGBu8) image. May be the same as src. +//! \return NVCV_SUCCESS if the operation was successful. +//! \return NVCV_ERR_PIXELFORMAT if the pixel format is not accommodated. +//! \bug This is only implemented for 3-component u8 src and dst, and 1-component mat, +//! where all images are resident on the CPU. +NvCV_Status NvCV_API NvCVImage_CompositeOverConstant( + const NvCVImage *src, const NvCVImage *mat, const unsigned char bgColor[3], NvCVImage *dst); + + +//! Flip the image vertically. +//! No actual pixels are moved: it is just an accounting procedure. +//! This is extremely low overhead, but requires appropriate interpretation of the pitch. +//! Flipping twice yields the original orientation. +//! \param[in] src the source image (NULL implies src == dst). +//! \param[out] dst the flipped image (can be the same as the src). +//! \return NVCV_SUCCESS if successful. +//! \return NVCV_ERR_PIXELFORMAT for most planar formats. +//! \bug This does not work for planar or semi-planar formats, neither RGB nor YUV. +//! \note This does work for all chunky formats, including UYVY, VYUY, YUYV, YVYU. +NvCV_Status NvCV_API NvCVImage_FlipY(const NvCVImage *src, NvCVImage *dst); + + +//! Get the pointers for YUV, based on the format. +//! \param[in] im The image to be deconstructed. +//! \param[out] y A place to store the pointer to y(0,0). +//! \param[out] u A place to store the pointer to u(0,0). +//! \param[out] v A place to store the pointer to v(0,0). +//! \param[out] yPixBytes A place to store the byte stride between luma samples horizontally. +//! \param[out] cPixBytes A place to store the byte stride between chroma samples horizontally. +//! \param[out] yRowBytes A place to store the byte stride between luma samples vertically. +//! \param[out] cRowBytes A place to store the byte stride between chroma samples vertically. +//! \return NVCV_SUCCESS If the information was gathered successfully. +//! NVCV_ERR_PIXELFORMAT Otherwise. +NvCV_Status NvCV_API NvCVImage_GetYUVPointers(NvCVImage *im, + unsigned char **y, unsigned char **u, unsigned char **v, + int *yPixBytes, int *cPixBytes, int *yRowBytes, int *cRowBytes); + + +#ifdef __cplusplus +} // extern "C" + +/******************************************************************************** + * NvCVImage default constructor + ********************************************************************************/ + +NvCVImage::NvCVImage() { + pixels = nullptr; + (void)NvCVImage_Alloc(this, 0, 0, NVCV_FORMAT_UNKNOWN, NVCV_TYPE_UNKNOWN, 0, 0, 0); +} + +/******************************************************************************** + * NvCVImage allocation constructor + ********************************************************************************/ + +NvCVImage::NvCVImage(unsigned width, unsigned height, NvCVImage_PixelFormat format, NvCVImage_ComponentType type, + unsigned isPlanar, unsigned onGPU, unsigned alignment) { + pixels = nullptr; + (void)NvCVImage_Alloc(this, width, height, format, type, isPlanar, onGPU, alignment); +} + +/******************************************************************************** + * Subimage constructor + ********************************************************************************/ + +NvCVImage::NvCVImage(NvCVImage *fullImg, int x, int y, unsigned width, unsigned height) { + NvCVImage_InitView(this, fullImg, x, y, width, height); +} + +/******************************************************************************** + * NvCVImage destructor + ********************************************************************************/ + +NvCVImage::~NvCVImage() { NvCVImage_Dealloc(this); } + +/******************************************************************************** + * copy subimage + ********************************************************************************/ + +NvCV_Status NvCVImage::copyFrom(const NvCVImage *src, int srcX, int srcY, int dstX, int dstY, unsigned wd, + unsigned ht) { + NvCVImage srcView, dstView; + NvCVImage_InitView(&srcView, const_cast(src), srcX, srcY, wd, ht); + NvCVImage_InitView(&dstView, this, dstX, dstY, wd, ht); + return NvCVImage_Transfer(&srcView, &dstView, 1.f, 0, nullptr); +} + +/******************************************************************************** + * copy image + ********************************************************************************/ + +NvCV_Status NvCVImage::copyFrom(const NvCVImage *src) { return NvCVImage_Transfer(src, this, 1.f, 0, nullptr); } + + +#endif // ___cplusplus + +#endif // __NVCVIMAGE_H__ diff --git a/nvar/include/nvCVStatus.h b/nvar/include/nvCVStatus.h new file mode 100644 index 0000000..5c32654 --- /dev/null +++ b/nvar/include/nvCVStatus.h @@ -0,0 +1,94 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ + +#ifndef __NVCVSTATUS_H__ +#define __NVCVSTATUS_H__ + +#ifndef NvCV_API + #ifdef _WIN32 + #ifdef NVCV_API_EXPORT + #define NvCV_API __declspec(dllexport) __cdecl + #else + #define NvCV_API + #endif + #else //if linux + #define NvCV_API // TODO: Linux code goes here + #endif // _WIN32 or linux +#endif //NvCV_API + + +#ifdef __cplusplus +extern "C" { +#endif // ___cplusplus + + +//! Status codes returned from APIs. +typedef enum NvCV_Status { + NVCV_SUCCESS = 0, //!< The procedure returned successfully. + NVCV_ERR_GENERAL = -1, //!< An otherwise unspecified error has occurred. + NVCV_ERR_UNIMPLEMENTED = -2, //!< The requested feature is not yet implemented. + NVCV_ERR_MEMORY = -3, //!< There is not enough memory for the requested operation. + NVCV_ERR_EFFECT = -4, //!< An invalid effect handle has been supplied. + NVCV_ERR_SELECTOR = -5, //!< The given parameter selector is not valid in this effect filter. + NVCV_ERR_BUFFER = -6, //!< An image buffer has not been specified. + NVCV_ERR_PARAMETER = -7, //!< An invalid parameter value has been supplied for this effect+selector. + NVCV_ERR_MISMATCH = -8, //!< Some parameters are not appropriately matched. + NVCV_ERR_PIXELFORMAT = -9, //!< The specified pixel format is not accommodated. + NVCV_ERR_MODEL = -10, //!< Error while loading the TRT model. + NVCV_ERR_LIBRARY = -11, //!< Error loading the dynamic library. + NVCV_ERR_INITIALIZATION = -12, //!< The effect has not been properly initialized. + NVCV_ERR_FILE = -13, //!< The file could not be found. + NVCV_ERR_FEATURENOTFOUND = -14, //!< The requested feature was not found + NVCV_ERR_MISSINGINPUT = -15, //!< A required parameter was not set + NVCV_ERR_RESOLUTION = -16, //!< The specified image resolution is not supported. + + NVCV_ERR_CUDA_MEMORY = -20, //!< There is not enough CUDA memory for the requested operation. + NVCV_ERR_CUDA_VALUE = -21, //!< A CUDA parameter is not within the acceptable range. + NVCV_ERR_CUDA_PITCH = -22, //!< A CUDA pitch is not within the acceptable range. + NVCV_ERR_CUDA_INIT = -23, //!< The CUDA driver and runtime could not be initialized. + NVCV_ERR_CUDA_LAUNCH = -24, //!< The CUDA kernel launch has failed. + NVCV_ERR_CUDA_KERNEL = -25, //!< No suitable kernel image is available for the device. + NVCV_ERR_CUDA_DRIVER = -26, //!< The installed NVIDIA CUDA driver is older than the CUDA runtime library. + NVCV_ERR_CUDA_UNSUPPORTED = -27, //!< The CUDA operation is not supported on the current system or device. + NVCV_ERR_CUDA_ILLEGAL_ADDRESS = -28, //!< CUDA tried to load or store on an invalid memory address. + NVCV_ERR_CUDA = -30, //!< An otherwise unspecified CUDA error has been reported. +} NvCV_Status; + + +//! Get an error string corresponding to the given status code. +//! \param[in] code the NvCV status code. +//! \return the corresponding string. +//! \todo Find a cleaner way to do this, because NvCV_API doesn't work. +#ifdef _WIN32 + __declspec(dllexport) const char* __cdecl +#else + const char* +#endif // _WIN32 or linux +NvCV_GetErrorStringFromCode(NvCV_Status code); + + +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // __NVCVSTATUS_H__ diff --git a/nvar/src/nvARProxy.cpp b/nvar/src/nvARProxy.cpp new file mode 100644 index 0000000..8368ca9 --- /dev/null +++ b/nvar/src/nvARProxy.cpp @@ -0,0 +1,357 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ +#include + +#include "nvAR.h" + +#ifdef _WIN32 +#define _WINSOCKAPI_ +#include +#include +#else +#include +typedef void* HMODULE; +typedef void* HANDLE; +typedef void* HINSTANCE; +#endif + +// Parameter string does not include the file extension +#ifdef _WIN32 +#define nvLoadLibrary(library) LoadLibrary(TEXT(library ".dll")) +#else +#define nvLoadLibrary(library) dlopen("lib" library ".so", RTLD_LAZY) +#endif + + +inline void* nvGetProcAddress(HINSTANCE handle, const char* proc) { + if (nullptr == handle) return nullptr; +#ifdef _WIN32 + return GetProcAddress(handle, proc); +#else + return dlsym(handle, proc); +#endif +} + +inline int nvFreeLibrary(HINSTANCE handle) { +#ifdef _WIN32 + return FreeLibrary(handle); +#else + return dlclose(handle); +#endif +} + +HINSTANCE getNvARLib() { + + TCHAR path[MAX_PATH], fullPath[2*MAX_PATH]; + + // There can be multiple apps on the system, + // some might include the SDK in the app package and + // others might expect the SDK to be installed in Program Files + GetEnvironmentVariable(TEXT("NV_AR_SDK_PATH"), path, MAX_PATH); + if (_tcscmp(path, TEXT("USE_APP_PATH"))) { + // App has not set environment variable to "USE_APP_PATH" + // So pick up the SDK dll and dependencies from Program Files + GetEnvironmentVariable(TEXT("ProgramFiles"), path, MAX_PATH); + size_t max_len = sizeof(fullPath)/sizeof(TCHAR); + _stprintf_s(fullPath, max_len, TEXT("%s\\NVIDIA Corporation\\NVIDIA AR SDK\\"), path); + SetDllDirectory(fullPath); + } + static const HINSTANCE NvArLib = nvLoadLibrary("nvARPose"); + return NvArLib; +} + +NvCV_Status NvAR_API NvCVImage_Init(NvCVImage* im, unsigned width, unsigned height, int pitch, void* pixels, + NvCVImage_PixelFormat format, NvCVImage_ComponentType type, unsigned isPlanar, + unsigned onGPU) { + static const auto funcPtr = (decltype(NvCVImage_Init)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Init"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(im, width, height, pitch, pixels, format, type, isPlanar, onGPU); +} + +void NvAR_API NvCVImage_InitView(NvCVImage* subImg, NvCVImage* fullImg, int x, int y, unsigned width, + unsigned height) { + static const auto funcPtr = (decltype(NvCVImage_InitView)*)nvGetProcAddress(getNvARLib(), "NvCVImage_InitView"); + + if (nullptr != funcPtr) funcPtr(subImg, fullImg, x, y, width, height); +} + +NvCV_Status NvAR_API NvCVImage_Alloc(NvCVImage* im, unsigned width, unsigned height, NvCVImage_PixelFormat format, + NvCVImage_ComponentType type, unsigned isPlanar, unsigned onGPU, unsigned alignment) { + static const auto funcPtr = (decltype(NvCVImage_Alloc)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Alloc"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(im, width, height, format, type, isPlanar, onGPU, alignment); +} + +NvCV_Status NvAR_API NvCVImage_Realloc(NvCVImage* im, unsigned width, unsigned height, + NvCVImage_PixelFormat format, NvCVImage_ComponentType type, + unsigned isPlanar, unsigned onGPU, unsigned alignment) { + static const auto funcPtr = (decltype(NvCVImage_Realloc)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Realloc"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(im, width, height, format, type, isPlanar, onGPU, alignment); +} + +void NvAR_API NvCVImage_Dealloc(NvCVImage* im) { + static const auto funcPtr = (decltype(NvCVImage_Dealloc)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Dealloc"); + + if (nullptr != funcPtr) funcPtr(im); +} + +NvCV_Status NvAR_API NvCVImage_Create(unsigned width, unsigned height, NvCVImage_PixelFormat format, + NvCVImage_ComponentType type, unsigned isPlanar, unsigned onGPU, + unsigned alignment, NvCVImage** out) { + static const auto funcPtr = (decltype(NvCVImage_Create)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Create"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(width, height, format, type, isPlanar, onGPU, alignment, out); +} + +void NvAR_API NvCVImage_Destroy(NvCVImage* im) { + static const auto funcPtr = (decltype(NvCVImage_Destroy)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Destroy"); + + if (nullptr != funcPtr) funcPtr(im); +} + +void NvAR_API NvCVImage_ComponentOffsets(NvCVImage_PixelFormat format, int* rOff, int* gOff, int* bOff, int* aOff, + int* yOff) { + static const auto funcPtr = + (decltype(NvCVImage_ComponentOffsets)*)nvGetProcAddress(getNvARLib(), "NvCVImage_ComponentOffsets"); + + if (nullptr != funcPtr) funcPtr(format, rOff, gOff, bOff, aOff, yOff); +} + +NvCV_Status NvAR_API NvCVImage_Transfer(const NvCVImage* src, NvCVImage* dst, float scale, CUstream_st* stream, + NvCVImage* tmp) { + static const auto funcPtr = (decltype(NvCVImage_Transfer)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Transfer"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(src, dst, scale, stream, tmp); +} + +NvCV_Status NvAR_API NvCVImage_Composite(const NvCVImage* src, const NvCVImage* mat, NvCVImage* dst) { + static const auto funcPtr = (decltype(NvCVImage_Composite)*)nvGetProcAddress(getNvARLib(), "NvCVImage_Composite"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(src, mat, dst); +} + +NvCV_Status NvAR_API NvCVImage_CompositeOverConstant(const NvCVImage* src, const NvCVImage* mat, + const unsigned char bgColor[3], NvCVImage* dst) { + static const auto funcPtr = + (decltype(NvCVImage_CompositeOverConstant)*)nvGetProcAddress(getNvARLib(), "NvCVImage_CompositeOverConstant"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(src, mat, bgColor, dst); +} + +NvCV_Status NvAR_API NvCVImage_FlipY(const NvCVImage* src, NvCVImage* dst) { + static const auto funcPtr = (decltype(NvCVImage_FlipY)*)nvGetProcAddress(getNvARLib(), "NvCVImage_FlipY"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(src, dst); +} + +NvCV_Status NvAR_API NvAR_Create(NvAR_FeatureID featureID, NvAR_FeatureHandle* handle) { + static const auto funcPtr = (decltype(NvAR_Create)*)nvGetProcAddress(getNvARLib(), "NvAR_Create"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(featureID, handle); +} + +NvCV_Status NvAR_API NvAR_Destroy(NvAR_FeatureHandle handle) { + static const auto funcPtr = (decltype(NvAR_Destroy)*)nvGetProcAddress(getNvARLib(), "NvAR_Destroy"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle); +} + +NvCV_Status NvAR_API NvAR_SetU32(NvAR_FeatureHandle handle, const char* name, unsigned int val) { + static const auto funcPtr = (decltype(NvAR_SetU32)*)nvGetProcAddress(getNvARLib(), "NvAR_SetU32"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_SetS32(NvAR_FeatureHandle handle, const char* name, int val) { + static const auto funcPtr = (decltype(NvAR_SetS32)*)nvGetProcAddress(getNvARLib(), "NvAR_SetS32"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_SetF32(NvAR_FeatureHandle handle, const char* name, float val) { + static const auto funcPtr = (decltype(NvAR_SetF32)*)nvGetProcAddress(getNvARLib(), "NvAR_SetF32"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_SetF64(NvAR_FeatureHandle handle, const char* name, double val) { + static const auto funcPtr = (decltype(NvAR_SetF64)*)nvGetProcAddress(getNvARLib(), "NvAR_SetF64"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_SetU64(NvAR_FeatureHandle handle, const char* name, unsigned long long val) { + static const auto funcPtr = (decltype(NvAR_SetU64)*)nvGetProcAddress(getNvARLib(), "NvAR_SetU64"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_SetObject(NvAR_FeatureHandle handle, const char* name, void* ptr, unsigned long typeSize) { + static const auto funcPtr = (decltype(NvAR_SetObject)*)nvGetProcAddress(getNvARLib(), "NvAR_SetObject"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, ptr, typeSize); +} + +NvCV_Status NvAR_API NvAR_SetString(NvAR_FeatureHandle handle, const char* name, const char* str) { + static const auto funcPtr = (decltype(NvAR_SetString)*)nvGetProcAddress(getNvARLib(), "NvAR_SetString"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, str); +} + +NvCV_Status NvAR_API NvAR_SetCudaStream(NvAR_FeatureHandle handle, const char* name, CUstream stream) { + static const auto funcPtr = (decltype(NvAR_SetCudaStream)*)nvGetProcAddress(getNvARLib(), "NvAR_SetCudaStream"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, stream); +} + +NvCV_Status NvAR_API NvAR_SetF32Array(NvAR_FeatureHandle handle, const char* name, float* val, int count) { + static const auto funcPtr = (decltype(NvAR_SetF32Array)*)nvGetProcAddress(getNvARLib(), "NvAR_SetF32Array"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val, count); +} + +NvCV_Status NvAR_API NvAR_GetU32(NvAR_FeatureHandle handle, const char* name, unsigned int* val) { + static const auto funcPtr = (decltype(NvAR_GetU32)*)nvGetProcAddress(getNvARLib(), "NvAR_GetU32"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_GetS32(NvAR_FeatureHandle handle, const char* name, int* val) { + static const auto funcPtr = (decltype(NvAR_GetS32)*)nvGetProcAddress(getNvARLib(), "NvAR_GetS32"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_GetF32(NvAR_FeatureHandle handle, const char* name, float* val) { + static const auto funcPtr = (decltype(NvAR_GetF32)*)nvGetProcAddress(getNvARLib(), "NvAR_GetF32"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_GetF64(NvAR_FeatureHandle handle, const char* name, double* val) { + static const auto funcPtr = (decltype(NvAR_GetF64)*)nvGetProcAddress(getNvARLib(), "NvAR_GetF64"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_GetU64(NvAR_FeatureHandle handle, const char* name, unsigned long long* val) { + static const auto funcPtr = (decltype(NvAR_GetU64)*)nvGetProcAddress(getNvARLib(), "NvAR_GetU64"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, val); +} + +NvCV_Status NvAR_API NvAR_GetObject(NvAR_FeatureHandle handle, const char* name, const void** ptr, unsigned long typeSize) { + static const auto funcPtr = (decltype(NvAR_GetObject)*)nvGetProcAddress(getNvARLib(), "NvAR_GetObject"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, ptr, typeSize); +} + +NvCV_Status NvAR_API NvAR_GetString(NvAR_FeatureHandle handle, const char* name, const char** str) { + static const auto funcPtr = (decltype(NvAR_GetString)*)nvGetProcAddress(getNvARLib(), "NvAR_GetString"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, str); +} + +NvCV_Status NvAR_API NvAR_GetCudaStream(NvAR_FeatureHandle handle, const char* name, const CUstream* stream) { + static const auto funcPtr = (decltype(NvAR_GetCudaStream)*)nvGetProcAddress(getNvARLib(), "NvAR_GetCudaStream"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, stream); +} + +NvCV_Status NvAR_API NvAR_GetF32Array(NvAR_FeatureHandle handle, const char* name, const float** vals, int* count) { + static const auto funcPtr = (decltype(NvAR_GetF32Array)*)nvGetProcAddress(getNvARLib(), "NvAR_GetCNvAR_GetF32ArrayudaStream"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle, name, vals, count); +} + +NvCV_Status NvAR_API NvAR_Run(NvAR_FeatureHandle handle) { + static const auto funcPtr = (decltype(NvAR_Run)*)nvGetProcAddress(getNvARLib(), "NvAR_Run"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle); +} + +NvCV_Status NvAR_API NvAR_Load(NvAR_FeatureHandle handle) { + static const auto funcPtr = (decltype(NvAR_Load)*)nvGetProcAddress(getNvARLib(), "NvAR_Load"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(handle); +} + +NvCV_Status NvAR_API NvAR_CudaStreamCreate(CUstream* stream) { + static const auto funcPtr = + (decltype(NvAR_CudaStreamCreate)*)nvGetProcAddress(getNvARLib(), "NvAR_CudaStreamCreate"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(stream); +} + +NvCV_Status NvAR_API NvAR_CudaStreamDestroy(CUstream stream) { + static const auto funcPtr = + (decltype(NvAR_CudaStreamDestroy)*)nvGetProcAddress(getNvARLib(), "NvAR_CudaStreamDestroy"); + + if (nullptr == funcPtr) return NVCV_ERR_LIBRARY; + return funcPtr(stream); +} + +#ifdef _WIN32 +__declspec(dllexport) const char* __cdecl +#else +const char* +#endif // _WIN32 or linux + NvCV_GetErrorStringFromCode(NvCV_Status code) { + static const auto funcPtr = + (decltype(NvCV_GetErrorStringFromCode)*)nvGetProcAddress(getNvARLib(), "NvCV_GetErrorStringFromCode"); + + if (nullptr == funcPtr) return "Cannot find nvARPose DLL or its dependencies"; + return funcPtr(code); +} diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt new file mode 100644 index 0000000..019f900 --- /dev/null +++ b/samples/CMakeLists.txt @@ -0,0 +1,7 @@ +# Sample apps + +add_library(utils_sample INTERFACE) +target_include_directories(utils_sample INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/utils) +target_link_libraries(utils_sample INTERFACE GLM) +add_subdirectory(external) +add_subdirectory(FaceTrack) diff --git a/samples/FaceTrack/CMakeLists.txt b/samples/FaceTrack/CMakeLists.txt new file mode 100644 index 0000000..49f8858 --- /dev/null +++ b/samples/FaceTrack/CMakeLists.txt @@ -0,0 +1,25 @@ +set(SOURCE_FILES FaceEngine.cpp FaceTrack.cpp ../utils/RenderingUtils.cpp ../../nvar/src/nvARProxy.cpp) +set(HEADER_FILES FaceEngine.h) + +# Set Visual Studio source filters +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Header Files" FILES ${HEADER_FILES}) + +add_executable(FaceTrack ${SOURCE_FILES} ${HEADER_FILES}) +target_include_directories(FaceTrack PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(FaceTrack PUBLIC + ${SDK_INCLUDES_PATH} +) +target_link_libraries(FaceTrack PUBLIC + opencv346 + utils_sample + GLM +) + +set(OPENCV_PATH_STR ${CMAKE_CURRENT_SOURCE_DIR}/../external/opencv/bin) +set(PATH_STR "PATH=%PATH%" ${OPENCV_PATH_STR}) +set_target_properties(FaceTrack PROPERTIES + FOLDER SampleApps + VS_DEBUGGER_ENVIRONMENT "${PATH_STR}" +) + diff --git a/samples/FaceTrack/FaceEngine.cpp b/samples/FaceTrack/FaceEngine.cpp new file mode 100644 index 0000000..ddab3d9 --- /dev/null +++ b/samples/FaceTrack/FaceEngine.cpp @@ -0,0 +1,621 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ +#include "FaceEngine.h" +#include "RenderingUtils.h" + +const char* NvCV_StatusStringFromCode(NvCV_Status code) { + struct TabEntry { + NvCV_Status code; + const char* str; + }; + static const TabEntry lut[] = { + {NVCV_SUCCESS, "no error"}, + {NVCV_ERR_GENERAL, "unspecified failure"}, + {NVCV_ERR_FEATURENOTFOUND, "Feature not found"}, + {NVCV_ERR_PARAMETER, "invalid parameter"}, + {NVCV_ERR_MEMORY, "provided buffer too small"}, + {NVCV_ERR_INITIALIZATION, "not initialized"}, + {NVCV_ERR_MISSINGINPUT, "missing input"}, + {NVCV_ERR_INITIALIZATION, "unable to initialize feature"}, + {NVCV_ERR_CUDA_MEMORY, "out of GPU memory"}, + {NVCV_ERR_SELECTOR, "unsupported parameter"}, + }; + for (const TabEntry* p = lut; p != &lut[sizeof(lut) / sizeof(lut[0])]; ++p) + if (p->code == code) return p->str; + return "UNKNOWN ERROR"; +} + +bool CheckResult(NvCV_Status nvErr, unsigned line) { + if (NVCV_SUCCESS == nvErr) return true; + std::cout << "ERROR: " << NvCV_StatusStringFromCode(nvErr) << ", line " << line << std::endl; + return false; +} + +FaceEngine::Err FaceEngine::fitFaceModel(cv::Mat& frame) { + FaceEngine::Err err = FaceEngine::Err::errNone; + NvCV_Status nvErr; + if (!frame.empty()) { + NvCVImage fxSrcChunkyCPU; + (void)NVWrapperForCVMat(&frame, &fxSrcChunkyCPU); + NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, NULL); + + if (NVCV_SUCCESS != cvErr) { + return errRun; + } + } + + nvErr = NvAR_Run(faceFitHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errRun); + + if (getAverageLandmarksConfidence() < LANDMARK_CONF_THRESH) return FaceEngine::Err::errRun; + +bail: + return err; +} + +NvAR_FaceMesh* FaceEngine::getFaceMesh() { return face_mesh; } + +NvAR_RenderingParams* FaceEngine::getRenderingParams() { return rendering_params; } + +FaceEngine::Err FaceEngine::createFeatures(const char* modelPath, unsigned int _batchSize) { + FaceEngine::Err err = FaceEngine::Err::errNone; + + NvCV_Status cuErr = NvAR_CudaStreamCreate(&stream); + if (appMode == faceDetection) + err = createFaceDetectionFeature(modelPath, stream); + else if (appMode == landmarkDetection) + err = createLandmarkDetectionFeature(modelPath, _batchSize, stream); + else if (appMode == faceMeshGeneration) + err = createFaceFittingFeature(modelPath, stream); + return err; +} + +FaceEngine::Err FaceEngine::createFaceDetectionFeature(const char* modelPath, CUstream stream) { + FaceEngine::Err err = FaceEngine::Err::errNone; + NvCV_Status nvErr; + + nvErr = NvAR_Create(NvAR_Feature_FaceDetection, &faceDetectHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetString(faceDetectHandle, NvAR_Parameter_Config(ModelDir), modelPath); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetCudaStream(faceDetectHandle, NvAR_Parameter_Config(CUDAStream), stream); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetU32(faceDetectHandle, NvAR_Parameter_Config(Temporal), bStabilizeFace); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_Load(faceDetectHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + +bail: + return err; +} + +FaceEngine::Err FaceEngine::createLandmarkDetectionFeature(const char* modelPath, unsigned int _batchSize, + CUstream stream) { + FaceEngine::Err err = FaceEngine::Err::errNone; + NvCV_Status nvErr; + + batchSize = _batchSize; + nvErr = NvAR_Create(NvAR_Feature_LandmarkDetection, &landmarkDetectHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetString(landmarkDetectHandle, NvAR_Parameter_Config(ModelDir), modelPath); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetCudaStream(landmarkDetectHandle, NvAR_Parameter_Config(CUDAStream), stream); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetU32(landmarkDetectHandle, NvAR_Parameter_Config(BatchSize), batchSize); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetU32(landmarkDetectHandle, NvAR_Parameter_Config(Temporal), bStabilizeFace); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_Load(landmarkDetectHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + +bail: + return err; +} + +FaceEngine::Err FaceEngine::createFaceFittingFeature(const char* modelPath, CUstream stream) { + FaceEngine::Err err = FaceEngine::Err::errNone; + NvCV_Status nvErr; + + nvErr = NvAR_Create(NvAR_Feature_Face3DReconstruction, &faceFitHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetString(faceFitHandle, NvAR_Parameter_Config(ModelDir), modelPath); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetCudaStream(faceFitHandle, NvAR_Parameter_Config(CUDAStream), stream); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_Load(faceFitHandle); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + +bail: + return err; +} + +FaceEngine::Err FaceEngine::initFeatureIOParams() { + FaceEngine::Err err = FaceEngine::Err::errNone; + + NvCV_Status cvErr = NvCVImage_Alloc(&inputImageBuffer, input_image_width, input_image_height, NVCV_BGR, NVCV_U8, + NVCV_CHUNKY, NVCV_GPU, 1); + + BAIL_IF_CVERR(cvErr, err, FaceEngine::Err::errInitialization); + + if (appMode == faceDetection) + err = initFaceDetectionIOParams(&inputImageBuffer); + else if (appMode == landmarkDetection) + err = initLandmarkDetectionIOParams(&inputImageBuffer); + else if (appMode == faceMeshGeneration) + err = initFaceFittingIOParams(&inputImageBuffer); + + return err; + +bail: + return err; +} + +FaceEngine::Err FaceEngine::initFaceDetectionIOParams(NvCVImage* _inputImageBuffer) { + NvCV_Status nvErr = NVCV_SUCCESS; + FaceEngine::Err err = FaceEngine::Err::errNone; + + nvErr = NvAR_SetObject(faceDetectHandle, NvAR_Parameter_Input(Image), &inputImageBuffer, sizeof(NvCVImage)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + output_bbox_data.assign(25, {0.f, 0.f, 0.f, 0.f}); + output_bbox_conf_data.assign(25, 0.f); + output_bboxes.boxes = output_bbox_data.data(); + output_bboxes.max_boxes = output_bbox_data.size(); + output_bboxes.num_boxes = 0; + nvErr = NvAR_SetObject(faceDetectHandle, NvAR_Parameter_Output(BoundingBoxes), &output_bboxes, sizeof(NvAR_BBoxes)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetF32Array(faceDetectHandle, NvAR_Parameter_Output(BoundingBoxesConfidence), + output_bbox_conf_data.data(), output_bboxes.max_boxes); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + +bail: + return err; +} + +FaceEngine::Err FaceEngine::initLandmarkDetectionIOParams(NvCVImage* _inputImageBuffer) { + NvCV_Status nvErr = NVCV_SUCCESS; + FaceEngine::Err err = FaceEngine::Err::errNone; + + nvErr = NvAR_SetObject(landmarkDetectHandle, NvAR_Parameter_Input(Image), &inputImageBuffer, sizeof(NvCVImage)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + unsigned int OUTPUT_SIZE_KPTS, OUTPUT_SIZE_KPTS_CONF; + nvErr = NvAR_GetU32(landmarkDetectHandle, NvAR_Parameter_Config(Landmarks_Size), &OUTPUT_SIZE_KPTS); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_GetU32(landmarkDetectHandle, NvAR_Parameter_Config(LandmarksConfidence_Size), &OUTPUT_SIZE_KPTS_CONF); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + facial_landmarks.assign(batchSize * OUTPUT_SIZE_KPTS, {0.f, 0.f}); + facial_pose.assign(batchSize, {0.f, 0.f, 0.f, 0.f}); + facial_landmarks_confidence.assign(batchSize * OUTPUT_SIZE_KPTS_CONF, 0.f); + + nvErr = NvAR_SetObject(landmarkDetectHandle, NvAR_Parameter_Output(Landmarks), facial_landmarks.data(), + sizeof(NvAR_Point2f)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = + NvAR_SetObject(landmarkDetectHandle, NvAR_Parameter_Output(Pose), facial_pose.data(), sizeof(NvAR_Quaternion)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetF32Array(landmarkDetectHandle, NvAR_Parameter_Output(LandmarksConfidence), + facial_landmarks_confidence.data(), batchSize * OUTPUT_SIZE_KPTS); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + uint output_bbox_size = batchSize; + if (!bStabilizeFace) output_bbox_size = 25; + output_bbox_data.assign(output_bbox_size, {0.f, 0.f, 0.f, 0.f}); + output_bboxes.boxes = output_bbox_data.data(); + output_bboxes.max_boxes = output_bbox_size; + output_bboxes.num_boxes = output_bbox_size; + nvErr = + NvAR_SetObject(landmarkDetectHandle, NvAR_Parameter_Output(BoundingBoxes), &output_bboxes, sizeof(NvAR_BBoxes)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + +bail: + return err; +} + +FaceEngine::Err FaceEngine::initFaceFittingIOParams(NvCVImage* inputImageBuffer) { + NvCV_Status nvErr = NVCV_SUCCESS; + FaceEngine::Err err = FaceEngine::Err::errNone; + + face_mesh = new NvAR_FaceMesh(); + face_mesh->vertices = new NvAR_Vector3f[FACE_MODEL_NUM_VERTICES]; + face_mesh->tvi = new NvAR_Vector3u16[FACE_MODEL_NUM_INDICES]; + rendering_params = new NvAR_RenderingParams(); + + nvErr = NvAR_SetObject(faceFitHandle, NvAR_Parameter_Input(Image), inputImageBuffer, sizeof(NvCVImage)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetS32(faceFitHandle, NvAR_Parameter_Input(Width), input_image_width); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetS32(faceFitHandle, NvAR_Parameter_Input(Height), input_image_height); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + unsigned int OUTPUT_SIZE_KPTS; + nvErr = NvAR_GetU32(faceFitHandle, NvAR_Parameter_Config(Landmarks_Size), &OUTPUT_SIZE_KPTS); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + facial_landmarks.assign(batchSize * OUTPUT_SIZE_KPTS, {0.f, 0.f}); + nvErr = + NvAR_SetObject(faceFitHandle, NvAR_Parameter_Output(Landmarks), facial_landmarks.data(), sizeof(NvAR_Point2f)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + facial_landmarks_confidence.assign(batchSize * OUTPUT_SIZE_KPTS, 0.f); + nvErr = NvAR_SetF32Array(faceFitHandle, NvAR_Parameter_Output(LandmarksConfidence), + facial_landmarks_confidence.data(), batchSize * OUTPUT_SIZE_KPTS); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + output_bbox_data.assign(batchSize, {0.f, 0.f, 0.f, 0.f}); + output_bboxes.boxes = output_bbox_data.data(); + output_bboxes.max_boxes = batchSize; + output_bboxes.num_boxes = batchSize; + nvErr = NvAR_SetObject(faceFitHandle, NvAR_Parameter_Output(BoundingBoxes), &output_bboxes, sizeof(NvAR_BBoxes)); + + nvErr = NvAR_SetObject(faceFitHandle, NvAR_Parameter_Output(FaceMesh), face_mesh, sizeof(NvAR_FaceMesh)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + + nvErr = NvAR_SetObject(faceFitHandle, NvAR_Parameter_Output(RenderingParams), rendering_params, + sizeof(NvAR_RenderingParams)); + BAIL_IF_CVERR(nvErr, err, FaceEngine::Err::errInitialization); + +bail: + return err; +} + +void FaceEngine::destroyFeatures() { + if (stream) { + NvAR_CudaStreamDestroy(stream); + stream = 0; + } + releaseFeatureIOParams(); + destroyFaceDetectionFeature(); + destroyLandmarkDetectionFeature(); + destroyFaceFittingFeature(); +} + +void FaceEngine::destroyFaceDetectionFeature() { + if (faceDetectHandle) { + (void)NvAR_Destroy(faceDetectHandle); + faceDetectHandle = nullptr; + } +} +void FaceEngine::destroyLandmarkDetectionFeature() { + if (landmarkDetectHandle) { + (void)NvAR_Destroy(landmarkDetectHandle); + landmarkDetectHandle = nullptr; + } +} +void FaceEngine::destroyFaceFittingFeature() { + if (faceFitHandle) { + (void)NvAR_Destroy(faceFitHandle); + faceFitHandle = nullptr; + } +} + +void FaceEngine::releaseFeatureIOParams() { + releaseFaceDetectionIOParams(); + releaseLandmarkDetectionIOParams(); + releaseFaceFittingIOParams(); +} + +void FaceEngine::releaseFaceDetectionIOParams() { + NvCVImage_Dealloc(&inputImageBuffer); + if (!output_bbox_data.empty()) output_bbox_data.clear(); + if (!output_bbox_conf_data.empty()) output_bbox_conf_data.clear(); +} + +void FaceEngine::releaseLandmarkDetectionIOParams() { + NvCVImage_Dealloc(&inputImageBuffer); + if (!output_bbox_data.empty()) output_bbox_data.clear(); + if (!facial_landmarks.empty()) facial_landmarks.clear(); + if (!facial_pose.empty()) facial_pose.clear(); + if (!facial_landmarks_confidence.empty()) facial_landmarks_confidence.clear(); +} + +void FaceEngine::releaseFaceFittingIOParams() { + if (!output_bbox_data.empty()) output_bbox_data.clear(); + if (!facial_landmarks.empty()) facial_landmarks.clear(); + if (!facial_landmarks_confidence.empty()) facial_landmarks_confidence.clear(); + NvCVImage_Dealloc(&inputImageBuffer); + if (rendering_params) { + delete rendering_params; + rendering_params = nullptr; + } + if (face_mesh) { + if (face_mesh->vertices) { + delete[] face_mesh->vertices; + face_mesh->vertices = nullptr; + } + if (face_mesh->tvi) { + delete[] face_mesh->tvi; + face_mesh->tvi = nullptr; + } + delete face_mesh; + face_mesh = nullptr; + } +} + +unsigned FaceEngine::findFaceBoxes() { + NvCV_Status nvErr = NvAR_Run(faceDetectHandle); + if (NVCV_SUCCESS != nvErr) return 0; + return (unsigned)output_bboxes.num_boxes; +} + +NvAR_Rect* FaceEngine::getLargestBox() { + NvAR_Rect *box, *bigBox, *lastBox; + float maxArea, area; + for (lastBox = (box = &output_bboxes.boxes[0]) + output_bboxes.num_boxes, bigBox = nullptr, maxArea = 0; + box != lastBox; ++box) { + if (maxArea < (area = box->width * box->height)) { + maxArea = area; + bigBox = box; + } + } + return bigBox; +} + +NvAR_BBoxes* FaceEngine::getBoundingBoxes() { return &output_bboxes; } + +void FaceEngine::enlargeAndSquarifyImageBox(float enlarge, NvAR_Rect& box, int FLAG_variant) { + NvAR_Vector2f size = {box.width * .5f, box.height * .5f}; + NvAR_Point2f center = {box.x + size.x, box.y + size.y}; + float t; + + size.x *= (1.f + enlarge); + size.y *= (1.f + enlarge); + + if (!(FLAG_variant & 1)) /* Default: enforce square bounding box */ + { + if (size.x < size.y) /* Make square */ + size.x = size.y; + else + size.y = size.x; + } + + if (center.x < size.x) /* Shift box into image left-right */ + center.x = size.x; + else if (center.x > (t = input_image_width - size.x)) + center.x = t; + + if (center.y < size.y) /* Shift box into image up-down */ + center.y = size.y; + else if (center.y > (t = input_image_height - size.y)) + center.y = t; + + // TODO: Above we assume that the box is smaller than the image. + + box.width = roundf(size.x * 2.f); /* Integral box */ + box.height = roundf(size.y * 2.f); + box.x = roundf(center.x - box.width * .5f); + box.y = roundf(center.y - box.height * .5f); +} + +/** + * Perturb a bounding box. + * @param[in,out] ran the random number generator. + * @param[in] minMag inset magnitude of noise. + * @param[in] maxMag outset magnitude of noise. + * @param[in] cleanBox the clean input box. + * @param[out] noisyBox the perturbed output box. + */ +// TOD0: Fix the 8 bounding boxes instead if random jiggling +void FaceEngine::jiggleBox(std::mt19937& ran, float minMag, float maxMag, const NvAR_Rect& cleanBox, + NvAR_Rect& jitteredBox) { + if (0.f == minMag && 0.f == maxMag) { + jitteredBox = cleanBox; + return; + } + + std::uniform_real_distribution uRand(minMag, maxMag); +#if 1 // jitter both sides + jitteredBox.x = cleanBox.x - uRand(ran); + jitteredBox.y = cleanBox.y - uRand(ran); + jitteredBox.width = cleanBox.width + cleanBox.x + uRand(ran) - jitteredBox.x; + jitteredBox.height = cleanBox.height + cleanBox.y + uRand(ran) - jitteredBox.y; +#elif 0 // jitter only the right side + noisyBox.x = cleanBox.x; + noisyBox.y = cleanBox.y; + noisyBox.width = cleanBox.width + cleanBox.x + uRand(ran) - noisyBox.x; + noisyBox.height = cleanBox.height + cleanBox.y + uRand(ran) - noisyBox.y; +#elif 1 // jitter only the location + noisyBox.x = cleanBox.x - uRand(ran); + noisyBox.y = cleanBox.y - uRand(ran); + noisyBox.width = cleanBox.width; + noisyBox.height = cleanBox.height; +#endif // None of these makes a significant difference +} + +/** Intersect a rectangle with an image. + * @param[in] srcRect the source rectangle. + * @param[in] src the source image. + * @param[out] clipRect the source rectangle clipped to the source image. + * @return true if the rectangle was clipped, + * false if the rectangle did not need to be clipped. + */ +static bool IntersectRectWithImage(const cv::Rect& srcRect, const cv::Mat& src, cv::Rect& clipRect) { + bool result = 0; // unclipped + cv::Point2i rect[2] = {{srcRect.x, srcRect.y}, {srcRect.x + srcRect.width, srcRect.y + srcRect.height}}; + if (rect[0].x < 0) { + result = 1; + rect[0].x = 0; + } // clipped + if (rect[0].y < 0) { + result = 1; + rect[0].y = 0; + } // clipped + if (rect[1].x > src.cols) { + result = 1; + rect[1].x = src.cols; + } // clipped + if (rect[1].y > src.rows) { + result = 1; + rect[1].y = src.rows; + } // clipped + clipRect.x = rect[0].x; + clipRect.y = rect[0].y; + clipRect.width = rect[1].x - rect[0].x; + clipRect.height = rect[1].y - rect[0].y; + return result; +} + +void FaceEngine::DrawPose(const cv::Mat& src, const NvAR_Quaternion* pose) { + float R[3][3]; + set_rotation_from_quaternion(pose, R[0]); + float radius = 100.f; + float x1 = radius * R[1][0]; + float y1 = radius * R[2][0]; + float x2 = radius * R[1][1]; + float y2 = radius * R[2][1]; + float x3 = radius * R[1][2] * -1.f; + float y3 = radius * R[2][2] * -1.f; + + // 30th point is the tip of the nose + const int nose_tip = 30; + int width = src.cols; + int height = src.rows; + NvAR_Point2f cxy = *(facial_landmarks.data() + nose_tip); + float cx1 = std::min(std::max(0, int(cxy.x + x1)), width - 1); + float cy1 = std::min(std::max(0, int(cxy.y + y1)), height - 1); + float cx2 = std::min(std::max(0, int(cxy.x + x2)), width - 1); + float cy2 = std::min(std::max(0, int(cxy.y + y2)), height - 1); + float cx3 = std::min(std::max(0, int(cxy.x + x3)), width - 1); + float cy3 = std::min(std::max(0, int(cxy.y + y3)), height - 1); + + cv::line(src, cv::Point((int)cxy.x, (int)cxy.y), cv::Point((int)cx1, (int)cy1), cv::Scalar(0, 0, 255), 2); + cv::line(src, cv::Point((int)cxy.x, (int)cxy.y), cv::Point((int)cx2, (int)cy2), cv::Scalar(0, 255, 0), 2); + cv::line(src, cv::Point((int)cxy.x, (int)cxy.y), cv::Point((int)cx3, (int)cy3), cv::Scalar(255, 0, 0), 2); +} + +NvCV_Status FaceEngine::findLandmarks() { + NvCV_Status nvErr; + + nvErr = NvAR_Run(landmarkDetectHandle); + if (NVCV_SUCCESS != nvErr) { + return nvErr; + } + + if (getAverageLandmarksConfidence() < LANDMARK_CONF_THRESH) { + return NVCV_ERR_GENERAL; + } else { + average_poses(getPose(), batchSize); + NvAR_Point2f *pt, *endPt; + int i = 0; + for (endPt = (pt = getLandmarks()) + NUM_LANDMARKS; pt != endPt; ++pt, i += 2) { + for (int j = 1; j < batchSize; j++) { + pt->x += pt[j * NUM_LANDMARKS].x; + pt->y += pt[j * NUM_LANDMARKS].y; + } + // average batch of inferences to generate final result landmark points + pt->x /= batchSize; + pt->y /= batchSize; + } + } + return NVCV_SUCCESS; +} + +NvAR_Point2f* FaceEngine::getLandmarks() { return facial_landmarks.data(); } + +float* FaceEngine::getLandmarksConfidence() { return facial_landmarks_confidence.data(); } + +float FaceEngine::getAverageLandmarksConfidence() { + float average_confidence = 0.0f; + float* keypoints_landmarks_confidence = getLandmarksConfidence(); + for (int i = 0; i < batchSize; i++) { + for (int j = 0; j < NUM_LANDMARKS; j++) { + average_confidence += keypoints_landmarks_confidence[i * NUM_LANDMARKS + j]; + } + } + average_confidence /= batchSize * NUM_LANDMARKS; + return average_confidence; +} + +NvAR_Quaternion* FaceEngine::getPose() { return facial_pose.data(); } + +unsigned FaceEngine::findLargestFaceBox(NvAR_Rect& faceBox, int variant) { + unsigned n; + NvAR_Rect* pFaceBox; + + n = findFaceBoxes(); + if (n >= 1) { + pFaceBox = getLargestBox(); + if (nullptr == pFaceBox) { + faceBox.x = faceBox.y = faceBox.width = faceBox.height = 0.0f; + } else { + faceBox = *pFaceBox; + } + enlargeAndSquarifyImageBox(.2f, faceBox, variant); + } + return n; +} + +unsigned FaceEngine::acquireFaceBox(cv::Mat& src, NvAR_Rect& faceBox, int variant) { + unsigned n = 0; + NvCVImage fxSrcChunkyCPU; + (void)NVWrapperForCVMat(&src, &fxSrcChunkyCPU); + NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, &tmpImage); + + if (NVCV_SUCCESS != cvErr) { + return n; + } + + n = findLargestFaceBox(faceBox, variant); + return n; +} + +unsigned FaceEngine::acquireFaceBoxAndLandmarks(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Rect& faceBox, int variant) { + unsigned n = 0; + NvCVImage fxSrcChunkyCPU; + (void)NVWrapperForCVMat(&src, &fxSrcChunkyCPU); + NvCV_Status cvErr = NvCVImage_Transfer(&fxSrcChunkyCPU, &inputImageBuffer, 1.0f, stream, &tmpImage); + + if (NVCV_SUCCESS != cvErr) { + return n; + } + + if (findLandmarks() != NVCV_SUCCESS) return 0; + faceBox = output_bboxes.boxes[0]; + n = 1; + memcpy(refMarks, getLandmarks(), sizeof(NvAR_Point2f) * FaceEngine::NUM_LANDMARKS); + + return n; +} + +void FaceEngine::setFaceStabilization(bool _bStabilizeFace) { bStabilizeFace = _bStabilizeFace; } + +void FaceEngine::setAppMode(FaceEngine::mode _mode) { appMode = _mode; } diff --git a/samples/FaceTrack/FaceEngine.h b/samples/FaceTrack/FaceEngine.h new file mode 100644 index 0000000..743e016 --- /dev/null +++ b/samples/FaceTrack/FaceEngine.h @@ -0,0 +1,175 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ +#ifndef __FACE_ENGINE__ +#define __FACE_ENGINE__ + +#include +#include "nvAR.h" +#include "nvCVOpenCV.h" +#include "opencv2/opencv.hpp" +#define FITFACE_PRIVATE + +class KalmanFilter1D { + private: + float Q_; // Covariance of the process noise + float xhat_; // Current prediction + float xhatminus_; // Previous prediction + float P_; // Estimated accuracy of xhat_ + float Pminus_; // Previous P_ + float K_; // Kalman gain + float R_; // Covariance of the observation noise + bool bFirstUse; + + public: + KalmanFilter1D() { reset(); } + + KalmanFilter1D(float Q, float R) { reset(Q, R); } + + void reset() { + R_ = 0.005f * 0.005f; + Q_ = 1e-5f; + xhat_ = 0.0f; + xhatminus_ = 0.0f; + P_ = 1; + bFirstUse = true; + Pminus_ = 0.0f; + K_ = 0.0f; + } + + void reset(float Q, float R) { + reset(); + Q_ = Q; + R_ = R; + } + + float update(float val) { + if (bFirstUse) { + xhat_ = val; + bFirstUse = false; + } + + xhatminus_ = xhat_; + Pminus_ = P_ + Q_; + K_ = Pminus_ / (Pminus_ + R_); + xhat_ = xhatminus_ + K_ * (val - xhatminus_); + P_ = (1 - K_) * Pminus_; + + return xhat_; + } +}; + +const char* NvCV_StatusStringFromCode(NvCV_Status code); + +bool CheckResult(NvCV_Status nvErr, unsigned line); + +#define BAIL_IF_CVERR(nvErr, err, code) \ + do { \ + if (!CheckResult(nvErr, __LINE__)) { \ + err = code; \ + goto bail; \ + } \ + } while (0) + +/******************************************************************************** + * FaceEngine + ********************************************************************************/ + +class FaceEngine { + public: + enum Err { errNone, errGeneral, errRun, errInitialization, errRead }; + int input_image_width, input_image_height, input_image_pitch; + static const int NUM_LANDMARKS = 68; // TODO: get this instead from the SDK. + static const int FACE_MODEL_NUM_VERTICES = 3448, FACE_MODEL_NUM_INDICES = 6736; + static const long LANDMARK_CONF_THRESH = 10.f; + + void setInputImageWidth(int width) { input_image_width = width; } + void setInputImageHeight(int height) { input_image_height = height; } + int getInputImageWidth() { return input_image_width; } + int getInputImageHeight() { return input_image_height; } + int getInputImagePitch() { return input_image_pitch = input_image_width * 3 * sizeof(unsigned char); } + + Err createFeatures(const char* modelPath, unsigned int _batchSize = 1); + Err createFaceDetectionFeature(const char* modelPath, CUstream stream); + Err createLandmarkDetectionFeature(const char* modelPath, unsigned int batchSize, CUstream stream); + Err createFaceFittingFeature(const char* modelPath, CUstream stream); + void destroyFeatures(); + void destroyFaceDetectionFeature(); + void destroyLandmarkDetectionFeature(); + void destroyFaceFittingFeature(); + Err initFeatureIOParams(); + Err initFaceDetectionIOParams(NvCVImage* _inputImageBuffer); + Err initLandmarkDetectionIOParams(NvCVImage* _inputImageBuffer); + Err initFaceFittingIOParams(NvCVImage* _inputImageBuffer); + void releaseFeatureIOParams(); + void releaseFaceDetectionIOParams(); + void releaseLandmarkDetectionIOParams(); + void releaseFaceFittingIOParams(); + + unsigned findFaceBoxes(); + NvAR_Rect* getLargestBox(); + NvCV_Status findLandmarks(); + NvAR_BBoxes* getBoundingBoxes(); + NvAR_Point2f* getLandmarks(); + NvAR_Quaternion* getPose(); + float* getLandmarksConfidence(); + float getAverageLandmarksConfidence(); + void enlargeAndSquarifyImageBox(float enlarge, NvAR_Rect& box, int FLAG_variant); + static void jiggleBox(std::mt19937& ran, float minMag, float maxMag, const NvAR_Rect& cleanBox, NvAR_Rect& noisyBox); + unsigned findLargestFaceBox(NvAR_Rect& faceBox, int variant = 0); + unsigned acquireFaceBox(cv::Mat& src, NvAR_Rect& faceBox, int variant = 0); + unsigned acquireFaceBoxAndLandmarks(cv::Mat& src, NvAR_Point2f* refMarks, NvAR_Rect& faceBox, int variant = 0); + Err fitFaceModel(cv::Mat& frame = cv::Mat()); + NvAR_FaceMesh* getFaceMesh(); + NvAR_RenderingParams* getRenderingParams(); + void setFaceStabilization(bool); + void DrawPose(const cv::Mat& src, const NvAR_Quaternion* pose); + + NvCVImage inputImageBuffer{}, tmpImage{}; + NvAR_FeatureHandle faceDetectHandle{}, landmarkDetectHandle{}, faceFitHandle{}; + std::vector facial_landmarks; + std::vector facial_landmarks_confidence; + std::vector facial_pose; + NvAR_FaceMesh* face_mesh{}; + NvAR_RenderingParams* rendering_params{}; + CUstream stream{}; + std::vector output_bbox_data; + std::vector output_bbox_conf_data; + NvAR_BBoxes output_bboxes{}; + int batchSize; + std::mt19937 ran; + + bool bStabilizeFace; + NvAR_Point2f prevLandmark[NUM_LANDMARKS] = {0}; + + FaceEngine() { + batchSize = 1; + bStabilizeFace = true; + appMode = faceMeshGeneration; + input_image_width = 640; + input_image_height = 480; + input_image_pitch = 3 * input_image_width * sizeof(unsigned char); // RGB + } + enum mode { faceDetection = 0, landmarkDetection, faceMeshGeneration } appMode; + void setAppMode(FaceEngine::mode _mAppMode); +}; +#endif diff --git a/samples/FaceTrack/FaceTrack.cpp b/samples/FaceTrack/FaceTrack.cpp new file mode 100644 index 0000000..dd3e1b3 --- /dev/null +++ b/samples/FaceTrack/FaceTrack.cpp @@ -0,0 +1,966 @@ +/*############################################################################### +# +# Copyright 2020 NVIDIA Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +###############################################################################*/ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "FaceEngine.h" +#include "nvAR.h" +#include "nvAR_defs.h" +#include "opencv2/opencv.hpp" +#include "RenderingUtils.h" + +#ifndef M_PI +#define M_PI 3.1415926535897932385 +#endif /* M_PI */ +#ifndef M_2PI +#define M_2PI 6.2831853071795864769 +#endif /* M_2PI */ +#ifndef M_PI_2 +#define M_PI_2 1.5707963267948966192 +#endif /* M_PI_2 */ +#define F_PI ((float)M_PI) +#define F_PI_2 ((float)M_PI_2) +#define F_2PI ((float)M_2PI) + +#ifdef _MSC_VER +#define strcasecmp _stricmp +#endif /* _MSC_VER */ + +#define BAIL(err, code) \ + do { \ + err = code; \ + goto bail; \ + } while (0) + +/******************************************************************************** + * Command-line arguments + ********************************************************************************/ + +bool FLAG_debug = false, FLAG_verbose = false, FLAG_temporal = true, FLAG_captureOutputs = false, + FLAG_offlineMode = false; +std::string FLAG_outDir, FLAG_inFile, FLAG_outFile, FLAG_modelPath, FLAG_landmarks, FLAG_proxyWireframe, + FLAG_captureCodec = "avc1", FLAG_camRes; +unsigned int FLAG_batch = 1; + +/******************************************************************************** + * Usage + ********************************************************************************/ + +static void Usage() { + printf( + "AboutFace [ ...]\n" + "where is\n" + " --verbose[=(true|false)] report interesting info\n" + " --debug[=(true|false)] report debugging info\n" + " --temporal[=(true|false)] temporally optimize face rect and landmarks\n" + " --capture_outputs[=(true|false)] enables video/image capture and writing face detection/landmark outputs\n" + " --offline_mode[=(true|false)] disables webcam, reads video from file and writes output video results\n" + " --cam_res=[WWWx]HHH specify resolution as height or width x height\n" + " --in_file= specify the input file\n" + " --codec= FOURCC code for the desired codec (default H264)\n" + " --in= specify the input file\n" + " --out_file= specify the output file\n" + " --out= specify the output file\n" + " --model_path= specify the directory containing the TRT models\n" + " --wireframe_mesh= specify the path to a proxy wireframe mesh\n" + " --batch= 1 - 8, used for batch inferencing in landmark detector " + " --benchmarks[=] run benchmarks\n"); +} + +static bool GetFlagArgVal(const char *flag, const char *arg, const char **val) { + if (*arg != '-') { + return false; + } + while (*++arg == '-') { + continue; + } + const char *s = strchr(arg, '='); + if (s == NULL) { + if (strcmp(flag, arg) != 0) { + return false; + } + *val = NULL; + return true; + } + unsigned n = (unsigned)(s - arg); + if ((strlen(flag) != n) || (strncmp(flag, arg, n) != 0)) { + return false; + } + *val = s + 1; + return true; +} + +static bool GetFlagArgVal(const char *flag, const char *arg, std::string *val) { + const char *valStr; + if (!GetFlagArgVal(flag, arg, &valStr)) return false; + val->assign(valStr ? valStr : ""); + return true; +} + +static bool GetFlagArgVal(const char *flag, const char *arg, bool *val) { + const char *valStr; + bool success = GetFlagArgVal(flag, arg, &valStr); + if (success) { + *val = (valStr == NULL || strcasecmp(valStr, "true") == 0 || strcasecmp(valStr, "on") == 0 || + strcasecmp(valStr, "yes") == 0 || strcasecmp(valStr, "1") == 0); + } + return success; +} + +bool GetFlagArgVal(const char *flag, const char *arg, long *val) { + const char *valStr; + bool success = GetFlagArgVal(flag, arg, &valStr); + if (success) { + *val = strtol(valStr, NULL, 10); + } + return success; +} + +static bool GetFlagArgVal(const char *flag, const char *arg, unsigned *val) { + long longVal; + bool success = GetFlagArgVal(flag, arg, &longVal); + if (success) { + *val = (unsigned)longVal; + } + return success; +} + +/******************************************************************************** + * StringToFourcc + ********************************************************************************/ + +static int StringToFourcc(const std::string &str) { + union chint { + int i; + char c[4]; + }; + chint x = {0}; + for (int n = (str.size() < 4) ? (int)str.size() : 4; n--;) x.c[n] = str[n]; + return x.i; +} + +/******************************************************************************** + * ParseMyArgs + ********************************************************************************/ + +static int ParseMyArgs(int argc, char **argv) { + int errs = 0; + for (--argc, ++argv; argc--; ++argv) { + bool help; + const char *arg = *argv; + if (arg[0] != '-') { + continue; + } else if ((arg[1] == '-') && + (GetFlagArgVal("verbose", arg, &FLAG_verbose) || GetFlagArgVal("debug", arg, &FLAG_debug) || + GetFlagArgVal("in", arg, &FLAG_inFile) || GetFlagArgVal("in_file", arg, &FLAG_inFile) || + GetFlagArgVal("out", arg, &FLAG_outFile) || GetFlagArgVal("out_file", arg, &FLAG_outFile) || + GetFlagArgVal("offline_mode", arg, &FLAG_offlineMode) || + GetFlagArgVal("capture_outputs", arg, &FLAG_captureOutputs) || + GetFlagArgVal("cam_res", arg, &FLAG_camRes) || GetFlagArgVal("codec", arg, &FLAG_captureCodec) || + GetFlagArgVal("landmarks", arg, &FLAG_landmarks) || GetFlagArgVal("model_path", arg, &FLAG_modelPath) || + GetFlagArgVal("wireframe_mesh", arg, &FLAG_proxyWireframe) || + GetFlagArgVal("temporal", arg, &FLAG_temporal))) { + continue; + } else if (GetFlagArgVal("help", arg, &help)) { + Usage(); + } else if (arg[1] != '-') { + for (++arg; *arg; ++arg) { + if (*arg == 'v') { + FLAG_verbose = true; + } else { + // printf("Unknown flag: \"-%c\"\n", *arg); + } + } + continue; + } else { + // printf("Unknown flag: \"%s\"\n", arg); + } + } + return errs; +} + +enum { + myErrNone = 0, + myErrShader = -1, + myErrProgram = -2, + myErrTexture = -3, +}; + +#if 1 +class MyTimer { + public: + void start() { t0 = std::chrono::high_resolution_clock::now(); } /**< Start the timer. */ + void pause() { dt = std::chrono::high_resolution_clock::now() - t0; } /**< Pause the timer. */ + void resume() { t0 = std::chrono::high_resolution_clock::now() - dt; } /**< Resume the timer. */ + void stop() { pause(); } /**< Stop the timer. */ + double elapsedTimeFloat() const { + return std::chrono::duration(dt).count(); + } /**< Report the elapsed time as a float. */ + private: + std::chrono::high_resolution_clock::time_point t0; + std::chrono::high_resolution_clock::duration dt; +}; +#endif + +std::string getCalendarTime() { + // Get the current time + std::chrono::system_clock::time_point currentTimePoint = std::chrono::system_clock::now(); + // Convert to time_t from time_point + std::time_t currentTime = std::chrono::system_clock::to_time_t(currentTimePoint); + // Convert to tm to get structure holding a calendar date and time broken down into its components. + std::tm brokenTime = *std::localtime(¤tTime); + std::ostringstream calendarTime; + calendarTime << std::put_time( + &brokenTime, + "%Y-%m-%d-%H-%M-%S"); // (YYYY-MM-DD-HH-mm-ss)----- + // Get the time since epoch 0(Thu Jan 1 00:00:00 1970) and the remainder after division is + // our milliseconds + std::chrono::milliseconds currentMilliseconds = + std::chrono::duration_cast(currentTimePoint.time_since_epoch()) % 1000; + // Append the milliseconds to the stream + calendarTime << "-" << std::setfill('0') << std::setw(3) << currentMilliseconds.count(); // milliseconds + return calendarTime.str(); +} + +class DoApp { + public: + enum Err { + errNone, + errUnimplemented, + errMissing, + errVideo, + errImageSize, + errNotFound, + errFaceModelInit, + errGLFWInit, + errGLInit, + errRendererInit, + errGLResource, + errGLGeneric, + errFaceFit, + errNoFace, + errSDK, + errCuda, + errCancel, + errInitFaceEngine + }; + + FaceEngine face_ar_engine; + DoApp(); + ~DoApp(); + + void stop(); + Err initFaceEngine(const char *modelPath = nullptr); + Err initCamera(const char *camRes = nullptr); + Err initOfflineMode(const char *inputFilename = nullptr, const char *outputFilename = nullptr); + Err acquireFrame(); + Err acquireFaceBox(); + Err acquireFaceBoxAndLandmarks(); + Err fitFaceModel(); + Err run(); + void showFaceFitErrorMessage(); + void drawFPS(cv::Mat &img); + void DrawBBoxes(const cv::Mat &src, NvAR_Rect *output_bbox); + void DrawLandmarkPoints(const cv::Mat &src, NvAR_Point2f *facial_landmarks); + void DrawFaceMesh(const cv::Mat &src, NvAR_FaceMesh *face_mesh); + void drawKalmanStatus(cv::Mat &img); + void drawVideoCaptureStatus(cv::Mat &img); + Err setProxyWireframe(const char *path); + void processKey(int key); + void writeVideoAndEstResults(const cv::Mat &frame, NvAR_BBoxes output_bboxes, NvAR_Point2f *landmarks = NULL); + void writeFrameAndEstResults(const cv::Mat &frame, NvAR_BBoxes output_bboxes, NvAR_Point2f *landmarks = NULL); + void writeEstResults(std::ofstream &outputFile, NvAR_BBoxes output_bboxes, NvAR_Point2f *landmarks = NULL); + void getFPS(); + static const char *errorStringFromCode(Err code); + + cv::VideoCapture cap{}; + cv::Mat frame; + int inputWidth, inputHeight; + cv::VideoWriter faceDetectOutputVideo{}, landMarkOutputVideo{}, faceFittingOutputVideo{}; + int frameIndex; + static const char windowTitle[]; + double frameTime; + // std::chrono::high_resolution_clock::time_point frameTimer; + MyTimer frameTimer; + cv::VideoWriter capturedVideo; + std::ofstream faceEngineVideoOutputFile; + + FaceEngine::Err nvErr; + float expr[6]; + bool drawVisualization, showFPS, captureVideo, captureFrame; + std::vector> proxyWireframe; + float scaleOffsetXY[4]; + std::vector wfMesh_tvi_data; +}; + +DoApp *gApp = nullptr; +const char DoApp::windowTitle[] = "WINDOW"; + +void DoApp::processKey(int key) { + switch (key) { + case '3': + face_ar_engine.destroyFeatures(); + face_ar_engine.setAppMode(FaceEngine::mode::faceMeshGeneration); + nvErr = face_ar_engine.createFeatures(FLAG_modelPath.c_str()); + // If there is an error, fallback to mode '2' i.e. landmark detection + if (nvErr == FaceEngine::Err::errNone) { + face_ar_engine.initFeatureIOParams(); + break; + } else if (nvErr == FaceEngine::Err::errInitialization) { + showFaceFitErrorMessage(); + } + case '2': + face_ar_engine.destroyFeatures(); + face_ar_engine.setAppMode(FaceEngine::mode::landmarkDetection); + face_ar_engine.createFeatures(FLAG_modelPath.c_str()); + face_ar_engine.initFeatureIOParams(); + break; + case '1': + face_ar_engine.destroyFeatures(); + face_ar_engine.setAppMode(FaceEngine::mode::faceDetection); + face_ar_engine.createFeatures(FLAG_modelPath.c_str()); + face_ar_engine.initFeatureIOParams(); + break; + case 'C': + case 'c': + captureVideo = !captureVideo; + break; + case 'S': + case 's': + captureFrame = !captureFrame; + break; + case 'W': + case 'w': + drawVisualization = !drawVisualization; + break; + case 'F': + case 'f': + showFPS = !showFPS; + break; + default: + break; + } +} + +DoApp::Err DoApp::initFaceEngine(const char *modelPath) { + Err err = errNone; + + if (!cap.isOpened()) return errVideo; + + nvErr = face_ar_engine.createFeatures(modelPath); + if (nvErr != FaceEngine::Err::errNone) { + if (nvErr == FaceEngine::Err::errInitialization && face_ar_engine.appMode == FaceEngine::mode::faceMeshGeneration) { + showFaceFitErrorMessage(); + face_ar_engine.destroyFeatures(); + face_ar_engine.setAppMode(FaceEngine::mode::landmarkDetection); + nvErr = face_ar_engine.createFeatures(modelPath); + } + if (nvErr != FaceEngine::Err::errNone) + err = errInitFaceEngine; + } + +#ifdef DEBUG + detector->setOutputLocation(outputDir); +#endif // DEBUG + +#define VISUALIZE +#ifdef VISUALIZE + if (!FLAG_offlineMode) cv::namedWindow(windowTitle, 1); +#endif // VISUALIZE + + frameIndex = 0; + + return err; +} + +void DoApp::stop() { + face_ar_engine.destroyFeatures(); + + if (FLAG_offlineMode) { + faceDetectOutputVideo.release(); + landMarkOutputVideo.release(); + faceFittingOutputVideo.release(); + } + cap.release(); +#ifdef VISUALIZE + cv::destroyAllWindows(); +#endif // VISUALIZE +} + +void DoApp::showFaceFitErrorMessage() { + cv::Mat errBox = cv::Mat::zeros(120, 640, CV_8UC3); + cv::putText(errBox, cv::String("Warning: Face Fitting needs face_model0.nvf in the path --model_path"), cv::Point(20, 20), + cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(255, 255, 255), 1); + cv::putText(errBox, cv::String("or in NVAR_MODEL_DIR environment variable."), cv::Point(20, 40), cv::FONT_HERSHEY_SIMPLEX, + 0.5, cv::Scalar(255, 255, 255), 1); + cv::putText(errBox, cv::String("See samples\\FaceTrack\\Readme.txt"), cv::Point(20, 60), cv::FONT_HERSHEY_SIMPLEX, + 0.5, cv::Scalar(255, 255, 255), 1); + cv::putText(errBox, cv::String("Press any key to continue with other features"), cv::Point(20, 80), cv::FONT_HERSHEY_SIMPLEX, 0.5, + cv::Scalar(255, 255, 255), 1); + cv::imshow(windowTitle, errBox); + cv::waitKey(0); +} + +void DoApp::DrawBBoxes(const cv::Mat &src, NvAR_Rect *output_bbox) { + cv::Mat frame; + if (FLAG_offlineMode) + frame = src.clone(); + else + frame = src; + + if (output_bbox) + cv::rectangle(frame, cv::Point((int)output_bbox->x, (int)output_bbox->y), + cv::Point((int)output_bbox->x + output_bbox->width, (int)output_bbox->y + output_bbox->height), + cv::Scalar(255, 0, 0), 2); + if (FLAG_offlineMode) faceDetectOutputVideo.write(frame); +} + +void DoApp::writeVideoAndEstResults(const cv::Mat &frame, NvAR_BBoxes output_bboxes, NvAR_Point2f *landmarks) { + if (captureVideo) { + if (!capturedVideo.isOpened()) { + const std::string currentCalendarTime = getCalendarTime(); + const std::string capturedOutputFileName = currentCalendarTime + ".mp4"; + getFPS(); + if (frameTime) { + float fps = 1. / frameTime; + capturedVideo.open(capturedOutputFileName, StringToFourcc(FLAG_captureCodec), fps, + cv::Size(frame.cols, frame.rows)); + if (!capturedVideo.isOpened()) { + std::cout << "Error: Could not open video: \"" << capturedOutputFileName << "\"\n"; + return; + } + if (FLAG_verbose) { + std::cout << "Capturing video started" << std::endl; + } + } else { // If frameTime is 0.f, returns without writing the frame to the Video + return; + } + const std::string outputsFileName = currentCalendarTime + ".txt"; + faceEngineVideoOutputFile.open(outputsFileName, std::ios_base::out); + if (!faceEngineVideoOutputFile.is_open()) { + std::cout << "Error: Could not open file: \"" << outputsFileName << "\"\n"; + return; + } + std::string landmarkDetectionMode = (landmarks == NULL) ? "Off" : "On"; + faceEngineVideoOutputFile << "// FaceDetectOn, LandmarkDetect" << landmarkDetectionMode << "\n "; + faceEngineVideoOutputFile + << "// kNumFaces, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumFaces}, kNumLMs, [lm_x, lm_y]{kNumLMs}\n"; + } + // Write each frame to the Video + capturedVideo << frame; + writeEstResults(faceEngineVideoOutputFile, output_bboxes, landmarks); + } else { + if (capturedVideo.isOpened()) { + if (FLAG_verbose) { + std::cout << "Capturing video ended" << std::endl; + } + capturedVideo.release(); + if (faceEngineVideoOutputFile.is_open()) faceEngineVideoOutputFile.close(); + } + } +} + +void DoApp::writeEstResults(std::ofstream &outputFile, NvAR_BBoxes output_bboxes, NvAR_Point2f *landmarks) { + /** + * Output File Format : + * FaceDetectOn, LandmarkDetectOn + * kNumFaces, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumFaces}, kNumLMs, [lm_x, lm_y]{kNumLMs} + */ + + int faceDetectOn = (face_ar_engine.appMode == FaceEngine::mode::faceDetection || + face_ar_engine.appMode == FaceEngine::mode::landmarkDetection || + face_ar_engine.appMode == FaceEngine::mode::faceMeshGeneration) + ? 1 + : 0; + int landmarkDetectOn = (face_ar_engine.appMode == FaceEngine::mode::landmarkDetection || + face_ar_engine.appMode == FaceEngine::mode::faceMeshGeneration) + ? 1 + : 0; + outputFile << faceDetectOn << "," << landmarkDetectOn << "\n"; + + if (faceDetectOn && output_bboxes.num_boxes) { + // Append number of faces detected in the current frame + outputFile << unsigned(output_bboxes.num_boxes) << ","; + // write outputbboxes to outputFile + for (size_t i = 0; i < output_bboxes.num_boxes; i++) { + int x1 = (int)output_bboxes.boxes[i].x, y1 = (int)output_bboxes.boxes[i].y, + width = (int)output_bboxes.boxes[i].width, height = (int)output_bboxes.boxes[i].height; + outputFile << x1 << "," << y1 << "," << width << "," << height << ","; + } + } else { + outputFile << "0,"; + } + if (landmarkDetectOn && output_bboxes.num_boxes) { + // Append number of landmarks + outputFile << FaceEngine::NUM_LANDMARKS << ","; + // Append NUM_LANDMARKS * 2 points + NvAR_Point2f *pt, *endPt; + for (endPt = (pt = (NvAR_Point2f *)landmarks) + FaceEngine::NUM_LANDMARKS; pt < endPt; ++pt) + outputFile << pt->x << "," << pt->y << ","; + } else { + outputFile << "0,"; + } + + outputFile << "\n"; +} + +void DoApp::writeFrameAndEstResults(const cv::Mat &frame, NvAR_BBoxes output_bboxes, NvAR_Point2f *landmarks) { + if (captureFrame) { + const std::string currentCalendarTime = getCalendarTime(); + const std::string capturedFrame = currentCalendarTime + ".png"; + cv::imwrite(capturedFrame, frame); + if (FLAG_verbose) { + std::cout << "Captured the frame" << std::endl; + } + // Write Face Engine Outputs + const std::string outputFilename = currentCalendarTime + ".txt"; + std::ofstream outputFile; + outputFile.open(outputFilename, std::ios_base::out); + if (!outputFile.is_open()) { + std::cout << "Error: Could not open file: \"" << outputFilename << "\"\n"; + return; + } + std::string landmarkDetectionMode = (landmarks == NULL) ? "Off" : "On"; + outputFile << "// FaceDetectOn, LandmarkDetect" << landmarkDetectionMode << "\n"; + outputFile << "// kNumFaces, (bbox_x, bbox_y, bbox_w, bbox_h){ kNumFaces}, kNumLMs, [lm_x, lm_y]{kNumLMs}\n"; + writeEstResults(outputFile, output_bboxes, landmarks); + if (outputFile.is_open()) outputFile.close(); + captureFrame = false; + } +} + +void DoApp::DrawLandmarkPoints(const cv::Mat &src, NvAR_Point2f *facial_landmarks) { + cv::Mat frame; + if (FLAG_offlineMode) + frame = src.clone(); + else + frame = src; + NvAR_Point2f *pt, *endPt; + for (endPt = (pt = (NvAR_Point2f *)facial_landmarks) + FaceEngine::NUM_LANDMARKS; pt < endPt; ++pt) + cv::circle(frame, cv::Point(lround(pt->x), lround(pt->y)), 1, cv::Scalar(0, 0, 255), -1); + NvAR_Quaternion *pose = face_ar_engine.getPose(); + if (pose) + face_ar_engine.DrawPose(frame, pose); + if (FLAG_offlineMode) landMarkOutputVideo.write(frame); +} + +void DoApp::DrawFaceMesh(const cv::Mat &src, NvAR_FaceMesh *face_mesh) { + cv::Mat render_frame; + if (FLAG_offlineMode) + render_frame = src.clone(); + else + render_frame = src; + + const cv::Scalar wfColor(0, 160, 0, 255); + //Low resolution mesh can be used for visualization only + if (proxyWireframe.size() > 0) { + NvAR_FaceMesh wfMesh{nullptr, 0, nullptr, 0}; + wfMesh.num_vertices = face_mesh->num_vertices; + wfMesh.vertices = face_mesh->vertices; + wfMesh.num_tri_idx = proxyWireframe.size(); + wfMesh_tvi_data.resize(wfMesh.num_tri_idx); + wfMesh.tvi = wfMesh_tvi_data.data(); + + for (int i = 0; i < proxyWireframe.size(); i++) { + auto proxyWireframe_idx = proxyWireframe[i]; + wfMesh.tvi[i].vec[0] = proxyWireframe_idx[0]; + wfMesh.tvi[i].vec[1] = proxyWireframe_idx[1]; + wfMesh.tvi[i].vec[2] = proxyWireframe_idx[2]; + } + draw_wireframe(render_frame, wfMesh, *face_ar_engine.getRenderingParams(), wfColor); + } else { + draw_wireframe(render_frame, *face_mesh, * face_ar_engine.getRenderingParams(), wfColor); + } + + if (FLAG_offlineMode) faceFittingOutputVideo.write(render_frame); +} + +DoApp::Err DoApp::acquireFrame() { + Err err = errNone; + + // If the machine goes to sleep with the app running and then wakes up, the camera object is not destroyed but the + // frames we try to read are empty. So we try to re-initialize the camera with the same resolution settings. If the + // resolution has changed, you will need to destroy and create the features again with the new camera resolution (not + // done here) as well as reallocate memory accordingly with FaceEngine::initFeatureIOParams() + cap >> frame; // get a new frame from camera + if (frame.empty()) { + // if in Offline mode, this means end of video,so we return + if (FLAG_offlineMode) return errVideo; + // try Init one more time if reading frames from camera + initCamera(FLAG_camRes.c_str()); + cap >> frame; + if (frame.empty()) return errVideo; + } + + return err; +} + +DoApp::Err DoApp::acquireFaceBox() { + Err err = errNone; + NvAR_Rect output_bbox; + + // get landmarks in original image resolution coordinate space + unsigned n = face_ar_engine.acquireFaceBox(frame, output_bbox, 0); + + if (n && FLAG_verbose) { + printf("FaceBox: [\n"); + printf("%7.1f%7.1f%7.1f%7.1f\n", output_bbox.x, output_bbox.y, output_bbox.x + output_bbox.width, + output_bbox.y + output_bbox.height); + printf("]\n"); + } + if (FLAG_captureOutputs) { + writeFrameAndEstResults(frame, face_ar_engine.output_bboxes); + writeVideoAndEstResults(frame, face_ar_engine.output_bboxes); + } + if (0 == n) return errNoFace; + +#ifdef VISUALIZE + + if (drawVisualization) { + DrawBBoxes(frame, &output_bbox); + } +#endif // VISUALIZE + frameIndex++; + + return err; +} + +DoApp::Err DoApp::acquireFaceBoxAndLandmarks() { + Err err = errNone; + + NvAR_Rect output_bbox; + NvAR_Point2f facial_landmarks[FaceEngine::NUM_LANDMARKS]; + + // get landmarks in original image resolution coordinate space + unsigned n = face_ar_engine.acquireFaceBoxAndLandmarks(frame, facial_landmarks, output_bbox, 0); + + if (n && FLAG_verbose && face_ar_engine.appMode != FaceEngine::mode::faceDetection) { + printf("Landmarks: [\n"); + NvAR_Point2f *pt, *endPt; + for (endPt = (pt = (NvAR_Point2f *)facial_landmarks) + FaceEngine::NUM_LANDMARKS; pt < endPt; ++pt) + printf("%7.1f%7.1f\n", pt->x, pt->y); + printf("]\n"); + } + if (FLAG_captureOutputs) { + writeFrameAndEstResults(frame, face_ar_engine.output_bboxes, facial_landmarks); + writeVideoAndEstResults(frame, face_ar_engine.output_bboxes, facial_landmarks); + } + if (0 == n) return errNoFace; + +#ifdef VISUALIZE + + if (drawVisualization) { + DrawLandmarkPoints(frame, facial_landmarks); + if (FLAG_offlineMode) { + DrawBBoxes(frame, &output_bbox); + } + } +#endif // VISUALIZE + frameIndex++; + + return err; +} + +DoApp::Err DoApp::initCamera(const char *camRes) { + if (cap.open(0)) { + if (camRes) { + int n; + n = sscanf(camRes, "%d%*[xX]%d", &inputWidth, &inputHeight); + switch (n) { + case 2: + break; // We have read both width and height + case 1: + inputHeight = inputWidth; + inputWidth = (int)(inputHeight * (4. / 3.) + .5); + break; + default: + inputHeight = 0; + inputWidth = 0; + break; + } + if (inputWidth) cap.set(CV_CAP_PROP_FRAME_WIDTH, inputWidth); + if (inputHeight) cap.set(CV_CAP_PROP_FRAME_HEIGHT, inputHeight); + + inputWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); + inputHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); + face_ar_engine.setInputImageWidth(inputWidth); + face_ar_engine.setInputImageHeight(inputHeight); + } + } else + return errVideo; + return errNone; +} + +DoApp::Err DoApp::initOfflineMode(const char *inputFilename, const char *outputFilename) { + if (cap.open(inputFilename)) { + inputWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); + inputHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); + face_ar_engine.setInputImageWidth(inputWidth); + face_ar_engine.setInputImageHeight(inputHeight); + } else { + return Err::errNotFound; + } + + std::string fdOutputVideoName, fldOutputVideoName, ffOutputVideoName; + std::string outputFilePrefix; + if (outputFilename && strlen(outputFilename) != 0) { + outputFilePrefix = outputFilename; + } else { + size_t lastindex = std::string(inputFilename).find_last_of("."); + outputFilePrefix = std::string(inputFilename).substr(0, lastindex); + } + fdOutputVideoName = outputFilePrefix + "_bbox.mp4"; + fldOutputVideoName = outputFilePrefix + "_landmarks.mp4"; + ffOutputVideoName = outputFilePrefix + "_faceModel.mp4"; + + if (!faceDetectOutputVideo.open(fdOutputVideoName, StringToFourcc(FLAG_captureCodec), cap.get(CV_CAP_PROP_FPS), + cv::Size(inputWidth, inputHeight))) + return Err::errSDK; + if (!landMarkOutputVideo.open(fldOutputVideoName, StringToFourcc(FLAG_captureCodec), cap.get(CV_CAP_PROP_FPS), + cv::Size(inputWidth, inputHeight))) + return Err::errSDK; + if (!faceFittingOutputVideo.open(ffOutputVideoName, StringToFourcc(FLAG_captureCodec), cap.get(CV_CAP_PROP_FPS), + cv::Size(inputWidth, inputHeight))) + return Err::errSDK; + + return Err::errNone; +} + +DoApp::Err DoApp::fitFaceModel() { + DoApp::Err doErr = errNone; + nvErr = face_ar_engine.fitFaceModel(frame); + + if (FaceEngine::Err::errNone == nvErr) { +#ifdef VISUALIZE + frameTimer.pause(); + if (drawVisualization) { + DrawFaceMesh(frame, face_ar_engine.getFaceMesh()); + if (FLAG_offlineMode) { + DrawLandmarkPoints(frame, face_ar_engine.getLandmarks()); + DrawBBoxes(frame, face_ar_engine.getLargestBox()); + } + } + frameTimer.resume(); +#endif // VISUALIZE + } else { + doErr = errFaceFit; + } + + return doErr; +} + +DoApp::DoApp() { + // Make sure things are initialized properly + gApp = this; + drawVisualization = true; + showFPS = false; + captureVideo = false; + captureFrame = false; + frameTime = 0; + frameIndex = 0; + nvErr = FaceEngine::errNone; + scaleOffsetXY[0] = scaleOffsetXY[2] = 1.f; + scaleOffsetXY[1] = scaleOffsetXY[3] = 0.f; +} + +DoApp::~DoApp() {} + +void DoApp::getFPS() { + const float timeConstant = 16.f; + frameTimer.stop(); + float t = (float)frameTimer.elapsedTimeFloat(); + if (t < 100.f) { + if (frameTime) + frameTime += (t - frameTime) * (1.f / timeConstant); // 1 pole IIR filter + else + frameTime = t; + } else { // Ludicrous time interval; reset + frameTime = 0.f; // WAKE UP + } + frameTimer.start(); +} + +void DoApp::drawFPS(cv::Mat &img) { + getFPS(); + if (frameTime && showFPS) { + char buf[32]; + snprintf(buf, sizeof(buf), "%.1f", 1. / frameTime); + cv::putText(img, buf, cv::Point(img.cols - 80, img.rows - 10), cv::FONT_HERSHEY_SIMPLEX, 1, + cv::Scalar(255, 255, 255), 1); + } +} + +void DoApp::drawKalmanStatus(cv::Mat &img) { + char buf[32]; + snprintf(buf, sizeof(buf), "Kalman %s", (face_ar_engine.bStabilizeFace ? "on" : "off")); + cv::putText(img, buf, cv::Point(10, img.rows - 40), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 1); +} + +void DoApp::drawVideoCaptureStatus(cv::Mat &img) { + char buf[32]; + snprintf(buf, sizeof(buf), "Video Capturing %s", (captureVideo ? "on" : "off")); + cv::putText(img, buf, cv::Point(10, img.rows - 70), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 1); +} + +DoApp::Err DoApp::run() { + DoApp::Err doErr = errNone; + + face_ar_engine.initFeatureIOParams(); + + while (1) { + doErr = acquireFrame(); + if (doErr != DoApp::errNone) return doErr; + if (face_ar_engine.appMode == FaceEngine::mode::faceDetection) { + doErr = acquireFaceBox(); + } else if (face_ar_engine.appMode == FaceEngine::mode::landmarkDetection) { + doErr = acquireFaceBoxAndLandmarks(); + } else if (face_ar_engine.appMode == FaceEngine::mode::faceMeshGeneration) { + doErr = fitFaceModel(); + } + if ((DoApp::errNoFace == doErr || DoApp::errFaceFit == doErr) && FLAG_offlineMode) { + faceDetectOutputVideo.write(frame); + landMarkOutputVideo.write(frame); + faceFittingOutputVideo.write(frame); + } + if (DoApp::errCancel == doErr || DoApp::errVideo == doErr) return doErr; + if (!frame.empty() && !FLAG_offlineMode) { + if (drawVisualization) { + drawFPS(frame); + drawKalmanStatus(frame); + if (FLAG_captureOutputs && captureVideo) drawVideoCaptureStatus(frame); + } + cv::imshow(windowTitle, frame); + } + + if (!FLAG_offlineMode) { + int n = cv::waitKey(1); + if (n >= 0) { + static const int ESC_KEY = 27; + if (n == ESC_KEY) break; + processKey(n); + } + } + } + return doErr; +} + +DoApp::Err DoApp::setProxyWireframe(const char *path) { + std::ifstream file(path); + if (!file.is_open()) return errFaceModelInit; + std::string lineBuf; + while (getline(file, lineBuf)) { + std::array tri; + if (3 == sscanf(lineBuf.c_str(), "f %hd %hd %hd", &tri[0], &tri[1], &tri[2])) { + --tri[0]; /* Convert from 1-based to 0-based indices */ + --tri[1]; + --tri[2]; + proxyWireframe.push_back(tri); + } + } + file.close(); + return errNone; +} + +const char *DoApp::errorStringFromCode(DoApp::Err code) { + struct LUTEntry { + Err code; + const char *str; + }; + static const LUTEntry lut[] = { + {errNone, "no error"}, + {errUnimplemented, "the feature is unimplemented"}, + {errMissing, "missing input parameter"}, + {errVideo, "no video source has been found"}, + {errImageSize, "the image size cannot be accommodated"}, + {errNotFound, "the item cannot be found"}, + {errFaceModelInit, "face model initialization failed"}, + {errGLFWInit, "GLFW initialization failed"}, + {errGLInit, "OpenGL initialization failed"}, + {errRendererInit, "renderer initialization failed"}, + {errGLResource, "an OpenGL resource could not be found"}, + {errGLGeneric, "an otherwise unspecified OpenGL error has occurred"}, + {errFaceFit, "an error has occurred while face fitting"}, + {errNoFace, "no face has been found"}, + {errSDK, "an SDK error has occurred"}, + {errCuda, "a CUDA error has occurred"}, + {errCancel, "the user cancelled"}, + {errInitFaceEngine, "an error occurred while initializing the Face Engine"}, + }; + for (const LUTEntry *p = lut; p < &lut[sizeof(lut) / sizeof(lut[0])]; ++p) + if (p->code == code) return p->str; + static char msg[18]; + snprintf(msg, sizeof(msg), "error #%d", code); + return msg; +} + +/******************************************************************************** + * main + ********************************************************************************/ + +int main(int argc, char **argv) { + DoApp app; + DoApp::Err doErr; + NvCV_Status nvErr; + + // Parse the arguments + if (0 != ParseMyArgs(argc, argv)) return -100; + + if (FLAG_verbose) printf("Enable temporal optimizations in detecting face and landmarks = %d\n", FLAG_temporal); + app.face_ar_engine.setFaceStabilization(FLAG_temporal); + + doErr = DoApp::errFaceModelInit; + if (FLAG_modelPath.empty()) { + printf("WARNING: Model path not specified. Please set --model_path=/path/to/trt/and/face/models\n" + "SDK will attempt to load the models from NVAR_MODEL_DIR environment variable"); + } + + if (FLAG_offlineMode) { + if (FLAG_inFile.empty()) { + doErr = DoApp::errMissing; + printf("ERROR: %s, please specify input file using --in_file or --in \n", app.errorStringFromCode(doErr)); + goto bail; + } + app.initOfflineMode(FLAG_inFile.c_str(), FLAG_outFile.c_str()); + } else { + app.initCamera(FLAG_camRes.c_str()); + } + doErr = app.initFaceEngine(FLAG_modelPath.c_str()); + if (DoApp::errNone != doErr) { + printf("ERROR: %s\n", app.errorStringFromCode(doErr)); + goto bail; + } + + if (!FLAG_proxyWireframe.empty()) app.setProxyWireframe(FLAG_proxyWireframe.c_str()); + + doErr = app.run(); + +bail: + app.stop(); + return (int)doErr; +} diff --git a/samples/FaceTrack/FaceTrack.exe b/samples/FaceTrack/FaceTrack.exe new file mode 100644 index 0000000000000000000000000000000000000000..0d9316e108109a38297db95ddc0c47e847cbc0eb GIT binary patch literal 120832 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đ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/sfm_shape_3448.bin +--blend_shape=/expression_blendshapes_3448.bin +--topology=/sfm_3448_edge_topology.json +--contours=/sfm_model_contours.json +--ibug=/ibug_to_sfm.txt +--out=/face_model0.nvf + +path +The full or relative path to the folder that contains the Surrey Face Model files that you downloaded. +Either the forward slash (/) or back slash (\) can be used as a separator between path elements. + +output-path +The full or relative path to the folder where you want the output .nvf format file to be written. +Either the forward slash (/) or back slash (\) can be used as a separator between path elements. + +The ConvertSurreyFaceModel.exe file is distributed in the https://github.com/nvidia/BROADCAST-AR-SDK repo. + +3) The sample application provided with NVIDIA AR SDK requires that the model file be named face_model0.nvf. +Place the face_model0.nvf file in the /bin/models folder. diff --git a/samples/FaceTrack/run.bat b/samples/FaceTrack/run.bat new file mode 100644 index 0000000..bc2f255 --- /dev/null +++ b/samples/FaceTrack/run.bat @@ -0,0 +1,3 @@ +SETLOCAL +SET PATH=%PATH%;..\..\samples\external\opencv\bin; +FaceTrack.exe diff --git a/samples/external/CMakeLists.txt b/samples/external/CMakeLists.txt new file mode 100644 index 0000000..f036c91 --- /dev/null +++ b/samples/external/CMakeLists.txt @@ -0,0 +1,44 @@ +####################### +# Interface to OpenCV # +####################### + +if(MSVC) + if(CMAKE_CL_64) + set(OpenCV_ARCH x64) + elseif((CMAKE_GENERATOR MATCHES "ARM") OR ("${arch_hint}" STREQUAL "ARM") OR (CMAKE_VS_EFFECTIVE_PLATFORMS MATCHES "ARM|arm")) + # see Modules/CmakeGenericSystem.cmake + set(OpenCV_ARCH ARM) + else() + set(OpenCV_ARCH x86) + endif() + if(MSVC_VERSION GREATER_EQUAL 1920) + #set(OpenCV_RUNTIME vc16) + message("No Visual Studio 2019 OpenCV library available; trying 2017 library instead") + set(OpenCV_RUNTIME vc15) + elseif(MSVC_VERSION GREATER_EQUAL 1910) + set(OpenCV_RUNTIME vc15) + elseif(MSVC_VERSION GREATER_EQUAL 1900) + set(OpenCV_RUNTIME vc14) + else() + message("MSVC_VERSION ${MSVC_VERSION} is not accommodated") + endif() +endif() + +add_library(opencv346 INTERFACE) +set(OpenCV_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/opencv/include ${CMAKE_CURRENT_SOURCE_DIR}/opencv/include/opencv2) +target_include_directories(opencv346 INTERFACE ${OpenCV_INCLUDE_DIR}) +target_link_libraries(opencv346 INTERFACE optimized ${CMAKE_CURRENT_SOURCE_DIR}/opencv/lib/opencv_world346.lib) + +#################### +# Interface to GLM # +#################### +find_path(GLM_INCLUDE_DIR glm/glm.hpp + PATH_SUFFIXES include + PATHS + glm + /usr/local/include/glm +) +add_library(GLM INTERFACE) +target_include_directories(GLM INTERFACE ${GLM_INCLUDE_DIR}) +#message( "GLM_INCLUDE_DIR is ${GLM_INCLUDE_DIR}" ) + diff --git a/samples/external/ThirdPartyLicenses.txt b/samples/external/ThirdPartyLicenses.txt new file mode 100644 index 0000000..171aa57 --- /dev/null +++ b/samples/external/ThirdPartyLicenses.txt @@ -0,0 +1,76 @@ +====OpenCV 3.4.6==== +By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, copy or use the software. + +License Agreement +For Open Source Computer Vision Library +(3-clause BSD License) + +Copyright (C) 2000-2019, Intel Corporation, all rights reserved. +Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. +Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved. +Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. +Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved. +Copyright (C) 2015-2016, Itseez Inc., all rights reserved. +Third party copyrights are property of their respective owners. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the names of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. +This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall copyright holders or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. + +====GLM 0.9.8==== +================================================================================ +OpenGL Mathematics (GLM) +-------------------------------------------------------------------------------- +GLM is licensed under The Happy Bunny License and MIT License + +================================================================================ +The Happy Bunny License (Modified MIT License) +-------------------------------------------------------------------------------- +Copyright (c) 2005 - 2014 G-Truc Creation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +Restrictions: + By making use of the Software for military purposes, you choose to make a + Bunny unhappy. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ +The MIT License +-------------------------------------------------------------------------------- +Copyright (c) 2005 - 2014 G-Truc Creation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/samples/external/glm/include/glm/CMakeLists.txt b/samples/external/glm/include/glm/CMakeLists.txt new file mode 100644 index 0000000..d60a887 --- /dev/null +++ b/samples/external/glm/include/glm/CMakeLists.txt @@ -0,0 +1,67 @@ +file(GLOB ROOT_SOURCE *.cpp) +file(GLOB ROOT_INLINE *.inl) +file(GLOB ROOT_HEADER *.hpp) +file(GLOB ROOT_TEXT ../*.txt) +file(GLOB ROOT_MD ../*.md) +file(GLOB ROOT_NAT ../util/glm.natvis) + +file(GLOB_RECURSE CORE_SOURCE ./detail/*.cpp) +file(GLOB_RECURSE CORE_INLINE ./detail/*.inl) +file(GLOB_RECURSE CORE_HEADER ./detail/*.hpp) + +file(GLOB_RECURSE GTC_SOURCE ./gtc/*.cpp) +file(GLOB_RECURSE GTC_INLINE ./gtc/*.inl) +file(GLOB_RECURSE GTC_HEADER ./gtc/*.hpp) + +file(GLOB_RECURSE GTX_SOURCE ./gtx/*.cpp) +file(GLOB_RECURSE GTX_INLINE ./gtx/*.inl) +file(GLOB_RECURSE GTX_HEADER ./gtx/*.hpp) + +file(GLOB_RECURSE SIMD_SOURCE ./simd/*.cpp) +file(GLOB_RECURSE SIMD_INLINE ./simd/*.inl) +file(GLOB_RECURSE SIMD_HEADER ./simd/*.h) + +source_group("Text Files" FILES ${ROOT_TEXT} ${ROOT_MD}) +source_group("Core Files" FILES ${CORE_SOURCE}) +source_group("Core Files" FILES ${CORE_INLINE}) +source_group("Core Files" FILES ${CORE_HEADER}) +source_group("GTC Files" FILES ${GTC_SOURCE}) +source_group("GTC Files" FILES ${GTC_INLINE}) +source_group("GTC Files" FILES ${GTC_HEADER}) +source_group("GTX Files" FILES ${GTX_SOURCE}) +source_group("GTX Files" FILES ${GTX_INLINE}) +source_group("GTX Files" FILES ${GTX_HEADER}) +source_group("SIMD Files" FILES ${SIMD_SOURCE}) +source_group("SIMD Files" FILES ${SIMD_INLINE}) +source_group("SIMD Files" FILES ${SIMD_HEADER}) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) + +if(GLM_STATIC_LIBRARY_ENABLE OR GLM_DYNAMIC_LIBRARY_ENABLE) + if(GLM_STATIC_LIBRARY_ENABLE) + add_library(glm_static STATIC ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT} + ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER} + ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER} + ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} + ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} + ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) + endif(GLM_STATIC_LIBRARY_ENABLE) + + if(GLM_DYNAMIC_LIBRARY_ENABLE) + add_library(glm_shared SHARED ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT} + ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER} + ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER} + ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} + ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} + ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) + endif(GLM_DYNAMIC_LIBRARY_ENABLE) + +else(GLM_STATIC_LIBRARY_ENABLE OR GLM_DYNAMIC_LIBRARY_ENABLE) + add_executable(glm_dummy ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT} + ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER} + ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER} + ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} + ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} + ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) + +endif(GLM_STATIC_LIBRARY_ENABLE OR GLM_DYNAMIC_LIBRARY_ENABLE) diff --git a/samples/external/glm/include/glm/common.hpp b/samples/external/glm/include/glm/common.hpp new file mode 100644 index 0000000..f57e800 --- /dev/null +++ b/samples/external/glm/include/glm/common.hpp @@ -0,0 +1,6 @@ +/// @ref core +/// @file glm/common.hpp + +#pragma once + +#include "detail/func_common.hpp" diff --git a/samples/external/glm/include/glm/detail/_features.hpp b/samples/external/glm/include/glm/detail/_features.hpp new file mode 100644 index 0000000..97dd633 --- /dev/null +++ b/samples/external/glm/include/glm/detail/_features.hpp @@ -0,0 +1,399 @@ +/// @ref core +/// @file glm/detail/_features.hpp + +#pragma once + +// #define GLM_CXX98_EXCEPTIONS +// #define GLM_CXX98_RTTI + +// #define GLM_CXX11_RVALUE_REFERENCES +// Rvalue references - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html + +// GLM_CXX11_TRAILING_RETURN +// Rvalue references for *this - GCC not supported +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm + +// GLM_CXX11_NONSTATIC_MEMBER_INIT +// Initialization of class objects by rvalues - GCC any +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html + +// GLM_CXX11_NONSTATIC_MEMBER_INIT +// Non-static data member initializers - GCC 4.7 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm + +// #define GLM_CXX11_VARIADIC_TEMPLATE +// Variadic templates - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf + +// +// Extending variadic template template parameters - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf + +// #define GLM_CXX11_GENERALIZED_INITIALIZERS +// Initializer lists - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm + +// #define GLM_CXX11_STATIC_ASSERT +// Static assertions - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html + +// #define GLM_CXX11_AUTO_TYPE +// auto-typed variables - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf + +// #define GLM_CXX11_AUTO_TYPE +// Multi-declarator auto - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf + +// #define GLM_CXX11_AUTO_TYPE +// Removal of auto as a storage-class specifier - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm + +// #define GLM_CXX11_AUTO_TYPE +// New function declarator syntax - GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm + +// #define GLM_CXX11_LAMBDAS +// New wording for C++0x lambdas - GCC 4.5 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf + +// #define GLM_CXX11_DECLTYPE +// Declared type of an expression - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf + +// +// Right angle brackets - GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html + +// +// Default template arguments for function templates DR226 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226 + +// +// Solving the SFINAE problem for expressions DR339 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html + +// #define GLM_CXX11_ALIAS_TEMPLATE +// Template aliases N2258 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf + +// +// Extern templates N1987 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm + +// #define GLM_CXX11_NULLPTR +// Null pointer constant N2431 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf + +// #define GLM_CXX11_STRONG_ENUMS +// Strongly-typed enums N2347 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf + +// +// Forward declarations for enums N2764 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf + +// +// Generalized attributes N2761 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf + +// +// Generalized constant expressions N2235 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf + +// +// Alignment support N2341 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf + +// #define GLM_CXX11_DELEGATING_CONSTRUCTORS +// Delegating constructors N1986 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf + +// +// Inheriting constructors N2540 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm + +// #define GLM_CXX11_EXPLICIT_CONVERSIONS +// Explicit conversion operators N2437 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf + +// +// New character types N2249 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html + +// +// Unicode string literals N2442 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm + +// +// Raw string literals N2442 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm + +// +// Universal character name literals N2170 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html + +// #define GLM_CXX11_USER_LITERALS +// User-defined literals N2765 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf + +// +// Standard Layout Types N2342 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm + +// #define GLM_CXX11_DEFAULTED_FUNCTIONS +// #define GLM_CXX11_DELETED_FUNCTIONS +// Defaulted and deleted functions N2346 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm + +// +// Extended friend declarations N1791 GCC 4.7 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf + +// +// Extending sizeof N2253 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html + +// #define GLM_CXX11_INLINE_NAMESPACES +// Inline namespaces N2535 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm + +// #define GLM_CXX11_UNRESTRICTED_UNIONS +// Unrestricted unions N2544 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf + +// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS +// Local and unnamed types as template arguments N2657 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm + +// #define GLM_CXX11_RANGE_FOR +// Range-based for N2930 GCC 4.6 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html + +// #define GLM_CXX11_OVERRIDE_CONTROL +// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7 +// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm + +// +// Minimal support for garbage collection and reachability-based leak detection N2670 No +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm + +// #define GLM_CXX11_NOEXCEPT +// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only) +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html + +// +// Defining move special member functions N3053 GCC 4.6 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html + +// +// Sequence points N2239 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html + +// +// Atomic operations N2427 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html + +// +// Strong Compare and Exchange N2748 GCC 4.5 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html + +// +// Bidirectional Fences N2752 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm + +// +// Memory model N2429 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm + +// +// Data-dependency ordering: atomics and memory model N2664 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm + +// +// Propagating exceptions N2179 GCC 4.4 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html + +// +// Abandoning a process and at_quick_exit N2440 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm + +// +// Allow atomics use in signal handlers N2547 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm + +// +// Thread-local storage N2659 GCC 4.8 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm + +// +// Dynamic initialization and destruction with concurrency N2660 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm + +// +// __func__ predefined identifier N2340 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm + +// +// C99 preprocessor N1653 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm + +// +// long long N1811 GCC 4.3 +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf + +// +// Extended integral types N1988 Yes +// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf + +#if(GLM_COMPILER & GLM_COMPILER_GCC) + +# if(GLM_COMPILER >= GLM_COMPILER_GCC43) +# define GLM_CXX11_STATIC_ASSERT +# endif + +#elif(GLM_COMPILER & GLM_COMPILER_CLANG) +# if(__has_feature(cxx_exceptions)) +# define GLM_CXX98_EXCEPTIONS +# endif + +# if(__has_feature(cxx_rtti)) +# define GLM_CXX98_RTTI +# endif + +# if(__has_feature(cxx_access_control_sfinae)) +# define GLM_CXX11_ACCESS_CONTROL_SFINAE +# endif + +# if(__has_feature(cxx_alias_templates)) +# define GLM_CXX11_ALIAS_TEMPLATE +# endif + +# if(__has_feature(cxx_alignas)) +# define GLM_CXX11_ALIGNAS +# endif + +# if(__has_feature(cxx_attributes)) +# define GLM_CXX11_ATTRIBUTES +# endif + +# if(__has_feature(cxx_constexpr)) +# define GLM_CXX11_CONSTEXPR +# endif + +# if(__has_feature(cxx_decltype)) +# define GLM_CXX11_DECLTYPE +# endif + +# if(__has_feature(cxx_default_function_template_args)) +# define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS +# endif + +# if(__has_feature(cxx_defaulted_functions)) +# define GLM_CXX11_DEFAULTED_FUNCTIONS +# endif + +# if(__has_feature(cxx_delegating_constructors)) +# define GLM_CXX11_DELEGATING_CONSTRUCTORS +# endif + +# if(__has_feature(cxx_deleted_functions)) +# define GLM_CXX11_DELETED_FUNCTIONS +# endif + +# if(__has_feature(cxx_explicit_conversions)) +# define GLM_CXX11_EXPLICIT_CONVERSIONS +# endif + +# if(__has_feature(cxx_generalized_initializers)) +# define GLM_CXX11_GENERALIZED_INITIALIZERS +# endif + +# if(__has_feature(cxx_implicit_moves)) +# define GLM_CXX11_IMPLICIT_MOVES +# endif + +# if(__has_feature(cxx_inheriting_constructors)) +# define GLM_CXX11_INHERITING_CONSTRUCTORS +# endif + +# if(__has_feature(cxx_inline_namespaces)) +# define GLM_CXX11_INLINE_NAMESPACES +# endif + +# if(__has_feature(cxx_lambdas)) +# define GLM_CXX11_LAMBDAS +# endif + +# if(__has_feature(cxx_local_type_template_args)) +# define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS +# endif + +# if(__has_feature(cxx_noexcept)) +# define GLM_CXX11_NOEXCEPT +# endif + +# if(__has_feature(cxx_nonstatic_member_init)) +# define GLM_CXX11_NONSTATIC_MEMBER_INIT +# endif + +# if(__has_feature(cxx_nullptr)) +# define GLM_CXX11_NULLPTR +# endif + +# if(__has_feature(cxx_override_control)) +# define GLM_CXX11_OVERRIDE_CONTROL +# endif + +# if(__has_feature(cxx_reference_qualified_functions)) +# define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS +# endif + +# if(__has_feature(cxx_range_for)) +# define GLM_CXX11_RANGE_FOR +# endif + +# if(__has_feature(cxx_raw_string_literals)) +# define GLM_CXX11_RAW_STRING_LITERALS +# endif + +# if(__has_feature(cxx_rvalue_references)) +# define GLM_CXX11_RVALUE_REFERENCES +# endif + +# if(__has_feature(cxx_static_assert)) +# define GLM_CXX11_STATIC_ASSERT +# endif + +# if(__has_feature(cxx_auto_type)) +# define GLM_CXX11_AUTO_TYPE +# endif + +# if(__has_feature(cxx_strong_enums)) +# define GLM_CXX11_STRONG_ENUMS +# endif + +# if(__has_feature(cxx_trailing_return)) +# define GLM_CXX11_TRAILING_RETURN +# endif + +# if(__has_feature(cxx_unicode_literals)) +# define GLM_CXX11_UNICODE_LITERALS +# endif + +# if(__has_feature(cxx_unrestricted_unions)) +# define GLM_CXX11_UNRESTRICTED_UNIONS +# endif + +# if(__has_feature(cxx_user_literals)) +# define GLM_CXX11_USER_LITERALS +# endif + +# if(__has_feature(cxx_variadic_templates)) +# define GLM_CXX11_VARIADIC_TEMPLATES +# endif + +#endif//(GLM_COMPILER & GLM_COMPILER_CLANG) diff --git a/samples/external/glm/include/glm/detail/_fixes.hpp b/samples/external/glm/include/glm/detail/_fixes.hpp new file mode 100644 index 0000000..c957562 --- /dev/null +++ b/samples/external/glm/include/glm/detail/_fixes.hpp @@ -0,0 +1,30 @@ +/// @ref core +/// @file glm/detail/_fixes.hpp + +#include + +//! Workaround for compatibility with other libraries +#ifdef max +#undef max +#endif + +//! Workaround for compatibility with other libraries +#ifdef min +#undef min +#endif + +//! Workaround for Android +#ifdef isnan +#undef isnan +#endif + +//! Workaround for Android +#ifdef isinf +#undef isinf +#endif + +//! Workaround for Chrone Native Client +#ifdef log2 +#undef log2 +#endif + diff --git a/samples/external/glm/include/glm/detail/_noise.hpp b/samples/external/glm/include/glm/detail/_noise.hpp new file mode 100644 index 0000000..89403f4 --- /dev/null +++ b/samples/external/glm/include/glm/detail/_noise.hpp @@ -0,0 +1,107 @@ +/// @ref core +/// @file glm/detail/_noise.hpp + +#pragma once + +#include "../vec2.hpp" +#include "../vec3.hpp" +#include "../vec4.hpp" +#include "../common.hpp" + +namespace glm{ +namespace detail +{ + template + GLM_FUNC_QUALIFIER T mod289(T const & x) + { + return x - floor(x * static_cast(1.0) / static_cast(289.0)) * static_cast(289.0); + } + + template + GLM_FUNC_QUALIFIER T permute(T const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec2 permute(tvec2 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec3 permute(tvec3 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } + + template + GLM_FUNC_QUALIFIER tvec4 permute(tvec4 const & x) + { + return mod289(((x * static_cast(34)) + static_cast(1)) * x); + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType permute(vecType const & x) + { + return mod289(((x * T(34)) + T(1)) * x); + } +*/ + template + GLM_FUNC_QUALIFIER T taylorInvSqrt(T const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER tvec2 taylorInvSqrt(tvec2 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER tvec3 taylorInvSqrt(tvec3 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } + + template + GLM_FUNC_QUALIFIER tvec4 taylorInvSqrt(tvec4 const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType taylorInvSqrt(vecType const & r) + { + return T(1.79284291400159) - T(0.85373472095314) * r; + } +*/ + + template + GLM_FUNC_QUALIFIER tvec2 fade(tvec2 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } + + template + GLM_FUNC_QUALIFIER tvec3 fade(tvec3 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } + + template + GLM_FUNC_QUALIFIER tvec4 fade(tvec4 const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } +/* + template class vecType> + GLM_FUNC_QUALIFIER vecType fade(vecType const & t) + { + return (t * t * t) * (t * (t * T(6) - T(15)) + T(10)); + } +*/ +}//namespace detail +}//namespace glm + diff --git a/samples/external/glm/include/glm/detail/_swizzle.hpp b/samples/external/glm/include/glm/detail/_swizzle.hpp new file mode 100644 index 0000000..8e134d9 --- /dev/null +++ b/samples/external/glm/include/glm/detail/_swizzle.hpp @@ -0,0 +1,797 @@ +/// @ref core +/// @file glm/detail/_swizzle.hpp + +#pragma once + +namespace glm{ +namespace detail +{ + // Internal class for implementing swizzle operators + template + struct _swizzle_base0 + { + protected: + GLM_FUNC_QUALIFIER T& elem(size_t i){ return (reinterpret_cast(_buffer))[i]; } + GLM_FUNC_QUALIFIER T const& elem(size_t i) const{ return (reinterpret_cast(_buffer))[i]; } + + // Use an opaque buffer to *ensure* the compiler doesn't call a constructor. + // The size 1 buffer is assumed to aligned to the actual members so that the + // elem() + char _buffer[1]; + }; + + template class vecType, int E0, int E1, int E2, int E3, bool Aligned> + struct _swizzle_base1 : public _swizzle_base0 + { + }; + + template class vecType, int E0, int E1, bool Aligned> + struct _swizzle_base1<2, T, P, vecType, E0,E1,-1,-2, Aligned> : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER vecType operator ()() const { return vecType(this->elem(E0), this->elem(E1)); } + }; + + template class vecType, int E0, int E1, int E2, bool Aligned> + struct _swizzle_base1<3, T, P, vecType, E0,E1,E2,-1, Aligned> : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER vecType operator ()() const { return vecType(this->elem(E0), this->elem(E1), this->elem(E2)); } + }; + + template class vecType, int E0, int E1, int E2, int E3, bool Aligned> + struct _swizzle_base1<4, T, P, vecType, E0,E1,E2,E3, Aligned> : public _swizzle_base0 + { + GLM_FUNC_QUALIFIER vecType operator ()() const { return vecType(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); } + }; + + // Internal class for implementing swizzle operators + /* + Template parameters: + + ValueType = type of scalar values (e.g. float, double) + VecType = class the swizzle is applies to (e.g. tvec3) + N = number of components in the vector (e.g. 3) + E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec + + DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles + containing duplicate elements so that they cannot be used as r-values). + */ + template class vecType, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS> + struct _swizzle_base2 : public _swizzle_base1::value> + { + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const T& t) + { + for (int i = 0; i < N; ++i) + (*this)[i] = t; + return *this; + } + + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (vecType const& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (T& e, T& t) { e = t; } + }; + _apply_op(that, op()); + return *this; + } + + GLM_FUNC_QUALIFIER void operator -= (vecType const& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (T& e, T& t) { e -= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator += (vecType const& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (T& e, T& t) { e += t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator *= (vecType const& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (T& e, T& t) { e *= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER void operator /= (vecType const& that) + { + struct op { + GLM_FUNC_QUALIFIER void operator() (T& e, T& t) { e /= t; } + }; + _apply_op(that, op()); + } + + GLM_FUNC_QUALIFIER T& operator[](size_t i) + { + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + GLM_FUNC_QUALIFIER T operator[](size_t i) const + { + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + + protected: + template + GLM_FUNC_QUALIFIER void _apply_op(vecType const& that, U op) + { + // Make a copy of the data in this == &that. + // The copier should optimize out the copy in cases where the function is + // properly inlined and the copy is not necessary. + T t[N]; + for (int i = 0; i < N; ++i) + t[i] = that[i]; + for (int i = 0; i < N; ++i) + op( (*this)[i], t[i] ); + } + }; + + // Specialization for swizzles containing duplicate elements. These cannot be modified. + template class vecType, int E0, int E1, int E2, int E3> + struct _swizzle_base2 : public _swizzle_base1::value> + { + struct Stub {}; + + GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const &) { return *this; } + + GLM_FUNC_QUALIFIER T operator[] (size_t i) const + { + const int offset_dst[4] = { E0, E1, E2, E3 }; + return this->elem(offset_dst[i]); + } + }; + + template class vecType, int E0, int E1, int E2, int E3> + struct _swizzle : public _swizzle_base2 + { + typedef _swizzle_base2 base_type; + + using base_type::operator=; + + GLM_FUNC_QUALIFIER operator vecType () const { return (*this)(); } + }; + +// +// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros +// +#define _GLM_SWIZZLE_TEMPLATE1 template class vecType, int E0, int E1, int E2, int E3> +#define _GLM_SWIZZLE_TEMPLATE2 template class vecType, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3> +#define _GLM_SWIZZLE_TYPE1 _swizzle +#define _GLM_SWIZZLE_TYPE2 _swizzle + +// +// Wrapper for a binary operator (e.g. u.yy + v.zy) +// +#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER vecType operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + { \ + return a() OPERAND b(); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER vecType operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const vecType& b) \ + { \ + return a() OPERAND b; \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER vecType operator OPERAND ( const vecType& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return a OPERAND b(); \ + } + +// +// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz) +// +#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER vecType operator OPERAND ( const _GLM_SWIZZLE_TYPE1& a, const T& b) \ + { \ + return a() OPERAND b; \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER vecType operator OPERAND ( const T& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return a OPERAND b(); \ + } + +// +// Macro for wrapping a function taking one argument (e.g. abs()) +// +#define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a) \ + { \ + return FUNCTION(a()); \ + } + +// +// Macro for wrapping a function taking two vector arguments (e.g. dot()). +// +#define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b) \ + { \ + return FUNCTION(a(), b()); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return FUNCTION(a(), b()); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename V& b) \ + { \ + return FUNCTION(a(), b); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const _GLM_SWIZZLE_TYPE1& b) \ + { \ + return FUNCTION(a, b()); \ + } + +// +// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()). +// +#define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \ + _GLM_SWIZZLE_TEMPLATE2 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE2& b, const T& c) \ + { \ + return FUNCTION(a(), b(), c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + { \ + return FUNCTION(a(), b(), c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\ + { \ + return FUNCTION(a(), b, c); \ + } \ + _GLM_SWIZZLE_TEMPLATE1 \ + GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const _GLM_SWIZZLE_TYPE1& b, const T& c) \ + { \ + return FUNCTION(a, b(), c); \ + } + +}//namespace detail +}//namespace glm + +namespace glm +{ + namespace detail + { + _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-) + _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*) + _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/) + } + + // + // Swizzles are distinct types from the unswizzled type. The below macros will + // provide template specializations for the swizzle types for the given functions + // so that the compiler does not have any ambiguity to choosing how to handle + // the function. + // + // The alternative is to use the operator()() when calling the function in order + // to explicitly convert the swizzled type to the unswizzled type. + // + + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all); + //_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any); + + //_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot); + //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross); + //_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step); + //_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix); +} + +#define _GLM_SWIZZLE2_2_MEMBERS(T, P, V, E0,E1) \ + struct { detail::_swizzle<2, T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { detail::_swizzle<2, T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { detail::_swizzle<2, T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { detail::_swizzle<2, T, P, V, 1,1,-1,-2> E1 ## E1; }; + +#define _GLM_SWIZZLE2_3_MEMBERS(T, P, V, E0,E1) \ + struct { detail::_swizzle<3,T, P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T, P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<3,T, P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<3,T, P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<3,T, P, V, 1,1,1,-1> E1 ## E1 ## E1; }; + +#define _GLM_SWIZZLE2_4_MEMBERS(T, P, V, E0,E1) \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; + +#define _GLM_SWIZZLE3_2_MEMBERS(T, P, V, E0,E1,E2) \ + struct { detail::_swizzle<2,T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 0,2,-1,-2> E0 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 1,1,-1,-2> E1 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 1,2,-1,-2> E1 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 2,0,-1,-2> E2 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 2,1,-1,-2> E2 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 2,2,-1,-2> E2 ## E2; }; + +#define _GLM_SWIZZLE3_3_MEMBERS(T, P, V ,E0,E1,E2) \ + struct { detail::_swizzle<3, T, P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,0,2,-1> E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,2,-1> E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,0,-1> E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,1,-1> E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,2,-1> E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,2,-1> E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,1,-1> E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,2,-1> E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,0,-1> E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,1,-1> E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,2,-1> E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,0,-1> E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,1,-1> E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,2,-1> E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,0,-1> E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,1,-1> E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,2,-1> E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,0,-1> E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,1,-1> E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,2,-1> E2 ## E2 ## E2; }; + +#define _GLM_SWIZZLE3_4_MEMBERS(T, P, V, E0,E1,E2) \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4,T, P, V, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; + +#define _GLM_SWIZZLE4_2_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { detail::_swizzle<2,T, P, V, 0,0,-1,-2> E0 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 0,1,-1,-2> E0 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 0,2,-1,-2> E0 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 0,3,-1,-2> E0 ## E3; }; \ + struct { detail::_swizzle<2,T, P, V, 1,0,-1,-2> E1 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 1,1,-1,-2> E1 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 1,2,-1,-2> E1 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 1,3,-1,-2> E1 ## E3; }; \ + struct { detail::_swizzle<2,T, P, V, 2,0,-1,-2> E2 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 2,1,-1,-2> E2 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 2,2,-1,-2> E2 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 2,3,-1,-2> E2 ## E3; }; \ + struct { detail::_swizzle<2,T, P, V, 3,0,-1,-2> E3 ## E0; }; \ + struct { detail::_swizzle<2,T, P, V, 3,1,-1,-2> E3 ## E1; }; \ + struct { detail::_swizzle<2,T, P, V, 3,2,-1,-2> E3 ## E2; }; \ + struct { detail::_swizzle<2,T, P, V, 3,3,-1,-2> E3 ## E3; }; + +#define _GLM_SWIZZLE4_3_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { detail::_swizzle<3, T, P, V, 0,0,0,-1> E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,0,1,-1> E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,0,2,-1> E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 0,0,3,-1> E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,0,-1> E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,1,-1> E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,2,-1> E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 0,1,3,-1> E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,0,-1> E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,1,-1> E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,2,-1> E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 0,2,3,-1> E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 0,3,0,-1> E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 0,3,1,-1> E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 0,3,2,-1> E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 0,3,3,-1> E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,0,-1> E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,1,-1> E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,2,-1> E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,0,3,-1> E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,0,-1> E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,1,-1> E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,2,-1> E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,1,3,-1> E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,0,-1> E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,1,-1> E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,2,-1> E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,2,3,-1> E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 1,3,0,-1> E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 1,3,1,-1> E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 1,3,2,-1> E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 1,3,3,-1> E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,0,-1> E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,1,-1> E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,2,-1> E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,0,3,-1> E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,0,-1> E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,1,-1> E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,2,-1> E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,1,3,-1> E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,0,-1> E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,1,-1> E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,2,-1> E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,2,3,-1> E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 2,3,0,-1> E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 2,3,1,-1> E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 2,3,2,-1> E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 2,3,3,-1> E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 3,0,0,-1> E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 3,0,1,-1> E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 3,0,2,-1> E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 3,0,3,-1> E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 3,1,0,-1> E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 3,1,1,-1> E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 3,1,2,-1> E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 3,1,3,-1> E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 3,2,0,-1> E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 3,2,1,-1> E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 3,2,2,-1> E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 3,2,3,-1> E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<3, T, P, V, 3,3,0,-1> E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<3, T, P, V, 3,3,1,-1> E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<3, T, P, V, 3,3,2,-1> E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<3, T, P, V, 3,3,3,-1> E3 ## E3 ## E3; }; + +#define _GLM_SWIZZLE4_4_MEMBERS(T, P, V, E0,E1,E2,E3) \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \ + struct { detail::_swizzle<4, T, P, V, 3,3,3,3> E3 ## E3 ## E3 ## E3; }; diff --git a/samples/external/glm/include/glm/detail/_swizzle_func.hpp b/samples/external/glm/include/glm/detail/_swizzle_func.hpp new file mode 100644 index 0000000..4b37edb --- /dev/null +++ b/samples/external/glm/include/glm/detail/_swizzle_func.hpp @@ -0,0 +1,696 @@ +/// @ref core +/// @file glm/detail/_swizzle_func.hpp + +#pragma once + +#define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ + SWIZZLED_TYPE A ## B() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B); \ + } + +#define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ + SWIZZLED_TYPE A ## B ## C() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C); \ + } + +#define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ + SWIZZLED_TYPE A ## B ## C ## D() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C, this->D); \ + } + +#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B); \ + } + +#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B ## C() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C); \ + } + +#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \ + template \ + SWIZZLED_TYPE CLASS_TYPE::A ## B ## C ## D() CONST \ + { \ + return SWIZZLED_TYPE(this->A, this->B, this->C, this->D); \ + } + +#define GLM_MUTABLE + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2) + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) + +#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, p) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3) + +#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C) + +#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B) + +#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) + +#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ + GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q) + +//GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4) + +#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \ + GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D) + +#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \ + GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D) + +#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \ + GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \ + GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) + +#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \ + GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q) + +//GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4) diff --git a/samples/external/glm/include/glm/detail/_vectorize.hpp b/samples/external/glm/include/glm/detail/_vectorize.hpp new file mode 100644 index 0000000..a08ed34 --- /dev/null +++ b/samples/external/glm/include/glm/detail/_vectorize.hpp @@ -0,0 +1,131 @@ +/// @ref core +/// @file glm/detail/_vectorize.hpp + +#pragma once + +#include "type_vec1.hpp" +#include "type_vec2.hpp" +#include "type_vec3.hpp" +#include "type_vec4.hpp" + +namespace glm{ +namespace detail +{ + template class vecType> + struct functor1{}; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec1 call(R (*Func) (T x), tvec1 const & v) + { + return tvec1(Func(v.x)); + } + }; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec2 call(R (*Func) (T x), tvec2 const & v) + { + return tvec2(Func(v.x), Func(v.y)); + } + }; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec3 call(R (*Func) (T x), tvec3 const & v) + { + return tvec3(Func(v.x), Func(v.y), Func(v.z)); + } + }; + + template + struct functor1 + { + GLM_FUNC_QUALIFIER static tvec4 call(R (*Func) (T x), tvec4 const & v) + { + return tvec4(Func(v.x), Func(v.y), Func(v.z), Func(v.w)); + } + }; + + template class vecType> + struct functor2{}; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec1 call(T (*Func) (T x, T y), tvec1 const & a, tvec1 const & b) + { + return tvec1(Func(a.x, b.x)); + } + }; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec2 call(T (*Func) (T x, T y), tvec2 const & a, tvec2 const & b) + { + return tvec2(Func(a.x, b.x), Func(a.y, b.y)); + } + }; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec3 call(T (*Func) (T x, T y), tvec3 const & a, tvec3 const & b) + { + return tvec3(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z)); + } + }; + + template + struct functor2 + { + GLM_FUNC_QUALIFIER static tvec4 call(T (*Func) (T x, T y), tvec4 const & a, tvec4 const & b) + { + return tvec4(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w)); + } + }; + + template class vecType> + struct functor2_vec_sca{}; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec1 call(T (*Func) (T x, T y), tvec1 const & a, T b) + { + return tvec1(Func(a.x, b)); + } + }; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec2 call(T (*Func) (T x, T y), tvec2 const & a, T b) + { + return tvec2(Func(a.x, b), Func(a.y, b)); + } + }; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec3 call(T (*Func) (T x, T y), tvec3 const & a, T b) + { + return tvec3(Func(a.x, b), Func(a.y, b), Func(a.z, b)); + } + }; + + template + struct functor2_vec_sca + { + GLM_FUNC_QUALIFIER static tvec4 call(T (*Func) (T x, T y), tvec4 const & a, T b) + { + return tvec4(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b)); + } + }; +}//namespace detail +}//namespace glm diff --git a/samples/external/glm/include/glm/detail/dummy.cpp b/samples/external/glm/include/glm/detail/dummy.cpp new file mode 100644 index 0000000..a519a6d --- /dev/null +++ b/samples/external/glm/include/glm/detail/dummy.cpp @@ -0,0 +1,207 @@ +/// @ref core +/// @file glm/core/dummy.cpp +/// +/// GLM is a header only library. There is nothing to compile. +/// dummy.cpp exist only a wordaround for CMake file. + +/* +#define GLM_MESSAGES +#include +#include +#include + +struct material +{ + glm::vec4 emission; // Ecm + glm::vec4 ambient; // Acm + glm::vec4 diffuse; // Dcm + glm::vec4 specular; // Scm + float shininess; // Srm +}; + +struct light +{ + glm::vec4 ambient; // Acli + glm::vec4 diffuse; // Dcli + glm::vec4 specular; // Scli + glm::vec4 position; // Ppli + glm::vec4 halfVector; // Derived: Hi + glm::vec3 spotDirection; // Sdli + float spotExponent; // Srli + float spotCutoff; // Crli + // (range: [0.0,90.0], 180.0) + float spotCosCutoff; // Derived: cos(Crli) + // (range: [1.0,0.0],-1.0) + float constantAttenuation; // K0 + float linearAttenuation; // K1 + float quadraticAttenuation;// K2 +}; + + +// Sample 1 +#include // glm::vec3 +#include // glm::cross, glm::normalize + +glm::vec3 computeNormal +( + glm::vec3 const & a, + glm::vec3 const & b, + glm::vec3 const & c +) +{ + return glm::normalize(glm::cross(c - a, b - a)); +} + +typedef unsigned int GLuint; +#define GL_FALSE 0 +void glUniformMatrix4fv(GLuint, int, int, float*){} + +// Sample 2 +#include // glm::vec3 +#include // glm::vec4, glm::ivec4 +#include // glm::mat4 +#include // glm::translate, glm::rotate, glm::scale, glm::perspective +#include // glm::value_ptr +void func(GLuint LocationMVP, float Translate, glm::vec2 const & Rotate) +{ + glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); + glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate)); + glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); + glm::mat4 View = glm::rotate(ViewRotateX, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); + glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f)); + glm::mat4 MVP = Projection * View * Model; + glUniformMatrix4fv(LocationMVP, 1, GL_FALSE, glm::value_ptr(MVP)); +} + +// Sample 3 +#include // glm::vec2 +#include // glm::packUnorm2x16 +#include // glm::uint +#include // glm::i8vec2, glm::i32vec2 +std::size_t const VertexCount = 4; +// Float quad geometry +std::size_t const PositionSizeF32 = VertexCount * sizeof(glm::vec2); +glm::vec2 const PositionDataF32[VertexCount] = +{ + glm::vec2(-1.0f,-1.0f), + glm::vec2( 1.0f,-1.0f), + glm::vec2( 1.0f, 1.0f), + glm::vec2(-1.0f, 1.0f) + }; +// Half-float quad geometry +std::size_t const PositionSizeF16 = VertexCount * sizeof(glm::uint); +glm::uint const PositionDataF16[VertexCount] = +{ + glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, -1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, -1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2( 1.0f, 1.0f))), + glm::uint(glm::packUnorm2x16(glm::vec2(-1.0f, 1.0f))) +}; +// 8 bits signed integer quad geometry +std::size_t const PositionSizeI8 = VertexCount * sizeof(glm::i8vec2); +glm::i8vec2 const PositionDataI8[VertexCount] = +{ + glm::i8vec2(-1,-1), + glm::i8vec2( 1,-1), + glm::i8vec2( 1, 1), + glm::i8vec2(-1, 1) +}; +// 32 bits signed integer quad geometry +std::size_t const PositionSizeI32 = VertexCount * sizeof(glm::i32vec2); +glm::i32vec2 const PositionDataI32[VertexCount] = +{ + glm::i32vec2 (-1,-1), + glm::i32vec2 ( 1,-1), + glm::i32vec2 ( 1, 1), + glm::i32vec2 (-1, 1) +}; + +struct intersection +{ + glm::vec4 position; + glm::vec3 normal; +}; +*/ + + +/* +// Sample 4 +#include // glm::vec3 +#include // glm::normalize, glm::dot, glm::reflect +#include // glm::pow +#include // glm::vecRand3 +glm::vec3 lighting +( + intersection const & Intersection, + material const & Material, + light const & Light, + glm::vec3 const & View +) +{ + glm::vec3 Color(0.0f); + glm::vec3 LightVertor(glm::normalize( + Light.position - Intersection.position + + glm::vecRand3(0.0f, Light.inaccuracy)); + + if(!shadow(Intersection.position, Light.position, LightVertor)) + { + float Diffuse = glm::dot(Intersection.normal, LightVector); + if(Diffuse <= 0.0f) + return Color; + if(Material.isDiffuse()) + Color += Light.color() * Material.diffuse * Diffuse; + if(Material.isSpecular()) + { + glm::vec3 Reflect(glm::reflect( + glm::normalize(-LightVector), + glm::normalize(Intersection.normal))); + float Dot = glm::dot(Reflect, View); + float Base = Dot > 0.0f ? Dot : 0.0f; + float Specular = glm::pow(Base, Material.exponent); + Color += Material.specular * Specular; + } + } + return Color; +} +*/ + +/* +template class vecType> +T normalizeDotA(vecType const & x, vecType const & y) +{ + return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); +} + +#define GLM_TEMPLATE_GENTYPE typename T, glm::precision P, template class + +template +T normalizeDotB(vecType const & x, vecType const & y) +{ + return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); +} + +template +typename vecType::value_type normalizeDotC(vecType const & a, vecType const & b) +{ + return glm::dot(a, b) * glm::inversesqrt(glm::dot(a, a) * glm::dot(b, b)); +} +*/ +int main() +{ +/* + glm::vec1 o(1); + glm::vec2 a(1); + glm::vec3 b(1); + glm::vec4 c(1); + + glm::quat q; + glm::dualquat p; + + glm::mat4 m(1); + + float a0 = normalizeDotA(a, a); + float b0 = normalizeDotB(b, b); + float c0 = normalizeDotC(c, c); +*/ + return 0; +} diff --git a/samples/external/glm/include/glm/detail/func_common.hpp b/samples/external/glm/include/glm/detail/func_common.hpp new file mode 100644 index 0000000..871fed6 --- /dev/null +++ b/samples/external/glm/include/glm/detail/func_common.hpp @@ -0,0 +1,427 @@ +/// @ref core +/// @file glm/detail/func_common.hpp +/// +/// @see GLSL 4.20.8 specification, section 8.3 Common Functions +/// +/// @defgroup core_func_common Common functions +/// @ingroup core +/// +/// These all operate component-wise. The description is per component. + +#pragma once + +#include "setup.hpp" +#include "precision.hpp" +#include "type_int.hpp" +#include "_fixes.hpp" + +namespace glm +{ + /// @addtogroup core_func_common + /// @{ + + /// Returns x if x >= 0; otherwise, it returns -x. + /// + /// @tparam genType floating-point or signed integer; scalar or vector types. + /// + /// @see GLSL abs man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType abs(genType x); + + template class vecType> + GLM_FUNC_DECL vecType abs(vecType const & x); + + /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. + /// + /// @tparam genType Floating-point or signed integer; scalar or vector types. + /// + /// @see GLSL sign man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType sign(vecType const & x); + + /// Returns a value equal to the nearest integer that is less then or equal to x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL floor man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType floor(vecType const & x); + + /// Returns a value equal to the nearest integer to x + /// whose absolute value is not larger than the absolute value of x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL trunc man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType trunc(vecType const & x); + + /// Returns a value equal to the nearest integer to x. + /// The fraction 0.5 will round in a direction chosen by the + /// implementation, presumably the direction that is fastest. + /// This includes the possibility that round(x) returns the + /// same value as roundEven(x) for all values of x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL round man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType round(vecType const & x); + + /// Returns a value equal to the nearest integer to x. + /// A fractional part of 0.5 will round toward the nearest even + /// integer. (Both 3.5 and 4.5 for x will return 4.0.) + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL roundEven man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// @see New round to even technique + template class vecType> + GLM_FUNC_DECL vecType roundEven(vecType const & x); + + /// Returns a value equal to the nearest integer + /// that is greater than or equal to x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL ceil man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template class vecType> + GLM_FUNC_DECL vecType ceil(vecType const & x); + + /// Return x - floor(x). + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL fract man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType fract(genType x); + + template class vecType> + GLM_FUNC_DECL vecType fract(vecType const & x); + + /// Modulus. Returns x - y * floor(x / y) + /// for each component in x using the floating point value y. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL mod man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType mod(genType x, genType y); + + template class vecType> + GLM_FUNC_DECL vecType mod(vecType const & x, T y); + + template class vecType> + GLM_FUNC_DECL vecType mod(vecType const & x, vecType const & y); + + /// Returns the fractional part of x and sets i to the integer + /// part (as a whole number floating point value). Both the + /// return value and the output parameter will have the same + /// sign as x. + /// + /// @tparam genType Floating-point scalar or vector types. + /// + /// @see GLSL modf man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType modf(genType x, genType & i); + + /// Returns y if y < x; otherwise, it returns x. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL min man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType min(genType x, genType y); + + template class vecType> + GLM_FUNC_DECL vecType min(vecType const & x, T y); + + template class vecType> + GLM_FUNC_DECL vecType min(vecType const & x, vecType const & y); + + /// Returns y if x < y; otherwise, it returns x. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL max man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType max(genType x, genType y); + + template class vecType> + GLM_FUNC_DECL vecType max(vecType const & x, T y); + + template class vecType> + GLM_FUNC_DECL vecType max(vecType const & x, vecType const & y); + + /// Returns min(max(x, minVal), maxVal) for each component in x + /// using the floating-point values minVal and maxVal. + /// + /// @tparam genType Floating-point or integer; scalar or vector types. + /// + /// @see GLSL clamp man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal); + + template class vecType> + GLM_FUNC_DECL vecType clamp(vecType const & x, T minVal, T maxVal); + + template class vecType> + GLM_FUNC_DECL vecType clamp(vecType const & x, vecType const & minVal, vecType const & maxVal); + + /// If genTypeU is a floating scalar or vector: + /// Returns x * (1.0 - a) + y * a, i.e., the linear blend of + /// x and y using the floating-point value a. + /// The value for a is not restricted to the range [0, 1]. + /// + /// If genTypeU is a boolean scalar or vector: + /// Selects which vector each returned component comes + /// from. For a component of that is false, the + /// corresponding component of x is returned. For a + /// component of a that is true, the corresponding + /// component of y is returned. Components of x and y that + /// are not selected are allowed to be invalid floating point + /// values and will have no effect on the results. Thus, this + /// provides different functionality than + /// genType mix(genType x, genType y, genType(a)) + /// where a is a Boolean vector. + /// + /// @see GLSL mix man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + /// + /// @param[in] x Value to interpolate. + /// @param[in] y Value to interpolate. + /// @param[in] a Interpolant. + /// + /// @tparam genTypeT Floating point scalar or vector. + /// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT. + /// + /// @code + /// #include + /// ... + /// float a; + /// bool b; + /// glm::dvec3 e; + /// glm::dvec3 f; + /// glm::vec4 g; + /// glm::vec4 h; + /// ... + /// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors. + /// glm::vec4 s = glm::mix(g, h, b); // Teturns g or h; + /// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second. + /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter. + /// @endcode + template class vecType> + GLM_FUNC_DECL vecType mix(vecType const & x, vecType const & y, vecType const & a); + + template class vecType> + GLM_FUNC_DECL vecType mix(vecType const & x, vecType const & y, U a); + + template + GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a); + + /// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. + /// + /// @see GLSL step man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template + GLM_FUNC_DECL genType step(genType edge, genType x); + + /// Returns 0.0 if x < edge, otherwise it returns 1.0. + /// + /// @see GLSL step man page + /// @see GLSL 4.20.8 specification, section 8.3 Common Functions + template